我想从存储在绘图表或表对象中的信息的比较中提取某些信息,如您所喜欢的那样,如果比较成功,则将相关值存储到变量中我对视觉口齿不太熟悉所以请你帮我解决这个问题,并请一步一步地解释我。
例如,如果我的表在第一列d1中,我想将信息存储在它旁边的三列中,但是存储在同一行中。
所以在这个例子中,要存储在三个不同变量或数组中的数字应该是132156432y 11请帮我一步一步地解释可能的解决方案,我对Lisp很陌生
最佳答案
首先你得找张桌子您可以要求用户选择一个,例如:
(setq table (vlax-ename->vla-object (car (entsel ))) )
如果用户不想选择,应该记住捕捉错误。
此外,您还应该检查用户是否选择了表而不是其他enity但是现在让我们假设用户选择表
所以现在你可以试试这个
(setq columns (vlax-get-property table 'Columns))
(setq rows (vlax-get-property table 'rows))
(setq row 1 ) ; 0 is header
(repeat rows
(setq vals nil)
(setq column 0)
(setq txtval (vlax-invoke-method table 'GetText row column ))
; now we have value from first cell in row.
; and now You can go at least two ways.
; 1 check value and make Your analyse, read values from other columns or anything You need
; 2 build array of all values from all cells and after that analyse only array of texts (remove dependency from object table)
; for this sample I choose 1 way.
(if (= txtval "D1") (progn
(repeat 3 ; because You "want to store the information in the next three columns"
(setq column (1+ column))
(setq vals ( append vals (list (vlax-invoke-method table 'GetText row column ))))
)
))
(if (not (null vals )) (progn
(setq arrayOfVals (append arrayOfVals (list vals)))
))
(setq row (1+ row ))
)
(print arrayOfVals)