乐筑天下

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

[编程交流] 在“角度到”下插入块

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:10:22 | 显示全部楼层 |阅读模式
大家好,
 
我刚开始学习lisp,所以我需要一些插入块的帮助。。。
我有一个块(我想插入)以dwg格式存储,我想将该块插入到选定线的中点(你可以在附加图像中看到我想要的结果)。
我的块由两条平行线组成,我希望它们以与选定线平行的方式插入到选定线的中点。
到目前为止,我已经找到了这样的东西。。。这还不错,但我想选择一条线而不是插入点,用这个lisp用户定义插入角度,我希望我的块线始终与所选线垂直。
我喜欢在这个例子中,当我启动命令时,我不必首先打开我的块,在插入一个块后,我保持命令状态,以便插入另一个块。
 
  1. (defun c:MyBlock (/ pt)
  2. (while (setq pt (getpoint "\nPick Insertion point."))
  3.    (command "-insert" "name_of_my_block" "_non" pt "" pause)
  4. )
  5. (princ)
  6. )

 
所以如果有人能帮助我,我将非常感激。。。
131025i00bq4q5hsoantbi.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:20:36 | 显示全部楼层
也许:
 
  1. (defun c:ins (/ *error* bNme doc spc ent uflag mpt ang)
  2. (vl-load-com)
  3. (setq bNme "test" ) ;; Block Name
  4. (defun *error* (msg)
  5.    (and uflag (vla-EndUndoMark doc))
  6.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  7.        (princ (strcat "\n** Error: " msg " **")))
  8.    (princ))         
  9. (setq doc (vla-get-ActiveDocument
  10.              (vlax-get-Acad-Object))
  11.       
  12.        spc (if (zerop
  13.                  (vla-get-activespace doc))
  14.              (if (= (vla-get-mspace doc) :vlax-true)
  15.                (vla-get-modelspace doc)
  16.                (vla-get-paperspace doc))
  17.              (vla-get-modelspace doc)))
  18. (if (or (tblsearch "BLOCK" bNme)
  19.          (setq bNme (findfile (strcat bNme ".dwg"))))
  20.    (while
  21.      (progn
  22.        (setq ent (entsel "\nPick Line for insertion: "))
  23.        (cond (  (eq 'ENAME (type (car ent)))
  24.                 (if (vl-catch-all-error-p
  25.                       (vl-catch-all-apply 'vlax-curve-getEndParam (list (car ent))))
  26.                   (princ "\n** Invalid Object Selected **")
  27.                   (progn
  28.                     (setq uflag (not (vla-StartUndoMark doc)))
  29.                     (setq mpt (vlax-curve-getPointatParam (car ent)
  30.                                 (/ (vlax-curve-getEndParam (car ent)) 2.))
  31.                           
  32.                           ang (angle '(0 0 0) (vlax-curve-getFirstDeriv (car ent)
  33.                                                 (vlax-curve-getParamatPoint (car ent) mpt))))
  34.                     (vla-InsertBlock spc (vlax-3D-point mpt) bNme 1. 1. 1. ang)
  35.                     (setq uflag (vla-EndUndoMark doc)) t))))))
  36.    (princ "\n** Block Definition not Found **"))
  37. (princ))
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:22:53 | 显示全部楼层
这是非常接近。。。但我的方块的线条和线条平行,它们应该在插入线的前面。(这是一个结果的图像)
是否可以一次选择更多行,以便只执行一次命令就可以将块插入到每行中。。。或者在块被插入到所选行后,我可以选择另一行?
 
Thanx寻求帮助。。。我真的很感激!
 
附笔。
 
注意,它并没有将块插入到直线的中点,而是将块插入到我选择直线的点。。。
131027giz5514y44i1cps2.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:30:47 | 显示全部楼层
我不知道你们街区的方向。我发布的代码将插入块,旋转垂直于对象上单击点的切线向量。
 
至于重复-这本来就应该在那里,只是错过了一个“t”
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:38:44 | 显示全部楼层
以上代码已更新
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:43:12 | 显示全部楼层
 
对不起,我应该多读一点。。。没有意识到这是中点。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:47:54 | 显示全部楼层
代码再次更新
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:57:12 | 显示全部楼层
我的方块是这样放置的。。。它是垂直的。。。如果这个帮助是你。。。
131029nrk9fycvyni5oqnh.jpg
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:02:49 | 显示全部楼层
你就是那个男人!!!
它有效!!!
 
谢谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:08:15 | 显示全部楼层
欢迎你,伙计,很高兴我们最后到了那里
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 07:00 , Processed in 1.542178 second(s), 87 queries .

© 2020-2025 乐筑天下

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