下面是一些示例代码,用于获取连接管道的结构,并列出管道内底。我们是否应该在visual lisp部分中启动一个新线程来列出管道和结构的lisp代码?
(defun C:PrintStructure ()
(setq ss (selectstructure))
(setq struct (vlax-ename->vla-object (ssname ss 0)))
(princ (strcat "\n" (vlax-get-property struct 'DisplayName) " - Sump Elevation: "
(rtos (vlax-get-property struct 'SumpElevation) 2 2)))
(setq cnt (vlax-get-property obj 'ConnectedPipesCount))
(setq i 0)
(repeat cnt
(setq pipe (vlax-get-property struct 'ConnectedPipe i))
(setq end (getend struct pipe))
(setq dia (vlax-get-property pipe 'InnerDiameterOrWidth))
(setq p (vlax-safearray->list (vlax-variant-value (vlax-get-property pipe 'PointAtParam end))))
(setq inv (- (caddr p) (/ dia 2.0)))
(princ (strcat "\n" (vlax-get-property pipe 'DisplayName) " - Invert: " (rtos inv 2 2)))
(setq i (+ i 1))
)
(princ)
)
(defun getend (struct pipe)
(setq p (vlax-get-property struct 'Position))
(setq p (list (vlax-get-property p 'X)(vlax-get-property p 'Y)))
(setq p0 (vlax-safearray->list (vlax-variant-value (vlax-get-property pipe 'PointAtParam 0))))
(setq p1 (vlax-safearray->list (vlax-variant-value (vlax-get-property pipe 'PointAtParam 1))))
(if (< (distance (list (car p0)(cadr p0)) p)
(distance (list (car p1)(cadr p1)) p))
0
1))
(defun selectstructure ()
(princ "\nSelect Structure: ")
(setq sel (ssget "_+.:S"'((0 . "AECC_STRUCTURE"))))
(if (not sel)
(progn
(princ "\nOops, Invalid Selection")
(selectstructure)))
sel
) 谢谢你,希普!我将用这个和我添加的编辑在LISP中开始一个线程。此外,代码中有一个小错误,(setq cnt (vlax-get-property obj 'ConnectedPipesCount))
(setq cnt (vlax-get-property struct 'ConnectedPipesCount)) 接得好。
页:
1
[2]