crazymountaingo 发表于 2022-7-5 23:00:57

列表列表帮助

我有两个数据列表,每个列表都是不同长度的列表。
我在分析和组合列表的部分内容时遇到问题。
 
我想从阳性测试的数据列表开始{contains id#and attributes for blocks,exe:((“id#1”“date1”“plant”“test”“result”)(“id#3”“date3”“plant3”“test3”“result3”)),
 
并将块插入到不同列表{contains id#and x,y coordinates exe:((“id#1”“x1”“y1”)(“id#2”“x2”“y2”)(“id#3”“x3”“y3”))的坐标中
 
我的工厂将2个列表合并为1个列表,删除不在位置测试列表中的id和坐标。与此类似:
(((“x1”“y1”“id#1”“date1”“plant1”“test1”“result1”)(“x3”“y3”“id#3”“date3”“plant3”“test3”“result3”))删除列表的(“id#2”“x2”“x3”)部分。
 
我知道我想要什么,但不知道如何实现。
我用LeeMac的lm:readcsv从一个csv文件创建列表,但我在尝试正确使用数据时迷失了方向。

Lee Mac 发表于 2022-7-6 00:27:15

欢迎使用CADTutor-我很高兴你发现我的阅读CSV功能很有用!
 
以下代码完全未经测试,但有望按要求执行:
(defun myinsert ( spc blk lst1 lst2 / dwg ins )
   (if (or (tblsearch "block" blk)
         (and (setq dwg (findfile (strcat blk ".dwg")))
                (   (lambda ( / cmd )
                        (setq cmd (getvar 'cmdecho))
                        (setvar 'cmdecho 0)
                        (command "_.-insert" dwg nil)
                        (setvar 'cmdecho cmd)
                        (tblsearch "block" blk)
                  )
                )
         )
       )
       (foreach x lst1
         (if (and (setq ins (mapcar 'distof (cdr (assoc (car x) lst2))))
                  (vl-every 'numberp ins)
               )
               (mapcar 'vla-put-textstring
                   (vlax-invoke (vla-insertblock spc (vlax-3D-point ins) blk 1 1 1 0) 'getattributes)
                   (cdr x)
               )
         )
       )
       (prompt (strcat "\nBlock \"" blk "\" not found."))
   )
   (princ)
)调用:
(myinsert
   (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
   "Your-Block-Name"
'(("id#1" "date1" "plant" "test" "result") ("id#3" "date3" "plant3" "test3" "result3"))
'(("id#1" "1" "1") ("id#2" "2" "2") ("id#3" "3" "3"))
)
页: [1]
查看完整版本: 列表列表帮助