乐筑天下

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

[编程交流] 创建属性自动编号

[复制链接]

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:40:42 | 显示全部楼层 |阅读模式
你好
 
我对AutoLISP比较陌生,但了解其原理。
 
我正在尝试为已经在另一个程序中绘制并导入为DXF的单个树自动生成一个数字。
 
我希望自动编号是一个属性,这样我可以将编号和X&Y数据导出到。CSV文件,然后我可以在其他地方使用。
 
我无法确定自动生成器是否会生成一个逻辑数字序列,或者这些数字是否只是随机出现在树状结构中。在这种情况下,我还可以使用自动生成的编号创建一个新块,并按我想要的顺序定位这些块。
 
任何帮助都将不胜感激。
 
干杯,阿利斯泰尔。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:45:31 | 显示全部楼层
嗨,阿利斯泰尔,
 
一个程序可以用来对你的树进行编号,可能是从左到右或从上到下(反之亦然)等等。所有块的标记名是否都相同?
 
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:54:17 | 显示全部楼层
是的,所有树的标记名都是相同的。
 
我发现通常我会以顺时针或逆时针的方式对树进行编号。
 
谢谢你的帮助。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:55:53 | 显示全部楼层
嗨,阿利斯泰尔,
 
请尝试这个函数,它将以升序递增按Y坐标排序的属性数,因为我不太确定你说的顺时针是什么意思?围绕中心块顺时针旋转?
 
