乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: JSYoung81

[编程交流] LISP列表搜索

[复制链接]

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:26:02 | 显示全部楼层
是这样吗?
  1. '(("150 mm PVC PIPE" 150.0) ("250 mm PVC PIPE" 250.0))

 
然后以0作为长度初始化列表,稍后进行调整;这一次必须寻找ASSOC:
  1. (setq listPipes '(("150 mm PVC PIPE" 0.0) ("250 mm PVC PIPE" 0.0)))
  2. (if (setq subList (assoc "150 mm PVC PIPE" listPipes))
  3. (setq listPipes (subst (list (car subList) (+ (cadr subList) 150.0))
  4.                        subList
  5.                        listPipes)
  6. )
  7. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 23:28:52 | 显示全部楼层
 
幸运的是。。。您可以考虑ATOF函数。
回复

使用道具 举报

3

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 23:35:29 | 显示全部楼层
这是我目前的代码状态,我只是想弄清楚在那里/如何放置代码
 
 
  1. (defun c:test
  2.       (/          ANS             n                sset           count
  3.        check          item             test        2dl           psn
  4.        size_arrary             list_counter           tester
  5.        check2          pipe_size_list        check3
  6.       )
  7. (vl-load-com)
  8. (setq test 0)                                ; tester
  9. (setq n 0)                                ;loop counter
  10. (setq list_counter 0)                        ;list counter
  11. (setq part_size_list nil)
  12. (PRINC "SELECT ALL OR MANUAL...")
  13. (PRINC)
  14. (INITGET 2 "ALL MANUAL")
  15. (SETQ ANS (GETKWORD "(A)LL (M)ANUAL)"))
  16. (IF                                        ; CHECK ANSWER FOR SELECTION ALL
  17.    (= ANS "ALL")
  18.     (PROGN
  19.       (setq sset (ssget "X"))                ;selection set
  20.       (setq count (sslength sset))        ;total number of selection set
  21.     )                                        ;END PROGN
  22. )                                        ;END IF - ALL
  23. (IF                                        ; CHECK ANSWER FOR SELECTION ALL
  24.    (= ANS "MANUAL")
  25.     (PROGN
  26.       (setq sset (ssget))                ;selection set
  27.       (setq count (sslength sset))        ;total number of selection set
  28.     )                                        ;END PROGN
  29. )                                        ;END IF - MANUAL
  30. (while
  31.    (< n count)                                ;while logic statement
  32.     (setq item (ssname sset n))        ;get item from selection set
  33.     (setq item (vlax-ename->vla-object item))
  34.     (setq check (vlax-get-property item 'objectname))
  35.     (if                                ;check to see if pipe
  36.       (= check "AeccDbPipe")                ;if logic statement for pipe
  37. (progn                                ; starts comppiling
  38.   (setq psn (vlax-get-property item 'PartSizeName))
  39.   (setq part_size_list (append part_size_list (list psn)))
  40. )                                ;end progn
  41.     )                                        ;end if
  42.     (setq n (+ 1 n))                        ; increase loop counter
  43. )                                        ;end while
  44. (foreach x part_size_list
  45.    (if        (not (vl-position x myList))
  46.      (setq myList (cons x myList))
  47.    )
  48. )
  49. (reverse myList)
  50.    
  51. (princ)
  52. (alert
  53.    (strcat "Total length of selected objects is " (rtos test))
  54. )                                        ;report pipe length
  55. (princ part_size_list)
  56. (princ MYLIST)
  57. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:37:10 | 显示全部楼层
如果不需要将每个组的大小作为一个长度来生成,那么可以不使用管道的属性(即长度)吗。鬼鬼祟祟地怀疑“管道长度”
 
如果在管道上使用转储功能,则应显示该功能。我一直在其他CIV3d的东西上使用这个,比如vlax get point'rawdescription
 
  1. ;;; Dump all methods and properties for selected objects              ;
  2. ;;;===================================================================;
  3. ;;; DumpIt                                                            ;
  4. ;;;-------------------------------------------------------------------;
  5. ;;;===================================================================;
  6. (defun C:DumpIt ( / ent)
  7. (while (setq ent (entsel))
  8.    (vlax-Dump-Object
  9.      (vlax-Ename->Vla-Object (car ent)) T
  10.    )
  11. )
  12. (princ)
  13. )
回复

使用道具 举报

3

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 23:44:11 | 显示全部楼层
不,我需要按尺寸分类。
 
它是pipelength2d,或者可能只是length2d,或者也有3d length
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:20 , Processed in 0.374517 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表