乐筑天下

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

[编程交流] 插入块的最佳方式

[复制链接]

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 18:48:22 | 显示全部楼层 |阅读模式
你好
插入搜索路径中已存在属性的块的最佳方法是什么
具有拾取旋转的选项
我用这个,但不能把波克层
  1. (command "insert" "blkname.dwg" "non" n   scx  scy (- 300(/(*( GETangle  p0 )200)PI))  ("attribu"))
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:00:58 | 显示全部楼层
您可以使用vla插入一个块,但如果您想坚持使用该代码位,您可以始终在该行之后添加该代码以更改层:
  1. (vla-put-layer (vlax-ename->vla-object (entlast)) "YOUR LAYER NAME HERE")
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 19:07:57 | 显示全部楼层
谢谢commandobill,好的,但是有没有其他方法插入带有属性的块
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:14:05 | 显示全部楼层
这是一个很好的例子。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:17:37 | 显示全部楼层
李在这里也有一些很好的添加属性的方法。
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 19:26:54 | 显示全部楼层
commandobill这种方式不成功,我认为是因为最后一个实体不是属性块,我得到一条消息{;错误:自动化错误。找不到键}
这是我的旧lisp,用来获取纵断面中任意点的高程
  1. (defun c:ff ()
  2. (setq angbs(getvar"angbase"))
  3. (setq aunts(getvar"aunits"))
  4. (setq insunt(getvar"insunits"))
  5. (if(null txth)
  6.    (setq txth 1.25))
  7.    (setq txthnew(getreal(strcat"\n enter text height<sc:1/1000-txth=2.5;sc:1/500-txth=1.25;sc:1/200-txth=0.5>:"
  8.                       "<" (rtos txth 2 2)">:")))
  9. (if txthnew(setq txth txthnew))
  10. (if(null scrt)
  11.    (setq scrt 1))
  12. (setq scrtnew(getreal(strcat"\n enter scale ratio(vertical/horizental)"
  13.                      "<" (rtos scrt 2 2)">:")))
  14. (if scrtnew(setq scrt scrtnew))
  15.      
  16. (if(null dh)
  17.      (setq dh 0))
  18.      (setq dhnew (getreal(strcat"\n enter datum level:""<"(rtos dh 2 0)">:")))
  19.      (if dhnew(setq dh dhnew))
  20.   (initget 1)
  21.   (setq p0 (getpoint "\pick any point on datum line"))
  22.   (while
  23.     (setvar"blipmode"0)
  24.      (initget 1)
  25.      (setq n (getpoint "\n pick point to get elevation"))   
  26.     ;;;;;;;;;;;;;;;;;;;;;;;;
  27.            (setvar "angbase"(/ pi 2))
  28.            (setvar "aunits"2)
  29.            (setvar"insunits"6)
  30.     ;;;;;;;;;;;;;;;;;;;;;;;
  31.             (command "insert" "lvm.dwg" "non" n   txth  txth (- 300(/(*( getangle  n )200)PI))  (rtos (+ dh (/(-(cadr n)(cadr p0)) scrt)) 2 3))
  32.     ;(vla-put-layer (vlax-ename->vla-object (entlast)) "mark-level")
  33.     (setvar"aunits"aunts)
  34.     (setvar"angbase"angbs)
  35.     (setvar"insunits"insunt)
  36.      
  37.   )
  38. )

并附上方块
lvm。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:33:27 | 显示全部楼层
可能一个简单的do层首先期望层存在,这是库函数在其中爬行的地方,因为do层存在,然后可能是类似alanjt例程的东西。
 
  1. (command "-layer" "S" "yourlayername" "" "insert" "blkname.dwg" "non" n   scx  scy (- 300(/(*( GETangle  p0 )200)PI))  ("attribu"))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:37:20 | 显示全部楼层
你好
 
试试这个[未经测试的]程序,让我知道。
 