根据需要更改标记名称(顶部)。
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:AttNum [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* MakeVariant Itemp MakeSelectionSet
  2.                    DOC OBJ OBJECTLIST SS TAG UFLAG[b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  4. [i][color=#990099];; Lee Mac  ~  15.04.10[/color][/i]
  5. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tag [b][color=#a52a2a]"TAG1"[/color][/b][b][color=RED])[/color][/b]
  6. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b]msg[b][color=RED])[/color][/b]
  7.    [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] uFlag
  8.      [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b]
  9.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  10.          [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
  11.        [b][color=RED])[/color][/b]
  12.      [b][color=RED])[/color][/b]
  13.    [b][color=RED])[/color][/b]
  14.    [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#a52a2a]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b]
  15.        [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\n** Error: "[/color][/b] msg [b][color=#a52a2a]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  16.    [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b]
  17. [b][color=RED])[/color][/b]
  18. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] MakeVariant [b][color=RED]([/color][/b]data datatype[b][color=RED])[/color][/b]
  19.    [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-variant[/color][/b]
  20.      [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b]
  21.        [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eval[/color][/b] datatype[b][color=RED])[/color][/b]
  22.          [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] data[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  23.        [b][color=RED])[/color][/b]
  24.        data
  25.      [b][color=RED])[/color][/b]
  26.    [b][color=RED])[/color][/b]
  27. [b][color=RED])[/color][/b]
  28. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Itemp [b][color=RED]([/color][/b]collection item [b][color=BLUE]/[/color][/b] result[b][color=RED])[/color][/b]
  29.    [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-error-p[/color][/b]
  30.               [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] result
  31.                 [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b]
  32.                   [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=Blue]vla-item[/color][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] collection item[b][color=RED])[/color][/b]
  33.                 [b][color=RED])[/color][/b]
  34.               [b][color=RED])[/color][/b]
  35.             [b][color=RED])[/color][/b]
  36.         [b][color=RED])[/color][/b]
  37.      result
  38.    [b][color=RED])[/color][/b]
  39. [b][color=RED])[/color][/b]
  40. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] MakeSelectionSet [b][color=RED]([/color][/b]ref [b][color=BLUE]/[/color][/b] SelSets SelSet[b][color=RED])[/color][/b]
  41.    [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] SelSet
  42.          [b][color=RED]([/color][/b]itemp
  43.            [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] SelSets
  44.              [b][color=RED]([/color][/b][b][color=BLUE]vla-get-SelectionSets[/color][/b]
  45.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  46.                  [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
  47.                [b][color=RED])[/color][/b]
  48.              [b][color=RED])[/color][/b]
  49.            [b][color=RED])[/color][/b]
  50.            ref
  51.          [b][color=RED])[/color][/b]
  52.        [b][color=RED])[/color][/b]
  53.      
  54.      [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] SelSet[b][color=RED])[/color][/b]
  55.    [b][color=RED])[/color][/b]
  56.    [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b] SelSets ref[b][color=RED])[/color][/b]
  57. [b][color=RED])[/color][/b]
  58. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *start
  59.    [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b]
  60.      [b][color=RED]([/color][/b]*start[b][color=RED])[/color][/b] [b][color=RED]([/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED])[/color][/b]
  61.    [b][color=RED])[/color][/b]
  62. [b][color=RED])[/color][/b]
  63. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *start
  64.    [b][color=RED]([/color][/b][b][color=BLUE]1-[/color][/b]
  65.      [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b]
  66.        [b][color=RED]([/color][/b]  [b][color=RED]([/color][/b][b][color=BLUE]getint[/color][/b]
  67.             [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\nSpecify Starting Number <"[/color][/b]
  68.               [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] *start[b][color=RED])[/color][/b] [b][color=#a52a2a]"> : "[/color][/b]
  69.             [b][color=RED])[/color][/b]
  70.           [b][color=RED])[/color][/b]
  71.        [b][color=RED])[/color][/b]
  72.        [b][color=RED]([/color][/b]*start[b][color=RED])[/color][/b]
  73.      [b][color=RED])[/color][/b]
  74.    [b][color=RED])[/color][/b]
  75. [b][color=RED])[/color][/b]     
  76. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b]
  77.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Count[/color][/b]
  78.          [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss
  79.            [b][color=RED]([/color][/b][b][color=BLUE]vla-get-PickFirstSelectionSet[/color][/b]
  80.              [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc
  81.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  82.                  [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
  83.                [b][color=RED])[/color][/b]
  84.              [b][color=RED])[/color][/b]
  85.            [b][color=RED])[/color][/b]
  86.          [b][color=RED])[/color][/b]
  87.        [b][color=RED])[/color][/b]
  88.      [b][color=RED])[/color][/b]
  89.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
  90.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b]MakeSelectionSet [b][color=#a52a2a]"Tree_SS"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  91.      [b][color=RED]([/color][/b][b][color=BLUE]vla-SelectOnScreen[/color][/b] ss
  92.        [b][color=RED]([/color][/b]MakeVariant [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]66[/color][/b][b][color=RED])[/color][/b] [b][color=Blue]vlax-vbInteger[/color][color=RED])[/color][/b]
  93.        [b][color=RED]([/color][/b]MakeVariant [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#a52a2a]"INSERT"[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] [b][color=Blue]vlax-vbVariant[/color][color=RED])[/color][/b]
  94.      [b][color=RED])[/color][/b]
  95.    [b][color=RED])[/color][/b]
  96. [b][color=RED])[/color][/b]
  97. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b]
  98.        [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b]
  99.          [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Count[/color][/b] ss[b][color=RED])[/color][/b]
  100.        [b][color=RED])[/color][/b]
  101.      [b][color=RED])[/color][/b]
  102.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
  103.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] UFlag
  104.        [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b]
  105.          [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b]
  106.        [b][color=RED])[/color][/b]
  107.      [b][color=RED])[/color][/b]
  108.      [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] obj ss
  109.        [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ObjectList
  110.          [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b]
  111.            [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] obj
  112.              [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b]
  113.                [b][color=RED]([/color][/b][b][color=BLUE]vlax-variant-value[/color][/b]
  114.                  [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-property[/color][/b] obj [b][color=DARKRED]'[/color][/b]InsertionPoint[b][color=RED])[/color][/b]
  115.                [b][color=RED])[/color][/b]
  116.              [b][color=RED])[/color][/b]
  117.            [b][color=RED])[/color][/b]
  118.            ObjectList
  119.          [b][color=RED])[/color][/b]
  120.        [b][color=RED])[/color][/b]
  121.      [b][color=RED])[/color][/b]
  122.      [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] ss[b][color=RED])[/color][/b]
  123.      [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
  124.        [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
  125.          [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] block [b][color=RED])[/color][/b]
  126.            [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
  127.              [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
  128.                [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] attribute [b][color=RED])[/color][/b]
  129.                  [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] tag [b][color=RED]([/color][/b][b][color=BLUE]vla-get-TagString[/color][/b] attribute[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  130.                    [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=Blue]vla-put-TextString[/color][color=RED])[/color][/b]
  131.                      [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] attribute [b][color=RED]([/color][/b][b][color=BLUE]itoa[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *start [b][color=RED]([/color][/b][b][color=BLUE]1+[/color][/b] *start[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  132.                    [b][color=RED])[/color][/b]
  133.                  [b][color=RED])[/color][/b]
  134.                [b][color=RED])[/color][/b]
  135.              [b][color=RED])[/color][/b]
  136.              [b][color=RED]([/color][/b][b][color=BLUE]vlax-invoke[/color][/b] block [b][color=DARKRED]'[/color][/b]GetAttributes[b][color=RED])[/color][/b]
  137.            [b][color=RED])[/color][/b]
  138.          [b][color=RED])[/color][/b]
  139.        [b][color=RED])[/color][/b]
  140.        [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] car[b][color=RED])[/color][/b]
  141.          [b][color=RED]([/color][/b][b][color=BLUE]vl-sort[/color][/b] ObjectList
  142.            [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
  143.              [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] point1 point2 [b][color=RED])[/color][/b]
  144.                [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] point1[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] point2[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  145.              [b][color=RED])[/color][/b]
  146.            [b][color=RED])[/color][/b]
  147.          [b][color=RED])[/color][/b]
  148.        [b][color=RED])[/color][/b]
  149.      [b][color=RED])[/color][/b]
  150.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] UFlag
  151.        [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b]
  152.      [b][color=RED])[/color][/b]
  153.    [b][color=RED])[/color][/b]
  154. [b][color=RED])[/color][/b]
  155. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:02:45 | 显示全部楼层
