乐筑天下

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

[编程交流] 难题-折线Lis

[复制链接]

12

主题

29

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 12:06:49 | 显示全部楼层 |阅读模式
难题-需要多段线LISP
 
 
AutoCAD 2007
我有很多棘手的问题/要求,我目前正在寻找一些LISP来解决它们。我一直在网上搜索我需要的lisps,虽然我已经找到了一些东西,但我仍然有一些东西,我似乎无法找到确切的我要找的东西。我想借此机会提前感谢每一位对我的问题有意见的人,感谢他们给予我的任何帮助。
 
 
1)全局宽度多段线-查找lisp,该lisp将询问所需的多段线全局宽度,然后要求您选择需要设置为该特定宽度的多段线。
 
2)多段线连接(在一个步骤中)-查找lisp,该lisp允许您选择多条直线、圆弧、现有多段线并自动将其全部转换为多段线,将“连接模糊”设置为0,并在一个步骤中连接所有选定的部分以形成一条连接的多段线。
 
3.)将圆弧夹点添加到多段线-查找允许您将顶点夹点和圆弧夹点添加到多段线的列表。我找到了一个。vlx文件,允许我将顶点添加到多段线,但我希望能够有一个lisp,将允许我这样做,但也添加弧夹点。
 
4.)折线闭合-寻找一步lisp来闭合折线
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:18:04 | 显示全部楼层
1)
 
  1. (defun c:pwid  (/ i ss ent)
  2. (vl-load-com)
  3. (or *wid (setq *wid 0.0))
  4. (if (and (setq i -1 ss (ssget "_:L" '((0 . "LWPOLYLINE"))))
  5.           (not (initget 4))
  6.           (setq *wid (cond (  (getdist (strcat "\nSpecify New Width <"
  7.                                                (vl-princ-to-string *wid) "> : "))) (*wid))))
  8.    (while (setq ent (ssname ss (setq i (1+ i))))
  9.      (vla-put-ConstantWidth (vlax-ename->vla-object ent) *wid)))
  10. (princ))
  11.          
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:25:28 | 显示全部楼层
4)
 
  1. (defun c:cls (/ i ss ent)
  2. (vl-load-com)
  3. (if (setq i -1 ss (ssget "_:L" '((0 . "*POLYLINE"))))
  4.    (while (setq ent (ssname ss (setq i (1+ i))))
  5.      (vla-put-closed (vlax-ename->vla-object ent) :vlax-true)))
  6. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:35:20 | 显示全部楼层
2).... 在此处搜索。。。有很多货物!
 
3)  http://www.theswamp.org/index.php?topic=30170.0
 
 
将来,最好在创建线程之前搜索程序。。。
回复

使用道具 举报

12

主题

29

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 12:49:12 | 显示全部楼层
谢谢大家的帮助。
妈的,李,你真棒。非常感谢你的帮助。
现在,我已经回答了4个折线问题中的3个。
一步中的多段线连接是最后一步。相信我,我已经搜索过了,我找到了不少,但没有一个我百分之百地找到了工作。这是我发现的最好的一个,但由于某些原因,它只适用于直线。每当我试图把一个弧加入到我的直线上时,Lisp程序就会反弹。这就是我去论坛的原因。我在Lisp程序中看到“弧”。
对不起,我不知道如何用窗口括住Lisp程序。代码:我被告知用[]附上文本,但没有起作用
 
 
 
(定义c:polyjoin(/sspj FRSTANT FRSTANDDAT)
(“nPL连接…”原则)
(princ“nSelect objects…”)
(setq sspj(ssget))
(setq FRSTANT(ssname sspj 0)
FRSTENDAT(entget frstent)
) ;_ setq结束
(条件
((=(cdr(assoc 0 frstentdat))“多段线”)
(命令“\u pedit”frstent“\u j”sspj“”)
)
((=(cdr(assoc 0 frstentdat))“LWPOLYLINE”)
(命令“\u pedit”frstent“\u j”sspj“”)
)
((=(cdr(assoc 0 frstentdat))“行”)
(命令“\u pedit”frstent“\u y”“\u j”sspj”“”“)
)
((=(cdr(assoc 0 frstentdat))“ARC”)
(命令“\u pedit”frstent“\u y”“\u j”sspj”“”“)
)
(T(princ“nCan not join this!!…”)
) ;_ 条件结束
(普林斯)
) ;_ defun结束
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:53:19 | 显示全部楼层
使用标记将文本括起来。
 
(标签中没有空格)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:04:25 | 显示全部楼层
  1. (defun c:pljoin (/ *error* vl ov ss)
  2. (defun *error* (msg)
  3.    (and ov (mapcar 'setvar vl ov))
  4.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  5.        (princ (strcat "\n** Error: " msg " **")))
  6.    (princ))
  7. (setq vl '("CMDECHO" "PEDITACCEPT") ov (mapcar 'getvar vl))
  8. (mapcar 'setvar vl '(0 1))
  9. (if (setq ss (ssget "_:L" '((0 . "LINE,ARC,LWPOLYLINE"))))
  10.    (vl-cmdf "_.pedit" "_M" ss "" "_J" 0.0 ""))
  11. (mapcar 'setvar vl ov)
  12. (princ))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 13:12:48 | 显示全部楼层
更改宽度:
http://www.cadtutor.net/forum/showpost.php?p=271429&postcount=14
您将需要此子程序:
http://www.cadtutor.net/forum/showpost.php?p=271389&postcount=26
 
连接选定行:
http://www.cadtutor.net/forum/showpost.php?p=271444&postcount=21
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:15 , Processed in 0.445494 second(s), 68 queries .

© 2020-2025 乐筑天下

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