注意:添加所需的图层名称,如程序中红色所示,并带有图形的完整路径。
 
  1. (defun c:ff (/ *error* vals dhnew n p scrtnew txthnew ang ent e lay)
  2. (defun *error* (x)
  3.    (if vals
  4.      (mapcar 'setvar '(angbase aunits insunits blipmode) vals)
  5.      )
  6.    (and x
  7.         (not (wcmatch (strcase x) "*BREAK*,*CANCEL*,*EXIT*"))
  8.         (princ (strcat "\n ** Error : " x " **"))
  9.         )
  10.    )
  11. (setq vals (mapcar 'getvar '(angbase aunits insunits blipmode)))
  12. (if (not txth)
  13.    (setq txth 1.25)
  14.    )
  15. (if (not scrt)
  16.    (setq scrt 1)
  17.    )
  18. (if (not dh)
  19.    (setq dh 0)
  20.    )
  21. (if (and (setq filename (findfile[color="red"] "lvm.dwg"[/color])) ;; Add the full of the drawing
  22.           (tblsearch "LAYER" (setq lay [color="red"]"0"[/color])) ;; Replace the "0" layer name with your desired layer name.
  23.           (progn
  24.             (initget 6)
  25.             (cond ((setq txthnew
  26.                           (getreal
  27.                             (strcat
  28.                               "\n enter text height<sc:1/1000-txth=2.5;sc:1/500-txth=1.25;sc:1/200-txth=0.5>: <"
  29.                               (rtos txth 2 2)
  30.                               " >:"
  31.                               )
  32.                             )
  33.                          )
  34.                    (setq txth txthnew)
  35.                    )
  36.                   (t (setq txthnew txth))
  37.                   )
  38.             )
  39.           (progn
  40.             (initget 6)
  41.             (cond ((setq scrtnew
  42.                           (getreal
  43.                             (strcat
  44.                               "\nEnter scale ratio [vertical/horizental] < "
  45.                               (rtos scrt 2 2)
  46.                               " >:"
  47.                               )
  48.                             )
  49.                          )
  50.                    (setq scrt scrtnew)
  51.                    )
  52.                   (t (setq scrtnew scrt))
  53.                   )
  54.             )
  55.           (progn
  56.             (initget 6)
  57.             (cond ((setq dhnew (getreal (strcat "\n enter datum level < "
  58.                                                 (rtos dh 2 0)
  59.                                                 " > :"
  60.                                                 )
  61.                                         )
  62.                          )
  63.                    (setq dh dhnew)
  64.                    )
  65.                   (t (setq dhnew dh))
  66.                   )
  67.             )
  68.           (progn
  69.             (initget 1)
  70.             (setq p (getpoint "\pick any point on datum line"))
  71.             )
  72.           )
  73.    (progn
  74.      (mapcar 'setvar
  75.              '(angbase aunits insunits blipmode)
  76.              (list (/ pi 2) 2 6 0)
  77.              )
  78.      (while (progn
  79.               (initget 1)
  80.               (setq n (getpoint "\nPick point to get elevation"))
  81.               (setq ang (getangle n "\nSpecify Rotation angle :"))
  82.               (setq ent (entlast))
  83.               )
  84.        (command "_.-insert"
  85.                 filename
  86.                 "non"
  87.                 n
  88.                 txth
  89.                 txth
  90.                 (- 300 (/ (* ang 200) pi))
  91.                 (rtos (+ dh (/ (- (cadr n) (cadr p)) scrt)) 2 3)
  92.                 )
  93.        (if (not (eq ent (setq e (entlast))))
  94.            (entmod (append (entget e) (list (cons 8 lay))))
  95.          )
  96.        )
  97.      )
  98.    )
  99. (*error* nil)
  100. (princ)
  101. )
回复

使用道具 举报

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 19:42:24 | 显示全部楼层
谢谢你做得很好,我会修改我所有的旧lisp以同样的方式工作
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:52:49 | 显示全部楼层
 
不客气,只要问一下你是否需要任何澄清或添加到程序中即可
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:55 , Processed in 1.263969 second(s), 72 queries .

© 2020-2025 乐筑天下

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