乐筑天下

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

[编程交流] 此代码为一个简单的文本la

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 09:42:50 | 显示全部楼层 |阅读模式
我似乎无法让这三个文本项不是一个在另一个之上:x
我已经拿了这个基本文件,并试图用它做一些更详细的事情,它也有同样的问题,但这段代码自1/20以来一直没有被修改过,所以我想知道它是一个系统变量还是什么。即使是在一月份,每隔一段时间,3个文本对象中的一个会在其他文本对象的附近或多段线的顶点处执行自己的操作。我很困惑。
 
  1. ;adapted from code from Jeffery P. Sanders
  2. (defun C:GA()
  3. ;turn the system echo off
  4. (setvar "cmdecho" 0)
  5. ;UNITS AND PRECISION
  6. (setvar "LUPREC" 0)
  7. (setvar "LUNITS" 2)
  8. (setvar "mtextcolumn" 0)
  9. ;layer settings
  10. (if
  11. (not
  12. (tblsearch "layer" "A-FLOOR-IDEN")
  13. )
  14. (command "-layer" "m" "A-FLOOR-IDEN" "C" "GREEN" "A-FLOOR-IDEN" "")
  15. (
  16. )
  17. )
  18. (if
  19. (not
  20. (tblsearch "layer" "A-ANNO-NOTE")
  21. )
  22. (command "-layer" "m" "A-ANNO-NOTE" "C" "8" "A-ANNO-NOTE" "")
  23. (
  24. )
  25. )
  26. (if
  27. (not
  28. (tblsearch "layer" "A-AREA-IDEN")
  29. )
  30. (command "-layer" "m" "A-AREA-IDEN" "C" "YELLOW" "A-AREA-IDEN" "")
  31. (
  32. )
  33. )
  34. ;set up a variable to hold the area
  35. (while T
  36.    (setq myArea 0)
  37. (setq SpaceType 0)
  38. ;select one object
  39. (setq ent(entsel))
  40. (if (car ent)
  41.    (progn
  42.      ;find the area of the polyline
  43.      (command "area" "Object" (car ent))
  44.      (setq x (getvar "Area"))
  45.       
  46.      (if(setq pt1(getpoint "\n Insertion Point: "))
  47.        (progn
  48. (SETVAR "CLAYER" "A-FLOOR-IDEN") ;SETS AREA in Square foot TEXT LAYER CLAYER VARIABLE TO A-FLOOR-IDEN
  49. (command "mtext" pt1 "@6,0" (strcat (rtos x 2 2) " sq ft")"")
  50.   
  51. (SETVAR "CLAYER" "A-ANNO-NOTE") ;SETS OFFICE TYPE TEXT LAYER CLAYER VARIABLE TO A-ANNO-NOTE
  52. (setq SpaceType(getstring T "\n Enter Space Type "))
  53. (command "mtext" (polar pt1 (* pi 1.5) (* 1.5 (getvar "textsize")))
  54. "@6,0" (strcat SpaceType)"")
  55. (SETVAR "CLAYER" "A-AREA-IDEN") ;SETS OFFICE TYPE TEXT LAYER CLAYER VARIABLE TO A-AREA-IDEN
  56. (setq n (+ n 1))
  57. (command "mtext" (polar pt1 (* pi 1.5) (* -1.5 (getvar "textsize")))
  58. "@6,0" (strcat (rtos n 2 0))"")
  59.          )
  60.        )           ;close the if progn for point selection
  61.      )             ;close the if
  62.    )               ;close the if progn for object selection
  63.    ;close the if progn for space type
  64.   ;close the if progn for room #
  65. )  ;close the if statement
  66. ) ; ends repeat
  67. ;reset the system echo variable
  68. (setvar "cmdecho" 1)
  69.    
  70. ;supress the last echo
  71. (princ)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:19:05 | 显示全部楼层
嗨,Utah_Indie,
 
