;;一点个人看法,并没有大佬。。。
;;是我没完全理解你的意思,我以为数目未知,但dick和key都是已知的(可能创建了,也可能没创建),那你就可以把所有dict和key分别组成表,用lambda处理dict和key组成的表得到你想要的组合,再用mapcar结合vlax-ldata-get依次去检测每个组合是否能得到数据
;;现在我的理解是,你想在每个文档加载DCL的时候,将这个文档的词典数据读取并显示到DCL
;;我不太明白的是:
;;词典的dict和key都是不确定的话,这个词典是怎么创建的啊,循环赋值?那应该也有规律吧
;;貌似不能不指定dict和key就创建词典吧
;;为什么要用嵌套的多级表,跟DCL有关?
;;如果非要遍历的话,那就先(entget(namedobjdict)),得到一个表
;;将表中的非目标项剔除,比如没有自定义词典时候的项是(不同版本等情况是否一样需要检验): - ((-1 . <图元名: 7ff48ac218c0>) (0 . "DICTIONARY") (330 . <图元名: 0>) (5 . "C") (100 . "AcDbDictionary") (280 . 0) (281 . 1) (3 . "ACAD_CIP_PREVIOUS_PRODUCT_INFO") (350 . <图元名: 7ff48ac239e0>) (3 . "ACAD_COLOR") (350 . <图元名: 7ff48ac21bb0>) (3 . "ACAD_DETAILVIEWSTYLE") (350 . <图元名: 7ff48ac23a30>) (3 . "ACAD_GROUP") (350 . <图元名: 7ff48ac218d0>) (3 . "ACAD_IMAGE_DICT") (350 . <图元名: 7ff48ac27760>) (3 . "ACAD_IMAGE_VARS") (350 . <图元名: 7ff48ac27770>) (3 . "ACAD_LAYOUT") (350 . <图元名: 7ff48ac219a0>) (3 . "ACAD_MATERIAL") (350 . <图元名: 7ff48ac21ba0>) (3 . "ACAD_MLEADERSTYLE") (350 . <图元名: 7ff48ac23150>) (3 . "ACAD_MLINESTYLE") (350 . <图元名: 7ff48ac21970>) (3 . "ACAD_PLOTSETTINGS") (350 . <图元名: 7ff48ac21990>) (3 . "ACAD_PLOTSTYLENAME") (350 . <图元名: 7ff48ac218e0>) (3 . "ACAD_SCALELIST") (350 . <图元名: 7ff48ac230c0>) (3 . "ACAD_SECTIONVIEWSTYLE") (350 . <图元名: 7ff48ac23a10>) (3 . "ACAD_TABLESTYLE") (350 . <图元名: 7ff48ac21c60>) (3 . "ACAD_VISUALSTYLE") (350 . <图元名: 7ff48ac21ef0>) (3 . "AcDbVariableDictionary") (350 . <图元名: 7ff48ac21ae0>))
;;比如我随便定义两个
 - (mapcar 'vlax-ldata-put '("A" "B") '("a" "b") '(0 1))
;;再(entget(namedobjdict)),剔除之前(entget(namedobjdict))得到的,就剩下((3 "A") (350 <图元名: 7ff48ac71550>) (3 "B") (350 <图元名: 7ff48ac71570>)) (此前将点对处理成表了)
;;(3 "A") (3 "B")就是你要的了
;;想起来还有vlax-ldata-list这个函数,(mapcar 'vlax-ldata-list '("A" "B"))->((("a" . 0)) (("b" . 1)))
|