你好,李,
 
非常感谢你的帮助;但是,没有显示数字。
 
这可能是我没有在块属性中设置的吗?
 
非常感谢
 
阿利斯泰尔
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:05:58 | 显示全部楼层
代码顶部的标记名是否正确?
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:12:09 | 显示全部楼层
非常感谢你的帮助,李,它正在工作。
 
随着我的进步,我可能需要帮助,并尝试自动化更多的绘图过程。
 
非常感谢,
 
阿利斯泰尔
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:15:03 | 显示全部楼层
根据PM的要求:
 
  1. (defun c:AttNum (/ tag dxf ent eLst)
  2. (setq dxf (lambda (c l) (cdr (assoc c l))))
  3. (setq tag "TAG1") ;; Tag to be Updated
  4. (setq *start (cond (*start) ( 1 ))
  5.        *start (1- (cond (  (getint (strcat "\nSpecify Starting Number <"
  6.                                      (itoa *start) "> : ")))
  7.                         (*start))))
  8. (while
  9.    (progn
  10.      (setq ent (car (entsel (strcat "\nSelect Block Number "
  11.                               (itoa (setq *start (1+ *start))) " <Exit> : "))))
  12.      (cond (  (eq 'ENAME (type ent))
  13.               (if (and (eq "INSERT" (dxf 0 (entget ent)))
  14.                        (= 1 (dxf 66 (entget ent))))
  15.                 (while (not (eq "SEQEND" (dxf 0 (setq eLst (entget (setq ent (entnext ent)))))))
  16.                   (if (eq tag (dxf 2 elst))
  17.                     (entupd
  18.                       (dxf -1
  19.                         (entmod
  20.                           (subst
  21.                             (cons 1 (itoa *start)) (assoc 1 eLst) eLst)))) t))
  22.                 (princ "\n** Must be an Attributed Block **"))))))
  23. (princ))

 
为了所有人的利益而发布。
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:21:18 | 显示全部楼层
哦,哇,非常感谢李,你甚至让它要求标签,而不是停留在Lisp程序。。我喜欢我喜欢
再次感谢您抽出时间。
詹姆斯
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:25:37 | 显示全部楼层
不客气,詹姆斯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:31 , Processed in 0.663557 second(s), 72 queries .

© 2020-2025 乐筑天下

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