乐筑天下

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

[编程交流] 单击“打断并创建间隙”

[复制链接]

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:19:54 | 显示全部楼层
我试过了,但按“回车”后出现错误:“错误:没有函数定义:SSREDRAW”
 
rcmob公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:22:28 | 显示全部楼层
嘿伙计,
 
给你一个快速而肮脏的选择
 
  1. (defun c:qBrk (/ off pt ent ang)
  2. (vl-load-com)
  3. (initget 7)
  4. (setq off (getdist "\nSpecify Break Distance: "))  
  5. (while (and (setq pt (getpoint "\nSelect Point to Break: "))
  6.              (setq ent (car (nentselp pt))))
  7.    (setq ang (angle '(0 0 0)
  8.                (vlax-curve-getFirstDeriv ent
  9.                  (vlax-curve-getParamatPoint ent
  10.                    (setq pt (vlax-curve-getClosestPointto ent pt))))))
  11.    (command "_.break" (list ent pt) "_F" "_non"
  12.             (polar pt ang (/ off 2.)) "_non" (polar pt (+ pi ang) (/ off 2.))))
  13. (princ))
回复

使用道具 举报

57

主题

351

帖子

294

银币

后起之秀

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

铜币
285
发表于 2022-7-6 13:25:12 | 显示全部楼层
在这里,它是一个有点清理去掉了名称的东西,它似乎根本没有影响它,现在的空间大小是基于dimscale(我想请有人纠正我,如果我错了),这是最有可能的变化,如果你有一个设定的大小,使它每次。
  1. ;; This lisp breaks a two lines which cross each other
  2. (defun c:bc ()
  3. (setq scl (getvar "dimscale" ))
  4. (setq dis (* scl 0.052))
  5. (setq lne (entsel "\nPick line to break:")) (terpri)
  6. (setq pnt (getpoint "\nPick break point:" )) (terpri)
  7. (setq pick (entget (car lne)))
  8. (setq pt1 (cdr (assoc 10 pick)))
  9. (setq pt2 (cdr (assoc 11 pick)))
  10. (setq a (angle pt1 pt2))
  11. (setq ang ( * a 57.3))
  12. (setq bpt1 (polar pnt a dis))
  13. (setq bpt2 (polar pnt (- a pi) dis))
  14. (command "break" lne "f" bpt1 bpt2 )
  15. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:30:22 | 显示全部楼层
我之前帖子的扩展版本:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:qBrk [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* doc vl ov pt ent ang[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b]lee[b][color=RED])[/color][/b]
  4.    [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  5.    [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] ov [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]setvar[/color][/b] vl ov[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  6.    [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] lee[b][color=RED])[/color][/b] [b][color=#ff00ff]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7.      [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"\n** Error: "[/color][/b] lee [b][color=#ff00ff]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  8.    [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  9. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  10.              [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  11.        vl [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b][b][color=RED])[/color][/b] ov [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]getvar[/color][/b] vl[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  12. [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b]
  13. [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] *Mac [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *Mac [b][color=#009999]10.0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  14. [b][color=RED]([/color][/b][b][color=BLUE]initget[/color][/b] [b][color=#009900]4[/color][/b][b][color=RED])[/color][/b]
  15. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *Mac
  16.    [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b]
  17.             [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"\nSpecify Break Distance <"[/color][/b]
  18.               [b][color=RED]([/color][/b][b][color=BLUE]vl-princ-to-string[/color][/b] *Mac[b][color=RED])[/color][/b] [b][color=#ff00ff]"> : "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]*Mac[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  19. [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#ff00ff]"\nSelect Point to Break: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  20.              [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ent [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]nentselp[/color][/b] pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  21.    
  22.    [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-error-p[/color][/b]
  23.             [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-curve-getEndParam[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] ent[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  24.           [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n** Cannot Break that Object **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  25.          
  26.          [b][color=RED]([/color][color=Blue]t[/color][/b]
  27.           [b][color=RED]([/color][/b][b][color=BLUE]vla-StartUndoMark[/color][/b] doc[b][color=RED])[/color][/b]
  28.           [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ang [b][color=RED]([/color][/b][b][color=BLUE]angle[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b]
  29.                       [b][color=RED]([/color][/b][b][color=BLUE]vlax-curve-getFirstDeriv[/color][/b] ent
  30.                         [b][color=RED]([/color][/b][b][color=BLUE]vlax-curve-getParamatPoint[/color][/b] ent
  31.                           [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]vlax-curve-getClosestPointto[/color][/b] ent pt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  32.           [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b]
  33.           [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.break"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] ent pt[b][color=RED])[/color][/b] [b][color=#ff00ff]"_F"[/color][/b]
  34.             [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt ang [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *Mac [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=BLUE]pi[/color][/b] ang[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *Mac [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  35.           [b][color=RED]([/color][/b][b][color=BLUE]vla-EndUndoMark[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  36. [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]setvar[/color][/b] vl ov[b][color=RED])[/color][/b]
  37. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  38.             
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:31:14 | 显示全部楼层
李·麦克。。。
 
你的代码正是我需要的!
 
感谢所有帮助过我的人!
 
rcmob公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:34:23 | 显示全部楼层
 
 
没问题-有点得意忘形
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:38:24 | 显示全部楼层
好的,我已经用了几天了,效果很好,但有一个bug。。。
 
如果我尝试在圆上使用它,而不是在我选择的点上创建间隙,它实际上会留下一个选定长度的弧,并删除圆的其余部分。。。基本上,它的作用与直线上完全相反。。。
 
有什么线索吗?
 
rcmob公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:42:35 | 显示全部楼层
 
是的,我的函数只适用于Break命令-当在圆上使用时,它将生成一个圆弧。。。
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:45:21 | 显示全部楼层
我懂了。。。这就解释了。。。
 
有没有其他解决方案可以像代码在直线上一样在圆上工作?
 
rcmob公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:47:52 | 显示全部楼层
也许是这个代码?
 
http://www.cadtutor.net/forum/showthread.php?t=38562
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 04:44 , Processed in 0.365381 second(s), 70 queries .

© 2020-2025 乐筑天下

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