乐筑天下

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

[编程交流] 将属性添加到LIS中的块

[复制链接]

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 10:31:47 | 显示全部楼层 |阅读模式
使用ENTMAKE“attdef”向块添加属性时出错。
 
我做错了什么?
 
  1. ;makes a block and inserts to drawing
  2. (defun C:test_blk()
  3. (setq x 4 y 4)
  4. (setq ot 0.3 )
  5. (if (= ct nil) (setq ct 1))  
  6. (setvar "CMDECHO" 0)
  7. (and
  8.    (not (tblsearch "BLOCK"
  9.    (setq blk_nm (strcat "SP" (rtos ct 2 2)))))
  10.    (entmake (list (cons 0 "BLOCK")
  11.              (cons 2 blk_nm)
  12.              (list 10 0 0 0)
  13.              (cons 70 0)))
  14.    
  15.   (entmake (list (cons 0 "3DFACE")(cons 8 "0")
  16.                      (list 10 0 0 0) ;First corner
  17.              (list 11 x 0 0) ;Second corner
  18.                      (list 12 x y 0) ;Third corner
  19.              (list 13 0 y 0))) ; Fourth corner
  20.   (entmake (list (cons 0 "TEXT") ;***
  21.               (cons 1 "P10") ;Default value (the string itself)
  22.               (cons 6 "BYLAYER")
  23.               (cons 7 "STANDARD") ;Text style name
  24.               (cons 8 "0")
  25.               (cons 10 (list (+ ot) ot 0.0)) ;First alignment point
  26.               ;(cons 11 (list 0.0 0.0 0.0)) ;***
  27.               (cons 39 0.0)
  28.               (cons 40 1.5) ;Text height
  29.               (cons 41 1.0) ;Relative X scale factor
  30.               (cons 50 0.0) ;Text rotation
  31.               (cons 51 0.0) ;Oblique angle (
  32.               (cons 62 256)
  33.               (cons 210 (list 0.0 0.0 1.0))))
  34. ;;;(entmake (list (cons 0 "ATTDEF") ;
  35. ;;;               (cons 8 "0")
  36. ;;;               (cons 10 (list ot (+ y ot) 0)) ;Text start point
  37. ;;;               (cons 40 2) ;Text height
  38. ;;;               (cons 1 "55") ;Default value (string)
  39. ;;;               (cons 2 "TAGNAME") ;Attribute tag (string; cannot contain spaces)
  40. ;;;               (cons 70 0)
  41. ;;;               (cons 73 0)
  42. ;;;               (cons 50 0) ;Text rotation (optional; default = 0)
  43. ;;;               (cons 41 1) ;Relative X scale factor
  44. ;;;               (cons 51 0)
  45. ;;;               (cons 7 "STANDARD") ;***
  46. ;;;               (cons 71 0)
  47. ;;;               (cons 72 0)
  48. ;;;               ;(cons 11 (list 0 0 0)) ;Alignment point
  49. ;;;               (cons 210 (list 0 0 1));Extrusion direction.
  50. ;;;               (cons 74 0)
  51. ;;;               (cons 62 256)
  52. ;;;               (cons 39 0)
  53. ;;;               (cons 6 "BYLAYER")))
  54. (entmake (list (cons 0 "ENDBLK")(cons 8 "0"))))
  55. (setq blk_rh (entlast))
  56. (while (eq blk_rh (entlast))
  57.         (command "_.INSERT" blk_nm))
  58. (setq ct (+ ct 1))
  59. );defun
回复

使用道具 举报

55

主题

293

帖子

239

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2022-7-6 10:40:26 | 显示全部楼层
它很好吃。
 
你能粘贴错误回复吗?
 
当做
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:53:37 | 显示全部楼层
查看块头调用的组70。如果遵循变量属性,则应设置2位。
 
此外,小数是无效的块名字符。(rtos ct 2 2)包括一个小数。
 
这些至少是一开始-大卫
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 10:58:54 | 显示全部楼层
将块插入dwg I后,键入“ATTEDIT”并选择块-没有可编辑的属性。
 
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 11:03:18 | 显示全部楼层
谢谢David-大部分代码来自您在沼泽中的帖子。
 
固定entmake块:
  1. (cons 70 2)

 
仍然需要让属性工作。
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 11:10:28 | 显示全部楼层
下面的代码似乎有效,但并不令人满意。
 
ENTMAKE attdef代码3要求键盘输入,而我希望它是在LISP(计数器)中生成的变量。
 
有没有可能使用ENTMAKE,或者我必须寻找其他解决方案?
 
  1. (defun c:test_blk ()
  2. (setq x 4 y 4)
  3. (setq ot 0.3 )
  4. (if (= ct nil) (setq ct 1))  
  5. ;BLOCK Header definition:
  6. (entmake '((0 . "BLOCK")
  7.         (2 . "blk_nm")
  8.         (70 . 2)
  9.         (10 0.0 0.0 0.0)))
  10. ;POINT marker definition:
  11. (entmake '((0 . "POINT")
  12.         (8 . "0")
  13.         (10 0.0 0.0 0.0)
  14.         (210 0.0 0.0 1.0)
  15.         (50 . 0.0)))
  16. (entmake (list (cons 0 "3DFACE")(cons 8 "0")
  17.                      (list 10 0 0 0) ;First corner
  18.              (list 11 x 0 0) ;Second corner
  19.                      (list 12 x y 0) ;Third corner
  20.              (list 13 0 y 0))) ; Fourth corner
  21. ;Text ATTRIBUTE definition:
  22. (entmake
  23.    '((0 . "ATTDEF")
  24.      (8 . "0")
  25.      (10 0.3 4.3 0.0 ) ;First alignment point
  26.      (1 . "")
  27.      (2 . "num");Tag string (cannot contain spaces)
  28.      (3 . "number ??");Prompt string
  29.      (40 . 2.0)
  30.      (41 . 1.0)
  31.      (50 . 0.0)
  32.      (70 . 0)
  33.      (71 . 0)
  34.      (72 . 0)
  35.      (73 . 2))
  36. )
  37. ;BLOCK's ending definition:
  38. (entmake '((0 . "ENDBLK")))
  39.    (command "_.INSERT" blk_nm)
  40. )
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:20:15 | 显示全部楼层
试试这个
  1. (entmake
  2.   (list
  3.      (cons 0 "ATTDEF")
  4.      (cons 8 0)
  5.      etc...
  6.      (cons 3 [i]variable[/i]);variable should be string
  7.      etc.
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:30:17 | 显示全部楼层
这可能会为您指明正确的方向:
 
  1. (defun GenerateBlock ( name pt )
  2. (if (not (tblsearch "BLOCK" name))
  3.    (progn
  4.      (entmake
  5.        (list
  6.          (cons 0 "BLOCK")
  7.          (cons 2 name)
  8.          (cons 70 2)
  9.          (cons 10 '(0. 0. 0.))
  10.        )
  11.      )
  12.      (entmake
  13.        (list
  14.          (cons 0 "POINT")
  15.          (cons 8 "0")
  16.          (cons 10 '(0. 0. 0.))
  17.        )
  18.      )
  19.      (entmake
  20.        (list
  21.          (cons 0 "3DFACE")
  22.          (cons 10 '(0. 0. 0.))
  23.          (cons 11 '(4. 0. 0.))
  24.          (cons 12 '(4. 4. 0.))
  25.          (cons 13 '(0. 4. 0.))
  26.        )
  27.      )     
  28.      (entmake
  29.        (list
  30.          (cons 0 "ATTDEF")
  31.          (cons 8 "0")
  32.          (cons 10 '(0.3 4.3 0.0))
  33.          (cons 70 0)
  34.          (cons 1 "")
  35.          (cons 2 "NUM")
  36.          (cons 3 "Number: ")
  37.          (cons 40 2.0)
  38.        )
  39.      )
  40.      (entmake
  41.        (list
  42.          (cons 0 "ENDBLK")
  43.          (cons 8 "0")
  44.        )
  45.      )
  46.    )
  47. )
  48. (entmake
  49.    (list
  50.      (cons 0 "INSERT")
  51.      (cons 2 name)
  52.      (cons 10 pt)
  53.      (cons 66 1)
  54.    )
  55. )
  56. (entmake
  57.    (list
  58.      (cons 0 "ATTRIB")
  59.      (cons 10 pt)
  60.      (cons 1 "YourCounter")
  61.      (cons 2 "NUM")
  62.      (cons 40 2.0)
  63.      (cons 70 0)
  64.    )
  65. )
  66. (entmake
  67.    (list
  68.      (cons 0 "SEQEND")
  69.    )
  70. )
  71. )
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 11:36:10 | 显示全部楼层
谢谢李,
 
我会试试的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 18:13 , Processed in 0.504592 second(s), 70 queries .

© 2020-2025 乐筑天下

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