关于代码的几点:
 
 
[列表]
  • 我不依赖于使用面积系统变量来检索对象的面积,而是建议使用ActiveX AREA属性或GetArea Curve函数,如下面的代码所示。
    [/列表]
     
    [列表]
  • 如果不连接字符串,则无需使用“strcat”。
    [/列表]
     
    [列表]
  • 对多行文字的命令调用将受到ObjectSnap的影响-这可能解释了您遇到的问题。
    [/列表]
    以下是我的示例:
    1. [color=RED]([/color][color=BLUE]defun[/color] c:test [color=RED]([/color] [color=BLUE]/[/color] _Layer _MText a e i p s [color=RED])[/color]
    2.               
    3. [color=#990099];;----------------------------------------------;;[/color]
    4. [color=#990099];;  Example © Lee Mac 2011  -  www.lee-mac.com  ;;[/color]
    5. [color=#990099];;----------------------------------------------;;[/color]
    6. [color=RED]([/color][color=BLUE]defun[/color] _Layer [color=RED]([/color] n c [color=RED])[/color]
    7.    [color=RED]([/color][color=BLUE]entmake[/color]
    8.      [color=RED]([/color][color=BLUE]list[/color]
    9.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"LAYER"[/color][color=RED])[/color]
    10.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbSymbolTableRecord"[/color][color=RED])[/color]
    11.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbLayerTableRecord"[/color][color=RED])[/color]
    12.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]2[/color]  n[color=RED])[/color]
    13.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]62[/color] c[color=RED])[/color]
    14.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]70[/color] [color=#009900]0[/color][color=RED])[/color]
    15.      [color=RED])[/color]
    16.    [color=RED])[/color]
    17. [color=RED])[/color]
    18. [color=RED]([/color][color=BLUE]defun[/color] _MText [color=RED]([/color] p s l [color=RED])[/color]
    19.    [color=RED]([/color][color=BLUE]entmakex[/color]
    20.      [color=RED]([/color][color=BLUE]list[/color]
    21.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"MTEXT"[/color][color=RED])[/color]
    22.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbEntity"[/color][color=RED])[/color]
    23.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbMText"[/color][color=RED])[/color]
    24.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]8[/color] l[color=RED])[/color]
    25.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]10[/color] [color=RED]([/color][color=BLUE]trans[/color] p [color=#009900]1[/color] [color=#009900]0[/color][color=RED]))[/color]
    26.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]11[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]UCSXDIR[color=RED]))[/color]
    27.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]1[/color] s[color=RED])[/color]
    28.        [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]210[/color] [color=RED]([/color][color=BLUE]trans[/color] [color=DARKRED]'[/color][color=RED]([/color][color=#009999]0.[/color] [color=#009999]0.[/color] [color=#009999]1.[/color][color=RED])[/color] [color=#009900]1[/color] [color=#009900]0[/color] [color=BLUE]t[/color][color=RED]))[/color]
    29.      [color=RED])[/color]
    30.    [color=RED])[/color]
    31. [color=RED])[/color]
    32. [color=RED]([/color][color=BLUE]setq[/color] i [color=#009900]0[/color][color=RED])[/color]
    33. [color=RED]([/color][color=BLUE]foreach[/color] x [color=DARKRED]'[/color][color=RED](([/color][color=#a52a2a]"A-FLOOR-IDEN"[/color] [color=#009900]3[/color][color=RED])[/color] [color=RED]([/color][color=#a52a2a]"A-ANNO-NOTE"[/color] [color=#009900]8[/color][color=RED])[/color] [color=RED]([/color][color=#a52a2a]"A-AREA-IDEN"[/color] [color=#009900]2[/color][color=RED]))[/color]
    34.    [color=RED]([/color][color=BLUE]or[/color] [color=RED]([/color][color=BLUE]tblsearch[/color] [color=#a52a2a]"LAYER"[/color] [color=RED]([/color][color=BLUE]car[/color] x[color=RED]))[/color] [color=RED]([/color][color=BLUE]apply[/color] [color=DARKRED]'[/color]_Layer x[color=RED]))[/color]
    35. [color=RED])[/color]   
    36. [color=RED]([/color][color=BLUE]while[/color]
    37.    [color=RED]([/color][color=BLUE]and[/color]
    38.      [color=RED]([/color][color=BLUE]setq[/color] e
    39.        [color=RED]([/color][color=BLUE]ssget[/color] [color=#a52a2a]"_+.:E:S"[/color]
    40.          [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"CIRCLE,ELLIPSE,*POLYLINE,SPLINE"[/color][color=RED])[/color]
    41.            [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"<NOT"[/color][color=RED])[/color]
    42.              [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"<AND"[/color][color=RED])[/color]
    43.                [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"POLYLINE"[/color][color=RED])[/color]
    44.                [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"<OR"[/color][color=RED])[/color]
    45.                  [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"&="[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]70[/color] [color=#009900]16[/color][color=RED])[/color]
    46.                  [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"&="[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]70[/color] [color=#009900]64[/color][color=RED])[/color]
    47.                [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"OR>"[/color][color=RED])[/color]
    48.              [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"AND>"[/color][color=RED])[/color]
    49.            [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]-4[/color] [color=#a52a2a]"NOT>"[/color][color=RED])[/color]
    50.          [color=RED])[/color]
    51.        [color=RED])[/color]
    52.      [color=RED])[/color]
    53.      [color=RED]([/color][color=BLUE]setq[/color] a [color=RED]([/color][color=BLUE]vlax-curve-getArea[/color] [color=RED]([/color][color=BLUE]ssname[/color] e [color=#009900]0[/color][color=RED])))[/color]
    54.      [color=RED]([/color][color=BLUE]setq[/color] *stype*
    55.        [color=RED]([/color][color=BLUE]cond[/color]
    56.          [color=RED]([/color]
    57.            [color=RED]([/color][color=BLUE]eq[/color] [color=#a52a2a]""[/color]
    58.              [color=RED]([/color][color=BLUE]setq[/color] s
    59.                [color=RED]([/color][color=BLUE]getstring[/color] [color=BLUE]t[/color]
    60.                  [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"\nEnter Space Type"[/color]
    61.                    [color=RED]([/color][color=BLUE]if[/color] *stype* [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]" <"[/color] *stype* [color=#a52a2a]">: "[/color][color=RED])[/color] [color=#a52a2a]": "[/color][color=RED])[/color]
    62.                  [color=RED])[/color]
    63.                [color=RED])[/color]
    64.              [color=RED])[/color]
    65.            [color=RED])[/color]
    66.            *stype*
    67.          [color=RED])[/color]
    68.          [color=RED]([/color] s [color=RED])[/color]
    69.        [color=RED])[/color]
    70.      [color=RED])[/color]
    71.      [color=RED]([/color][color=BLUE]setq[/color] p [color=RED]([/color][color=BLUE]getpoint[/color] [color=#a52a2a]"\nSpecify Insertion Point: "[/color][color=RED]))[/color]
    72.    [color=RED])[/color]
    73.    [color=RED]([/color]_MText p [color=RED]([/color][color=BLUE]strcat[/color] [color=RED]([/color][color=BLUE]rtos[/color] a [color=#009900]2[/color] [color=#009900]2[/color][color=RED])[/color] [color=#a52a2a]" sq ft"[/color][color=RED])[/color] [color=#a52a2a]"A-FLOOR-IDEN"[/color][color=RED])[/color]
    74.    [color=RED]([/color]_MText [color=RED]([/color][color=BLUE]polar[/color] p [color=RED]([/color][color=BLUE]/[/color] [color=RED]([/color][color=BLUE]*[/color] [color=#009999]3.[/color] [color=BLUE]pi[/color][color=RED])[/color] [color=#009999]2.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]*[/color] [color=#009999]1.5[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]TEXTSIZE[color=RED])))[/color] *stype* [color=#a52a2a]"A-ANNO-NOTE"[/color][color=RED])[/color]
    75.    [color=RED]([/color]_MText [color=RED]([/color][color=BLUE]polar[/color] p [color=RED]([/color][color=BLUE]/[/color] [color=BLUE]pi[/color] [color=#009999]2.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]*[/color] [color=#009999]1.5[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]TEXTSIZE[color=RED])))[/color] [color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]1+[/color] i[color=RED])))[/color] [color=#a52a2a]"A-AREA-IDEN"[/color][color=RED])[/color]
    76. [color=RED])[/color]
    77. [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color]
    78. [color=RED])[/color]
    79. [color=red]([/color][color=blue]vl-load-com[/color][color=red])[/color]
  • 回复

    使用道具 举报

    2

    主题

    5

    帖子

    3

    银币

    初来乍到

    Rank: 1

    铜币
    10
    发表于 2022-7-6 10:36:45 | 显示全部楼层
    李,非常感谢你。这里有一些新命令,当然还有一些一流的教程。我可以将其加载到visual Lisp模块中吗?如果我这样做,它不会将vlax curve getArea或多行文字识别为命令。显然需要更多的辅导,再次感谢。
    兰迪
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 11:00:35 | 显示全部楼层
    嗨Randy,
     
    不客气,很乐意帮忙。
     
    在Visual LISP编辑器中加载代码时(或者在使用代码时),请确保
     
    在会话期间调用了一次
    1. (vl-load-com)
    以加载Visual LISP函数(我可能应该将其添加到代码中,除非我在ACADDOC.lsp中有它,所以不要注意何时忽略了它)。此外,请注意,“多行文字”不会显示为函数,因为它是用户定义的子函数
     

     
    编辑:将(vl load com)添加到代码中。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-6 23:14 , Processed in 0.427308 second(s), 71 queries .

    © 2020-2025 乐筑天下

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