MSasu 发表于 2022-7-5 23:26:02

是这样吗?
'(("150 mm PVC PIPE" 150.0) ("250 mm PVC PIPE" 250.0))
 
然后以0作为长度初始化列表,稍后进行调整;这一次必须寻找ASSOC:
(setq listPipes '(("150 mm PVC PIPE" 0.0) ("250 mm PVC PIPE" 0.0)))
(if (setq subList (assoc "150 mm PVC PIPE" listPipes))
(setq listPipes (subst (list (car subList) (+ (cadr subList) 150.0))
                     subList
                     listPipes)
)
)

BlackBox 发表于 2022-7-5 23:28:52

 
幸运的是。。。您可以考虑ATOF函数。

JSYoung81 发表于 2022-7-5 23:35:29

这是我目前的代码状态,我只是想弄清楚在那里/如何放置代码
 
 
(defun c:test
      (/          ANS             n                sset           count
       check          item             test        2dl           psn
       size_arrary             list_counter           tester
       check2          pipe_size_list        check3
      )
(vl-load-com)
(setq test 0)                                ; tester
(setq n 0)                                ;loop counter
(setq list_counter 0)                        ;list counter
(setq part_size_list nil)


(PRINC "SELECT ALL OR MANUAL...")
(PRINC)
(INITGET 2 "ALL MANUAL")

(SETQ ANS (GETKWORD "(A)LL (M)ANUAL)"))

(IF                                        ; CHECK ANSWER FOR SELECTION ALL
   (= ANS "ALL")
    (PROGN
      (setq sset (ssget "X"))                ;selection set
      (setq count (sslength sset))        ;total number of selection set
    )                                        ;END PROGN
)                                        ;END IF - ALL

(IF                                        ; CHECK ANSWER FOR SELECTION ALL
   (= ANS "MANUAL")
    (PROGN
      (setq sset (ssget))                ;selection set
      (setq count (sslength sset))        ;total number of selection set
    )                                        ;END PROGN
)                                        ;END IF - MANUAL

(while

   (< n count)                                ;while logic statement
    (setq item (ssname sset n))        ;get item from selection set
    (setq item (vlax-ename->vla-object item))
    (setq check (vlax-get-property item 'objectname))


    (if                                ;check to see if pipe
      (= check "AeccDbPipe")                ;if logic statement for pipe
(progn                                ; starts comppiling
(setq psn (vlax-get-property item 'PartSizeName))
(setq part_size_list (append part_size_list (list psn)))
)                                ;end progn
    )                                        ;end if
    (setq n (+ 1 n))                        ; increase loop counter
)                                        ;end while


(foreach x part_size_list
   (if        (not (vl-position x myList))
   (setq myList (cons x myList))
   )
)
(reverse myList)

   

(princ)

(alert
   (strcat "Total length of selected objects is " (rtos test))
)                                        ;report pipe length
(princ part_size_list)
(princ MYLIST)
)

BIGAL 发表于 2022-7-5 23:37:10

如果不需要将每个组的大小作为一个长度来生成,那么可以不使用管道的属性(即长度)吗。鬼鬼祟祟地怀疑“管道长度”
 
如果在管道上使用转储功能,则应显示该功能。我一直在其他CIV3d的东西上使用这个,比如vlax get point'rawdescription
 

;;; Dump all methods and properties for selected objects            ;
;;;===================================================================;
;;; DumpIt                                                            ;
;;;-------------------------------------------------------------------;
;;;===================================================================;
(defun C:DumpIt ( / ent)
(while (setq ent (entsel))
   (vlax-Dump-Object
   (vlax-Ename->Vla-Object (car ent)) T
   )
)
(princ)
)

JSYoung81 发表于 2022-7-5 23:44:11

不,我需要按尺寸分类。
 
它是pipelength2d,或者可能只是length2d,或者也有3d length
页: 1 [2]
查看完整版本: LISP列表搜索