乐筑天下

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

[编程交流] 打断/删除bl内的Pline

[复制链接]

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:49:17 | 显示全部楼层
 
 
如果没有lisp的帮助,块本身不会断开线。该教程中显示的属性将提供坐标,以便lisp知道在哪里断开线。如果没有Lisp程序,方块就没有魔力。可能有不同的方法,但不是没有一个程序。如果你愿意学习,那么所给的教程很容易理解。如果你想要一个为你编写的程序,尽管没有保证,但其他人可能愿意为你编写。学会如何为自己做这些事情的能力是无价的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:52:52 | 显示全部楼层
 
你不愿意自己先试试吗?
回复

使用道具 举报

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 11:57:58 | 显示全部楼层
我有一些代码可以通过选择块的外边缘来打断/擦除Pline,但我更愿意跳过选择块并自动执行。
我记不起是在哪里找到代码的(可能是在这个网站上)。我试图修改代码,但没有成功。
 
代码:
 
(defun dtr(a);度到弧度
(*pi(/a 180.0)))
(defun rtd(a);弧度到度
(/(*180.0)π)
(defun find_attr1();查找选定对象的几个属性的子例程
(setq pt6(cadr lin))
(setq lim(car lin))
(setq lin1(entget lim))
(setq lin2(cdr(assoc 2 lin1)))
(setq att8(cdr(assoc 8 lin1)))
(setq lin10(cdr(assoc 10 lin1)))
(if(=nil(cdr(assoc 50 lin1)))(funky1))
(如果(/=nil(cdr(assoc 50 lin1)))(setq ang1(rtd(setq lin50(cdr(assoc 50 lin1)))))))
(defun poleped_box();子程序trimpoled用于从极点或其他wblock清除线路
(setq f1(极坐标lin10 lin50(*q\u scale id\u scale distemp)))
(setq f3(极性lin10(+lin50 pi)(*q\u scale id\u scale distemp)))
(setq p1(极轴f1(dtr(+90 ang1))(*q\u scale id\u scale distemp)))
(setq p2(极轴f1(dtr(+270 ang1))(*q\u scale id\u scale distemp)))
(setq p3(极坐标f3(dtr(+90 ang1))(*q\u scale id\u scale distemp)))
(setq p4(极坐标f3(dtr(+270 ang1))(*q\u scale id\u scale distemp)))
(defun poleped_box2();子程序trimpoled用于从极点或其他wblock清除线路
(setq distemp 5)
(poleped_盒)
(setvar“CLAYER”“0”)
(命令“layer”“f”att8“”)
(命令“pline”p1“w”“0”“0”p2 p4 p3“c”)
(setq ce(ssget“L”))
(setq distemp 4)
(poleped_盒)
(setvar“CLAYER”“0”)
(命令“layer”“f”att8“”)
(命令“trim”ce““f”p1 p2 p4 p3”)
(命令“layer”t“att8”)
(命令“ERASE”(ssname ce 0)”)
(命令“”))
 
;====以下是用于修剪电杆======
(defun trimpole();从杆塔或ped清洁线路的例行程序(注:运行两次)
(setq id_比例1)
(setq q_比例12)
(princ“\nZoom in to Pole/Ped”)
(命令“zoom”“w”pause pause“”)
(setq lin(entsel“拾取磁极外边缘/Ped”)(ERPRI)
(查找属性1)
(poleped_box2)
(命令“zoom”“p”)
(命令“-pan”)
(setq lin50(+lin50 hp))
(poleped_box2))
;====端部装饰========
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:01:12 | 显示全部楼层
教程中的代码将自动执行此操作。
回复

使用道具 举报

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 12:02:27 | 显示全部楼层
感谢Buzzrd的回复。
我确实尝试了Afro-Lisp代码,它运行良好,但我正在使用提供给我的块,不允许修改它们。这就是为什么我在寻找其他选择。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:07:12 | 显示全部楼层
 
我不确定是否有其他方法可以做到这一点。可以沿块上的给定点指定坐标。我认为同样的代码仍然可以应用,但必须进行一些修改。Afralisp上描述的方法将是一种更简单的方法。等一会儿,看看会发生什么。也许其他人会生产一些你可能觉得更合适的产品。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:09:55 | 显示全部楼层
当然还有其他方法可以实现这一点——我个人不喜欢使用AfraLISP方法——因为它涉及修改原始块。
 
但是,如果你知道块的尺寸,那么你可以轻松地创建一个LISP来为你自动打断。LISP需要包含一组命令来插入块,还需要知道在线路上的什么位置插入块。
 
LISP需要知道线的角度和块的尺寸,以便确定断点。然后,它只是使用BREAK命令的一个例子。
 
希望这能让你开始。
 
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:12:38 | 显示全部楼层
 
这是Tony Hotchkiss的Visual Lisp方法,它不需要属性。
PV符号。拉链
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:14:03 | 显示全部楼层
我认为那不是VL Buzzard
 
但是,它使用了我在上面的帖子中解释的相同想法。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 12:17:55 | 显示全部楼层
 
它只使用一条VL线:
  1.   (setq pos (vl-position bnam block-list))

 
在任何情况下,此程序中都不需要属性。这是cabltv的担忧之一,因为他不被允许修改他的区块。
我想我还是会把它放在那里。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:40 , Processed in 0.328348 second(s), 71 queries .

© 2020-2025 乐筑天下

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