Hippe013 发表于 2022-7-6 22:46:31

Broncos15,
 
下面是一些示例代码,用于获取连接管道的结构,并列出管道内底。我们是否应该在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
)

broncos15 发表于 2022-7-6 22:52:20

谢谢你,希普!我将用这个和我添加的编辑在LISP中开始一个线程。此外,代码中有一个小错误,(setq cnt (vlax-get-property obj 'ConnectedPipesCount))
(setq cnt (vlax-get-property struct 'ConnectedPipesCount))

Hippe013 发表于 2022-7-6 22:55:45

接得好。
页: 1 [2]
查看完整版本: 管网检查