乐筑天下

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

[编程交流] 寻求lisp方面的帮助-

[复制链接]

9

主题

24

帖子

15

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 06:00:19 | 显示全部楼层 |阅读模式
大家好,Lisp程序的专家们。
 
我需要对我这里的一个程序稍微修改一下,然后再修改一下。
 
基本上,我有一个lisp,它将把多段线的区域放在多行文字的cretin层下。
 
我需要它做的是将值放入块属性,而不是m text。
 
该块称为房间标记
属性标记为ASQFT
 
  1. (defun c:PolyArea  (/ BitVersion acsp ss e ptList ID StrField txt p)
  2. (vl-load-com)      
  3.      (setq BitVersion
  4.                       (if (> (strlen
  5.                                    (vl-prin1-to-string
  6.                                          (vlax-get-acad-object)))
  7.                              40) T nil)
  8.            acsp       (vla-get-block
  9.                             (vla-get-activelayout
  10.                                   (vla-get-activedocument
  11.                                         (vlax-get-acad-object)))))
  12.      (if (setq ss (ssget "_X" '((0 . "*POLYLINE")
  13.                        (8 . "A-AREA")
  14.                        (-4 . "&")
  15.                        (70 . 1)(410 . "Model"))))
  16.      (repeat (sslength ss)
  17.            (setq e     (ssname ss 0)
  18.                  sum   '(0 0)
  19.                  verts (cdr (assoc 90 (entget e))))
  20.            (setq ptList
  21.                       (mapcar 'cdr
  22.                               (vl-remove-if-not
  23.                                     '(lambda (x) (= (car x) 10))
  24.                                     (entget e))))
  25.            (foreach x ptList (setq sum (mapcar '+ x sum)))
  26.            (setq ID   (if BitVersion
  27.                             (vlax-invoke-method
  28.                                   (vla-get-Utility
  29.                                         (vla-get-ActiveDocument
  30.                                               (vlax-get-acad-object)))
  31.                                   'GetObjectIdString
  32.                                   (vlax-ename->vla-object
  33.                                         e)
  34.                                   :vlax-False)
  35.                             (itoa (vla-get-objectid
  36.                                         (vlax-ename->vla-object e)))))
  37.            (setq StrField
  38.                       (strcat
  39.                             "%<\\AcObjProp Object(%<\\_ObjId "
  40.                             ID
  41.                             ">%).Area \\f "%lu2%pr2%ps[, M²]%ct8[0.000001]">%"))
  42.            (vla-put-AttachmentPoint
  43.                  (setq txt (vla-addMText
  44.                                  acsp
  45.                                  (setq p (vlax-3d-point
  46.                                                   (mapcar '/ sum
  47.                                                         (list verts
  48.                                                               verts))))
  49.                                  0  StrField))
  50.                  acAttachmentPointMiddleCenter)
  51.            (vla-put-InsertionPoint txt p)
  52.            (ssdel e ss)
  53.            )(princ "\0 Objects found:"))
  54.      (princ)
  55.      )

 
提前感谢您的帮助,非常感谢。
顺致敬意,
戴夫。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 06:14:35 | 显示全部楼层
以下是vanilla AutoLISP中的一个片段,可以帮助您入门:
 
  1. [b][color=BLACK]([/color][/b]defun c:rarea [b][color=FUCHSIA]([/color][/b]/ en ss a p z bn i[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 0[b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"DIMZIN"[/color] 12[b][color=FUCHSIA])[/color][/b]
  4. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"UNITMODE"[/color] 1[b][color=FUCHSIA])[/color][/b]
  5. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not en[b][color=NAVY])[/color][/b]
  6.         [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]setq ss [b][color=GREEN]([/color][/b]ssget '[b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]0 . [color=#2f4f4f]"*POLYLINE"[/color][b][color=RED])[/color][/b]
  7.                                [b][color=RED]([/color][/b]67 . 0[b][color=RED])[/color][/b]
  8.                                [b][color=RED]([/color][/b]-4 . [color=#2f4f4f]"&"[/color][b][color=RED])[/color][/b]
  9.                                  [b][color=RED]([/color][/b]70 . 1[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  10.              [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.AREA"[/color] [color=#2f4f4f]"_E"[/color] en[b][color=FUCHSIA])[/color][/b]
  12. [b][color=FUCHSIA]([/color][/b]setq a [b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"AREA"[/color][b][color=NAVY])[/color][/b]
  13.        p [b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"PERIMETER"[/color][b][color=NAVY])[/color][/b]
  14.        z [b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  15. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"BLOCK"[/color][b][color=MAROON])[/color][/b]
  16.                 [b][color=MAROON]([/color][/b]cons 2 [color=#2f4f4f]"ROOMTAG"[/color][b][color=MAROON])[/color][/b]
  17.                 [b][color=MAROON]([/color][/b]cons 70 0[b][color=MAROON])[/color][/b]
  18.                 [b][color=MAROON]([/color][/b]list 10 0 0 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  19. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b]
  20.                 [b][color=MAROON]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=MAROON])[/color][/b]
  21.                 [b][color=MAROON]([/color][/b]list 10 -1 0 0[b][color=MAROON])[/color][/b]
  22.                 [b][color=MAROON]([/color][/b]list 11 +1 0 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  23. [b][color=FUCHSIA]([/color][/b]setq bn [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"ENDBLK"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  24. [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
  25. [b][color=FUCHSIA]([/color][/b]setq i [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nINSERT Point:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  26. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=MAROON])[/color][/b]
  27.                 [b][color=MAROON]([/color][/b]cons 2 bn[b][color=MAROON])[/color][/b]
  28.                 [b][color=MAROON]([/color][/b]cons 10 i[b][color=MAROON])[/color][/b]
  29.                 [b][color=MAROON]([/color][/b]cons 41 z[b][color=MAROON])[/color][/b]
  30.                 [b][color=MAROON]([/color][/b]cons 42 z[b][color=MAROON])[/color][/b]
  31.                 [b][color=MAROON]([/color][/b]cons 43 z[b][color=MAROON])[/color][/b]
  32.                 [b][color=MAROON]([/color][/b]cons 66 1[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  33. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"ATTRIB"[/color][b][color=MAROON])[/color][/b]
  34.                 [b][color=MAROON]([/color][/b]cons 1 [b][color=GREEN]([/color][/b]strcat [b][color=BLUE]([/color][/b]rtos [b][color=RED]([/color][/b]/ a 12[b][color=RED])[/color][/b] 4 0[b][color=BLUE])[/color][/b] [color=#2f4f4f]" Sq Ft"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  35.                 [b][color=MAROON]([/color][/b]cons 2 [color=#2f4f4f]"ASQFT"[/color][b][color=MAROON])[/color][/b]
  36.                 [b][color=MAROON]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b]
  37.                 [b][color=MAROON]([/color][/b]cons 7 [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"TEXTSTYLE"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  38.                 [b][color=MAROON]([/color][/b]cons 10 [b][color=GREEN]([/color][/b]polar i [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]* z 1.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  39.                 [b][color=MAROON]([/color][/b]cons 11 [b][color=GREEN]([/color][/b]polar i [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]* z 1.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  40.                 [b][color=MAROON]([/color][/b]cons 40 z[b][color=MAROON])[/color][/b]
  41.                 [b][color=MAROON]([/color][/b]cons 70 0[b][color=MAROON])[/color][/b]
  42.                 [b][color=MAROON]([/color][/b]cons 72 4[b][color=MAROON])[/color][/b]
  43.                 [b][color=MAROON]([/color][/b]cons 62 256[b][color=MAROON])[/color][/b]
  44.                 [b][color=MAROON]([/color][/b]cons 39 1e-8[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  45. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"ATTRIB"[/color][b][color=MAROON])[/color][/b]
  46.                 [b][color=MAROON]([/color][/b]cons 1 [b][color=GREEN]([/color][/b]strcat [b][color=BLUE]([/color][/b]rtos p 4 0[b][color=BLUE])[/color][/b] [color=#2f4f4f]" Ln Ft"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  47.                 [b][color=MAROON]([/color][/b]cons 2 [color=#2f4f4f]"APERM"[/color][b][color=MAROON])[/color][/b]
  48.                 [b][color=MAROON]([/color][/b]cons 6 [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b]
  49.                 [b][color=MAROON]([/color][/b]cons 7 [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"TEXTSTYLE"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  50.                 [b][color=MAROON]([/color][/b]cons 10 [b][color=GREEN]([/color][/b]polar i [b][color=BLUE]([/color][/b]* pi -0.5[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]* z 1.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  51.                 [b][color=MAROON]([/color][/b]cons 11 [b][color=GREEN]([/color][/b]polar i [b][color=BLUE]([/color][/b]* pi -0.5[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]* z 1.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  52.                 [b][color=MAROON]([/color][/b]cons 40 z[b][color=MAROON])[/color][/b]
  53.                 [b][color=MAROON]([/color][/b]cons 70 0[b][color=MAROON])[/color][/b]
  54.                 [b][color=MAROON]([/color][/b]cons 72 4[b][color=MAROON])[/color][/b]
  55.                 [b][color=MAROON]([/color][/b]cons 62 256[b][color=MAROON])[/color][/b]
  56.                 [b][color=MAROON]([/color][/b]cons 39 1e-8[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  57. [b][color=FUCHSIA]([/color][/b]entmake [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"SEQEND"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  58. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
仅适用于闭合多段线。
 
-大卫
回复

使用道具 举报

1

主题

80

帖子

79

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:17:32 | 显示全部楼层
大卫,代码不错;然而,我认为Dave(OP)已经创建了具有特定属性的块,因此不需要创建一个。
 
Dave(OP),下面的代码是一个大纲,它将选择您的块(假设已经插入),并指示要修改的特定属性(这不会计算面积-如果您需要与其他代码结合的帮助,请告诉我)。需要更改YOURLAYERNAME和YOURAREAVARIABLE以满足您的需要。
 
  1. ;;;;;;
  2. ;  CHE SYN 2013
  3. ;  Vanilla LISP outline to find a block and alter a specific tag
  4. ;;;;;;
  5. (defun c:test ( / ss e x a ax YOURAREAVARIABLE)
  6.    (setq ss (ssget "_x" '( (0 . "INSERT")(2 . "ROOM TAG")(8 . "YOURLAYERNAME") ))
  7.          e (ssname ss 0)
  8.          x (entget e)
  9.          a (entnext e)
  10.          ax (entget a)
  11.    )
  12.        (while
  13.            (/= "SEQEND" (cdr (assoc 0 ax)) )
  14.            (if
  15.                (= "ASQFT" (cdr (assoc 2 ax)) )
  16.                (progn
  17.                    (entmod
  18.                        (subst
  19.                            (cons 1 YOURAREAVARIABLE)
  20.                            (assoc 1 ax)
  21.                            ax
  22.                        )
  23.                    )
  24.                  (entupd e)
  25.                )
  26.            )
  27.            (setq a (entnext a)
  28.                  ax (entget a)
  29.            )
  30.        )
  31. (princ)
  32. )
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 06:28:08 | 显示全部楼层
我看到OP有块的插入点-它是普林斯重心-因为我和吉尔斯根据点列表数据命名了这种中心。。。我不知道OP要显示哪些属性值的单位,所以我将其保留为普通dwg单位,保留了2位小数。。。另外,如果我注意到的话,David预测了更多用于标记的PLINE,但没有正确完成此功能的代码。。。这是David的扩展和我的修改。。。
 
  1. [b][color=#FF0000]([/color][/b]defun barycent [b][color=#80FF00]([/color][/b]ptlst[b][color=#80FF00])[/color][/b]
  2. [b][color=#80FF00]([/color][/b]mapcar '[b][color=#00FFFF]([/color][/b]lambda [b][color=#0080FF]([/color][/b] x [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b]/ x [b][color=#FF00FF]([/color][/b]float [b][color=#FF0000]([/color][/b]length ptlst[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  3.    [b][color=#00FFFF]([/color][/b]mapcar '[b][color=#0080FF]([/color][/b]lambda [b][color=#FF00FF]([/color][/b] x [b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b]apply '+ x[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b]
  4.      [b][color=#0080FF]([/color][/b]apply 'mapcar [b][color=#FF00FF]([/color][/b]cons 'list ptlst[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b]
  5.    [b][color=#00FFFF])[/color][/b]
  6. [b][color=#80FF00])[/color][/b]
  7. [b][color=#FF0000])[/color][/b]
  8. [b][color=#FF0000]([/color][/b]defun c:rarea [b][color=#80FF00]([/color][/b]/ en ss a p z bn ii epar pt ptlst i[b][color=#80FF00])[/color][/b]
  9. [b][color=#80FF00]([/color][/b]vl-load-com[b][color=#80FF00])[/color][/b]
  10. [b][color=#80FF00]([/color][/b]setvar "CMDECHO" 0[b][color=#80FF00])[/color][/b]
  11. [b][color=#80FF00]([/color][/b]setvar "DIMZIN" 12[b][color=#80FF00])[/color][/b]
  12. [b][color=#80FF00]([/color][/b]setvar "UNITMODE" 1[b][color=#80FF00])[/color][/b]
  13. [b][color=#80FF00]([/color][/b]setq ss [b][color=#00FFFF]([/color][/b]ssget '[b][color=#0080FF]([/color][/b][b][color=#FF00FF]([/color][/b]0 . "*POLYLINE"[b][color=#FF00FF])[/color][/b]
  14.                                [b][color=#FF00FF]([/color][/b]67 . 0[b][color=#FF00FF])[/color][/b]
  15.                                [b][color=#FF00FF]([/color][/b]-4 . "&"[b][color=#FF00FF])[/color][/b]
  16.                                [b][color=#FF00FF]([/color][/b]70 . 1[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b]
  17. [b][color=#80FF00]([/color][/b]while [b][color=#00FFFF]([/color][/b]setq en [b][color=#0080FF]([/color][/b]ssname ss 0[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  18.    [b][color=#00FFFF]([/color][/b]command "_.AREA" "_E" en[b][color=#00FFFF])[/color][/b]
  19.    [b][color=#00FFFF]([/color][/b]setq a [b][color=#0080FF]([/color][/b]getvar "AREA"[b][color=#0080FF])[/color][/b]
  20.          p [b][color=#0080FF]([/color][/b]getvar "PERIMETER"[b][color=#0080FF])[/color][/b]
  21.          z [b][color=#0080FF]([/color][/b]getvar "TEXTSIZE"[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  22.    [b][color=#00FFFF]([/color][/b]entmake [b][color=#0080FF]([/color][/b]list [b][color=#FF00FF]([/color][/b]cons 0 "BLOCK"[b][color=#FF00FF])[/color][/b]
  23.                   [b][color=#FF00FF]([/color][/b]cons 2 "ROOMTAG"[b][color=#FF00FF])[/color][/b]
  24.                   [b][color=#FF00FF]([/color][/b]cons 70 0[b][color=#FF00FF])[/color][/b]
  25.                   [b][color=#FF00FF]([/color][/b]list 10 0 0 0[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  26.    [b][color=#00FFFF]([/color][/b]entmake [b][color=#0080FF]([/color][/b]list [b][color=#FF00FF]([/color][/b]cons 0 "LINE"[b][color=#FF00FF])[/color][/b]
  27.                   [b][color=#FF00FF]([/color][/b]cons 8 "0"[b][color=#FF00FF])[/color][/b]
  28.                   [b][color=#FF00FF]([/color][/b]list 10 -1 0 0[b][color=#FF00FF])[/color][/b]
  29.                   [b][color=#FF00FF]([/color][/b]list 11 +1 0 0[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  30.    [b][color=#00FFFF]([/color][/b]setq bn [b][color=#0080FF]([/color][/b]entmake [b][color=#FF00FF]([/color][/b]list [b][color=#FF0000]([/color][/b]cons 0 "ENDBLK"[b][color=#FF0000])[/color][/b][b][color=#FF0000]([/color][/b]cons 8 "0"[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  31.    [b][color=#00FFFF]([/color][/b]setq ptlst nil[b][color=#00FFFF])[/color][/b]
  32.    [b][color=#00FFFF]([/color][/b]setq ii -1.0[b][color=#00FFFF])[/color][/b]
  33.    [b][color=#00FFFF]([/color][/b]setq epar [b][color=#0080FF]([/color][/b]vlax-curve-getendparam en[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  34.    [b][color=#00FFFF]([/color][/b]while [b][color=#0080FF]([/color][/b]< [b][color=#FF00FF]([/color][/b]setq ii [b][color=#FF0000]([/color][/b]1+ ii[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] epar[b][color=#0080FF])[/color][/b]
  35.      [b][color=#0080FF]([/color][/b]setq pt [b][color=#FF00FF]([/color][/b]vlax-curve-getpointatparam en ii[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b]
  36.      [b][color=#0080FF]([/color][/b]setq ptlst [b][color=#FF00FF]([/color][/b]cons pt ptlst[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b]
  37.    [b][color=#00FFFF])[/color][/b]
  38.    [b][color=#00FFFF]([/color][/b]setq ptlst [b][color=#0080FF]([/color][/b]reverse ptlst[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  39.    [b][color=#00FFFF]([/color][/b]setq i [b][color=#0080FF]([/color][/b]barycent ptlst[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  40.    [b][color=#00FFFF]([/color][/b]entmake [b][color=#0080FF]([/color][/b]list [b][color=#FF00FF]([/color][/b]cons 0 "INSERT"[b][color=#FF00FF])[/color][/b]
  41.                   [b][color=#FF00FF]([/color][/b]cons 2 bn[b][color=#FF00FF])[/color][/b]
  42.                   [b][color=#FF00FF]([/color][/b]cons 10 i[b][color=#FF00FF])[/color][/b]
  43.                   [b][color=#FF00FF]([/color][/b]cons 41 z[b][color=#FF00FF])[/color][/b]
  44.                   [b][color=#FF00FF]([/color][/b]cons 42 z[b][color=#FF00FF])[/color][/b]
  45.                   [b][color=#FF00FF]([/color][/b]cons 43 z[b][color=#FF00FF])[/color][/b]
  46.                   [b][color=#FF00FF]([/color][/b]cons 66 1[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  47.    [b][color=#00FFFF]([/color][/b]entmake [b][color=#0080FF]([/color][/b]list [b][color=#FF00FF]([/color][/b]cons 0 "ATTRIB"[b][color=#FF00FF])[/color][/b]
  48.                   [b][color=#FF00FF]([/color][/b]cons 1 [b][color=#FF0000]([/color][/b]rtos a 2 2[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  49.                   [b][color=#FF00FF]([/color][/b]cons 2 "ASQFT"[b][color=#FF00FF])[/color][/b]
  50.                   [b][color=#FF00FF]([/color][/b]cons 6 "BYLAYER"[b][color=#FF00FF])[/color][/b]
  51.                   [b][color=#FF00FF]([/color][/b]cons 7 [b][color=#FF0000]([/color][/b]getvar "TEXTSTYLE"[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  52.                   [b][color=#FF00FF]([/color][/b]cons 10 [b][color=#FF0000]([/color][/b]polar i [b][color=#80FF00]([/color][/b]* pi 0.5[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]* z 1.5[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  53.                   [b][color=#FF00FF]([/color][/b]cons 11 [b][color=#FF0000]([/color][/b]polar i [b][color=#80FF00]([/color][/b]* pi 0.5[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]* z 1.5[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  54.                   [b][color=#FF00FF]([/color][/b]cons 40 z[b][color=#FF00FF])[/color][/b]
  55.                   [b][color=#FF00FF]([/color][/b]cons 70 0[b][color=#FF00FF])[/color][/b]
  56.                   [b][color=#FF00FF]([/color][/b]cons 72 4[b][color=#FF00FF])[/color][/b]
  57.                   [b][color=#FF00FF]([/color][/b]cons 62 256[b][color=#FF00FF])[/color][/b]
  58.                   [b][color=#FF00FF]([/color][/b]cons 39 1e-8[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  59.    [b][color=#00FFFF]([/color][/b]entmake [b][color=#0080FF]([/color][/b]list [b][color=#FF00FF]([/color][/b]cons 0 "ATTRIB"[b][color=#FF00FF])[/color][/b]
  60.                   [b][color=#FF00FF]([/color][/b]cons 1 [b][color=#FF0000]([/color][/b]rtos p 2 2[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  61.                   [b][color=#FF00FF]([/color][/b]cons 2 "APERM"[b][color=#FF00FF])[/color][/b]
  62.                   [b][color=#FF00FF]([/color][/b]cons 6 "BYLAYER"[b][color=#FF00FF])[/color][/b]
  63.                   [b][color=#FF00FF]([/color][/b]cons 7 [b][color=#FF0000]([/color][/b]getvar "TEXTSTYLE"[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  64.                   [b][color=#FF00FF]([/color][/b]cons 10 [b][color=#FF0000]([/color][/b]polar i [b][color=#80FF00]([/color][/b]* pi -0.5[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]* z 1.5[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  65.                   [b][color=#FF00FF]([/color][/b]cons 11 [b][color=#FF0000]([/color][/b]polar i [b][color=#80FF00]([/color][/b]* pi -0.5[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]* z 1.5[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b]
  66.                   [b][color=#FF00FF]([/color][/b]cons 40 z[b][color=#FF00FF])[/color][/b]
  67.                   [b][color=#FF00FF]([/color][/b]cons 70 0[b][color=#FF00FF])[/color][/b]
  68.                   [b][color=#FF00FF]([/color][/b]cons 72 4[b][color=#FF00FF])[/color][/b]
  69.                   [b][color=#FF00FF]([/color][/b]cons 62 256[b][color=#FF00FF])[/color][/b]
  70.                   [b][color=#FF00FF]([/color][/b]cons 39 1e-8[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  71.    [b][color=#00FFFF]([/color][/b]entmake [b][color=#0080FF]([/color][/b]list [b][color=#FF00FF]([/color][/b]cons 0 "SEQEND"[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b]
  72.    [b][color=#00FFFF]([/color][/b]ssdel en ss[b][color=#00FFFF])[/color][/b]
  73. [b][color=#80FF00])[/color][/b]
  74. [b][color=#80FF00]([/color][/b]princ[b][color=#80FF00])[/color][/b]
  75. [b][color=#FF0000])[/color][/b]
M.R。
回复

使用道具 举报

1

主题

80

帖子

79

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:35:31 | 显示全部楼层
 
这太尴尬了;我说得太快了,没听到。
 
做得好,马尔科。
回复

使用道具 举报

9

主题

24

帖子

15

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 06:42:11 | 显示全部楼层
大家好,非常感谢大家的回复,但在组合代码时遇到了一些问题。
chesyn-我不是百分之百确定你说的AreaVariable是什么意思,层是a-area?
 
关于david和marko的代码,这是一个很棒的工具,你能在其中添加不是从多段线派生的字段吗。。。
 
例如,我的街区房间标签是这样的。
标记值
地板饰面xxxx
房间号xxxx
从lisp插入asqft
 
如果我能正确地重新创建块,那么我可以使用这种编码方式。
 
你有什么建议,你会在我的代码中插入哪一部分?
 
谢谢
当做
戴夫
回复

使用道具 举报

1

主题

80

帖子

79

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:50:53 | 显示全部楼层
 
在这种情况下,将“YOURLAYERNAME”更改为“a-area”
 
计算面积时,分配一个变量(即ar),然后用ar替换areavariable。
 
要修改的块是否已加载到图形中,还是希望通过LISP加载?
有多少块实例?
你能发布一个包含块的示例图吗?可能还有其他解决方案?
 
胆碱酯酶
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 06:58:21 | 显示全部楼层
在这里,试试这个版本。。。根据您的请求添加了其他属性。。。
 
defun重心(ptlst)(mapcar)(lambda(x)(/[color]x(floatlengthptlst))(mapcar(x)(apply[apply+x))(apply'(cons'listptlst)))(defunc:areapls attbl(/位版本acsp ID ss i pl ii epar pt ptlst cen ar bl att att1 att2 att3 att4 strfieldar strfieldlen)(vl load comsetq位版本(if>strlenvl-prin1-to-stringvlax get acad object))40)Tnil)acsp(vla get blockvla get activelayoutvla get activedocumentvlax get acad object))(ifnottblsearch“block”“ROOM-BLOCK”)(prognsetqatt1(entmakexlist'(0.“ATTDEF”)(100.“AcDbText”)(cons40(getvar'textsize))'(1。“地板饰面=XXXX”)'(50.0.0)'(41.1.0)'(51.0.0)'(7。“标准”)'(71.0)'(72.4)'(10.0.0.0.0.0)(cons11(polar'(0.0 0.0)(*pi0.5)(*3.0(getvar'textsize))'(210 0.0 0.0 1.0)'(100。“AcDbAttributeDefinition”)'(280.0)'(3。“FLOOR FINISH Prompt”)(2。“FLOOR FINISH”)'(70.0)'(73.0)'(74.0)'(280.1))(setqatt2(entmakexlist'(0.“ATTDEF”)(100.“AcDbEntity”)([color=BLUE cons40(getvar'textsize))'(1.“房间号=X”)“(50.0.0)'(41.1.0)'(51.0.0)'(7。“Standard”)'(71.0)'(72.4)'(10.0.0.0.0)(cons11(polar'(0.0.0.0)(*pi0.5(*1.0(getvar'textsize))'(210 0.0 0 0.0 1.0)'(100。“ACDBAttribute定义”)'(280.0)'(3。“房间无提示”'(2.“房间号”'(70.0)'(73.0)'(74.0)'(280.1))(setqatt3(entmakexlist'(0.“ATTDEF”)“(100.“AcDbEntity”)”(100.“AcDbText”)(cons40(getvar'textsize))“(1.“0.0”)”(50.0.0)“(41.1.0)“(51.0.0)”(7.“标准”'(71.0)'(72.4)'(10 0.0 0.0 0.0)(cons11(polar'(0.0 0 0.0)(*pi-0.5)(*1.0(getvar'textsize())'(210 0.0 0.0 1.0)'(100。“AcDbAttributeDefinition”)'(280.0)'(3。“区域提示”)'(2。“区域”)'(70.0)'(73.0)'(74.0)“(280.1))(setqatt4(entmakexlist'(0.“ATTDEF”)(100.“AcDbText”)(cons40(getvar'textsize))'(1。“0.0”)'(50.0.0)'(41.1.0)'(51.0.0)'(7。“标准”)'(71.0)'(72.4)'(10.0.0.0.0)([color=BLUE cons11(polar'(0.0 0.0)(*pi-0.5)(*3.0(getvar'textsize))'(210 0.0 0.0 1.0)'(100。“AcDbAttributeDefinition”)'(280.0)'(3。“perior Prompt”)'(2。“perior”)'(70.0)
回复

使用道具 举报

9

主题

24

帖子

15

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:01:12 | 显示全部楼层
Hi Marko, thanks very much it works really well, would it be possible to incorporate my lisp at the start of the post, as instead of selecting the polyline that you wish to display the area in, it automatically puts it in any closed polyline under a-area?
 
Che i have attached a copy of the block in a test file thanks
 
I really appreciate the help folks.
test polyline room tag.dwg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:05 , Processed in 0.458655 second(s), 81 queries .

© 2020-2025 乐筑天下

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