使用autolisp从表对象提取数据

使用autolisp从表对象提取数据,lisp,cell,autocad,autolisp,Lisp,Cell,Autocad,Autolisp,我想从图形表或表对象中存储的信息的比较中提取某些信息(您更喜欢这样称呼它),如果比较成功,则将相关值存储到变量中。我不熟悉visuallisp或autolisp。所以请你帮我解决这个问题,并一步一步地向我解释 例如,如果我的表在第一列D1中包含信息,我希望将信息存储在它旁边的下三列中,但存储在同一行中 所以在这个例子中,要存储在三个不同变量或一个数组中的数字是132156432Y11。请帮助我一步一步地向我解释可能的解决方案,我对Lisp真的很陌生,首先你需要得到表格。您可以要求用户选择一个,例

我想从图形表或表对象中存储的信息的比较中提取某些信息(您更喜欢这样称呼它),如果比较成功,则将相关值存储到变量中。我不熟悉visuallisp或autolisp。所以请你帮我解决这个问题,并一步一步地向我解释

例如,如果我的表在第一列D1中包含信息,我希望将信息存储在它旁边的下三列中,但存储在同一行中


所以在这个例子中,要存储在三个不同变量或一个数组中的数字是132156432Y11。请帮助我一步一步地向我解释可能的解决方案,我对Lisp真的很陌生,首先你需要得到表格。您可以要求用户选择一个,例如:

(setq table (vlax-ename->vla-object (car (entsel ))) )
若用户不想选择,您应该记住捕捉错误。 此外,您还应该检查用户是否选择了表,而不是其他属性。但现在让我们设想用户选择表 所以现在你可以试试这个

(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)