乐筑天下

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

[编程交流] 插入属性时出现问题

[复制链接]

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 07:07:36 | 显示全部楼层 |阅读模式
大家好,
 
我有一个lisp帮助我给出矩形的尺寸,如下所示:-
  1. (defun _vertices ( l )
  2. (if (eq "LWPOLYLINE" (cdr (assoc 0 l)))
  3.    (_vertices1 l)
  4.    (_vertices2 (entnext (cdr (assoc -1 l))))
  5. )
  6. )
  7. (defun _vertices1 ( l / p )
  8. (if (setq p (assoc 10 l))
  9.    (cons (cdr p) (_vertices1 (cdr (member p l))))
  10. )
  11. )
  12. (defun _vertices2 ( e )
  13. (if (eq "VERTEX" (cdr (assoc 0 (entget e))))
  14.    (cons (cdr (assoc 10 (entget e))) (_vertices2 (entnext e)))
  15. )
  16. )
  17. (defun _uniquefuzz ( l f )
  18. (if l
  19.    (cons (car l)
  20.      (_uniquefuzz
  21.        (vl-remove-if '(lambda ( x ) (equal x (car l) f)) (cdr l))
  22.        f
  23.      )
  24.    )
  25. )
  26. )
  27. (defun c:SNC ( / ss pl ptlst l-r-ptlst d-u-ptlst midl midr midd midu len bre sonar )
  28. (setq scbk (getfiled "Select Sonar Contact Block" "*.*" "dwg" 4))
  29.        (progn
  30.              (setq Bs (Getreal "\nScale factor for Sonar Contact Block <1>:"))
  31.       (if (= Bs Nil) (setq Bsc 1) (setq Bsc Bs)))
  32. (while (not ss)
  33.    (prompt "\nSelect polyline")
  34.    (setq ss (ssget "_+.:E:S:L" '((0 . "*POLYLINE"))))
  35. )
  36. (setq pl (ssname ss 0))
  37. (setq ptlst (_uniquefuzz (_vertices (entget pl)) 1e-)
  38. (setq l-r-ptlst (vl-sort ptlst '(lambda (a b) (< (car a) (car b)))))
  39. (setq d-u-ptlst (vl-sort ptlst '(lambda (a b) (< (cadr a) (cadr b)))))
  40. (setq midl (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (car l-r-ptlst) (cadr l-r-ptlst)))
  41. (setq midr (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (caddr l-r-ptlst) (cadddr l-r-ptlst)))
  42. (setq midd (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (car d-u-ptlst) (cadr d-u-ptlst)))
  43. (setq midu (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (caddr d-u-ptlst) (cadddr d-u-ptlst)))
  44. (setq len (distance midl midr))
  45. (setq bre (distance midd midu))
  46. [b](setq sonardimension (strcat (rtos len 2 1)
  47.          "m X "
  48.          (rtos bre 2 1)
  49.          "m X nmh"[/b]
  50. )
  51. )
  52. (setq Pnt (Getpoint "\n Specify Point:"))
  53. (command "insert" scbk pnt 1 1 0 sonardimension)
  54. (princ)
  55. )

 
我已将属性块作为附件附加
我希望突出显示的代码作为属性插入到lisp中
但命令即将结束。示例如下
  1. Command: snc
  2. Scale factor for Sonar Contact Block <1>:
  3. Select polyline
  4. Select objects:
  5. Specify Point:Unknown command "18.1M X 23.4M X NMH".  Press F1 for help.
  6. 0

 
请帮帮我
声纳接触。图纸
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:43:31 | 显示全部楼层
将ATTREQ设置为1
 
此外,确保具有属性的块,在这种情况下,“sonar”没有嵌套
 
块示例:
声纳合同
------->声纳
 
如果你不明白我说的嵌套是什么意思,就喊一声
 
  1. (defun c:SNC ( / ss pl ptlst l-r-ptlst d-u-ptlst midl midr midd midu len bre sonar )
  2. (if [b](not (tblsearch "BLOCK" "sonar"))[/b]
  3.                    (setq scbk (getfiled "Select Sonar Contact Block" "*.*" "dwg" 4))[b])[/b]
  4. .......
  5. (command "insert" [b][color="blue"]"sonar"[/color][/b] pnt 1 1 0 sonardimension)
  6. ....
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 07:48:54 | 显示全部楼层
非常感谢pBe。。。。。。。。。。效果很好,你们真是天才
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:26:26 | 显示全部楼层
 
对你来说很好,只要确保通过GetField选择的文件确实包含属性,即使块的名称不是“sonar”,那么你可以使用
  1. (command [b][color="blue"]scbk[/color][/b]  pnt 1 1 0 sonardimension)

 
但是,现在设置代码的方式是,当所选文件与命令行上设置的条件不匹配时,它会给出一个错误,例如1属性/非非非非强制缩放块和Attreq设置为1,当您看到它时就会知道
 
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-15 15:49 , Processed in 1.235437 second(s), 72 queries .

© 2020-2025 乐筑天下

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