乐筑天下

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

[编程交流] 标题的表格样式文本(&H)

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 15:26:30 | 显示全部楼层 |阅读模式
我需要一种方法来准确、快速地计算AutoCAD文件中的对象,我们的主要负责人李·Mac有一个很好的例子,叫做TCount,很适合这个例子。这里有一些额外的功能,我可以为扩展它提供一些建议。
[列表=1]
  • 我计算的细节是一个块,它是一个圆心有一条水平线的圆。块包含两个属性,顶部是零件的标记#,这一个是我要查找的目标,底部属性是图纸编号。目前对页码不感兴趣,因此我想知道是否有方法可以省略数据表中显示的这些实例。
  • TABLESTYLE命令对于将字体设置为我想要的大小和颜色很有用,但标题字段标题中的文本相当通用。我想知道除了在创建表格后手动编辑文本之外,是否还有其他方法可以更改文本。使用LISP代码可以,或者能够在TABLESTYLE窗口中设置所需的文本也可以。
    [/列表]
  • 回复

    使用道具 举报

    180

    主题

    639

    帖子

    463

    银币

    中流砥柱

    Rank: 25

    铜币
    897
    发表于 2022-7-5 15:33:23 | 显示全部楼层
    快进半个小时,我确实找到了改变数据表中文本的变量。这很酷。现在要了解如何绕过每个块的第二个属性。。。
     
    再快进45分钟,披萨送到了,现在我得到了第三栏。
    回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-5 15:41:30 | 显示全部楼层
    看看这个
     
    1. ; dwg index to a table
    2. ; by Alan H NOV 2013
    3. (defun AH:dwgindex (/ doc objtable ss1 lay ans ans2 plotabs ss1 tag2 tag3 list1 list2 curlayout colwidth numcolumns numrows INC rowheight )
    4. (vl-load-com)
    5. (setq curlayout (getvar "ctab"))
    6. (if (= curlayout "Model")
    7. (progn
    8. (Alert "You need to be in a layout for this option")
    9. (exit)
    10. ) ; end progn
    11. ) ; end if model
    12. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
    13. (setq curspace (vla-get-paperspace doc))
    14. (setq pt1 (vlax-3d-point (getpoint "\nPick point for top left hand of table:  ")))
    15. ; read values from title blocks
    16. (setq bname "DA1DRTXT")
    17. (setq tag2 "DRG_NO") ;attribute tag name
    18. (setq tag3 "WORKS_DESCRIPTION") ;attribute tag name
    19. (setq ss1 (ssget "x"  (list (cons 0 "INSERT") (cons 2 bname))))
    20. (if (= ss1 nil) ; for tomkinson jobs
    21. (progn
    22. (setq bname "COGG_TITLE")
    23. (setq ss1 (ssget "x"  (list (cons 0 "INSERT") (cons 2 bname))))
    24. )
    25. )
    26. (setq INC (sslength ss1))  
    27. (repeat INC
    28. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 (SETQ INC (- INC 1)) )) 'getattributes)
    29.        (if (= tag2 (strcase (vla-get-tagstring att)))
    30.            (progn
    31.            (setq ans (vla-get-textstring att))
    32.            (if (/= ans NIL)
    33.            (setq list1 (cons ans list1))
    34.            ) ; if
    35.            ); end progn
    36.          ) ; end if
    37.        (if (= tag3 (strcase (vla-get-tagstring att)))
    38.          (progn
    39.          (setq ans2 (vla-get-textstring att))
    40.          (if (/= ans2 NIL)
    41.              (setq list2 (cons ans2 list2))
    42.           ) ; end if
    43.           ) ; end progn
    44. ) ; end if tag3
    45.    
    46. ) ; end foreach
    47. ) ; end repeat
    48. (setvar 'ctab curlayout)
    49. (command "Zoom" "E")
    50. (command "regen")
    51. (reverse list1)
    52. ;(reverse list2)
    53. ; now do table
    54. (setq numrows (+ 2 (sslength ss1)))
    55. (setq numcolumns 2)
    56. (setq rowheight 0.2)
    57. (setq colwidth 150)
    58. (setq objtable (vla-addtable curspace pt1 numrows numcolumns rowheight colwidth))
    59. (vla-settext objtable 0 0 "DRAWING REGISTER")
    60. (vla-settext objtable 1 0 "DRAWING NUMBER")
    61. (vla-settext objtable 1 1 "DRAWING TITLE")
    62. (SETQ X 0)
    63. (SETQ Y 2)
    64. (REPEAT (sslength ss1)
    65. (vla-settext objtable Y 0 (NTH X LIST1))
    66. (vla-settext objtable Y 1 (NTH X LIST2))
    67. (vla-setrowheight objtable y 7)
    68. (SETQ X (+ X 1))
    69. (SETQ Y (+ Y 1))
    70. )
    71. (vla-setcolumnwidth objtable 0 55)
    72. (vla-setcolumnwidth objtable 1 170)
    73. (command "_zoom" "e")
    74. ); end AH defun
    75. (AH:dwgindex)
    76. (princ)
    回复

    使用道具 举报

    180

    主题

    639

    帖子

    463

    银币

    中流砥柱

    Rank: 25

    铜币
    897
    发表于 2022-7-5 15:43:47 | 显示全部楼层
    嘿,比格尔,谢谢你的代码示例。我现在正在看。但当我尝试时,它在这一行失败了:
    162634iz4c0y1ryahar27z.jpg
    回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-5 15:49:04 | 显示全部楼层
    您是否更改了块名(setq bname“DA1DRTXT”)和标记名,它们都是硬编码的,以满足我的需要。这更多的是一个例子,你需要分拆和改变,以适应你的情况。
    回复

    使用道具 举报

    180

    主题

    639

    帖子

    463

    银币

    中流砥柱

    Rank: 25

    铜币
    897
    发表于 2022-7-5 15:54:09 | 显示全部楼层
    嘿,比格尔,是的,我发现这就是我测试代码时遇到的问题。我将变量bname的值更改为我正在测试的块的名称,它起了作用,但没有得到我想要的结果。我正在研究李·麦克的TCOUNT代码,因为我认为它更多的是一个简单的文本搜索。我遇到的问题是,计算文本的代码也计算我不想包含的文本。例如,我使用了一个块,它有两个附加属性,我只在数据表中使用其中一个属性。
     
    我还研究了DATAEXTRATION命令,因为我读过的几篇文章将其作为累积计数的首选方法。与AutoCAD一样,完成给定任务的方法不止一种。
    回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-5 16:01:05 | 显示全部楼层
    我发布的示例中,块有大约12个属性作为标题块。我搜索标签名。
    1. (setq tag2 "DRG_NO") ;attribute tag name
    2. (setq tag3 "WORKS_DESCRIPTION") ;attribute tag name
    3. ..............
    4. (if (= tag2 (strcase (vla-get-tagstring att)))
    5. ............
    回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-5 16:08:04 | 显示全部楼层
    Bill发布了一个样例dwg,可以使用nentsel拾取属性,然后查看块而不是硬代码。
     
    1. (entget (car (nentsel)))
    2. ((-1 . <Entity name: 7ffffb7e210>)
    3. (0 . "ATTRIB") picked an attribute
    4. (1 . "PRELIMINARY DRAWING") text value of attribute
    5. (2 . "DRAWING_STATUS") tag name
    回复

    使用道具 举报

    180

    主题

    639

    帖子

    463

    银币

    中流砥柱

    Rank: 25

    铜币
    897
    发表于 2022-7-5 16:12:27 | 显示全部楼层
    比加尔,
     
    这是我正在努力解决的问题之一。我想做的是能够选择其中的一个或多个,并有一个像李Mac的文本计数程序中建立的数据表。它工作,但它也计算“FE1.1”字段,这不是我想要的。
    图纸1.dwg
    回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-5 16:18:17 | 显示全部楼层
    这可能是一个潮湿的周末,所以应该有一些时间观看这个空间。
     
    好的,我认为应该已经有一些东西了,比如李的tcount,选择所有的块,列出所有属性,并对列表进行排序。
     
    ((SLD-01)(SLD-01)(SLD-02)(SLD-02)(SLD-02))因此有2个SLD-01和3个SLD-02,依此类推
     
    然后,只要通过每次名称更改时重置列表来填充表。
     
    我不知道为什么你的门挡不能作为表中的多属性(即三列)来完成。
     
    ((门1把手1)(门1把手1)(门1把手1)(门1把手1)(门1把手2))带把手1的3个门1,带把手2的1个门1
     
    这是你想要的吗?你可以有2个以上的属性,门把手1金色,门把手1黄铜。只需要知道写一个更好的版本第一次去。
     
    它可能是一个通用的例程,而不是硬编码的max No属性?
     
    数据提取浮现在脑海中。
    162636o3c7fj3d3uic3fjb.jpg
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-14 21:04 , Processed in 3.200420 second(s), 75 queries .

    © 2020-2025 乐筑天下

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