明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: pizi158545086

[源码] 求助,有大神帮忙写一个延伸闭合线或者矩形的lsp吗?

[复制链接]
发表于 2021-12-13 18:03 | 显示全部楼层
对,应该是9楼的效果才对

点评

挺简单的,就是讲点技巧  发表于 2021-12-13 20:27
回复

使用道具 举报

发表于 2021-12-13 20:22 | 显示全部楼层
本帖最后由 夏生生 于 2021-12-14 11:47 编辑

试试
  1. (vl-load-com)
  2. (defun c:test (/    xty-get-dxf    xty-tr-ss2lst
  3.          xty-tr-value2list     EN    LST     PARAM
  4.          PT1    PT2       PT3  PT4     PTA
  5.          PTB    PTC       SS    TEMP
  6.         )
  7.   (defun xty-get-dxf (code en) (cdr (assoc code (entget en))))
  8.   (defun xty-tr-ss2lst (ss form / n en lst)
  9.     (repeat (setq n (sslength ss))
  10.       (setq en (ssname ss (setq n (1- n))))
  11.       (setq lst (cons en lst))
  12.     )
  13.     (setq lst (reverse lst))
  14.     (if  form
  15.       lst
  16.       (mapcar (function vlax-ename->vla-object) lst)
  17.     )
  18.   )
  19.   (defun xty-tr-value2list (value)
  20.     (setq value  (vl-catch-all-apply
  21.       (function vlax-safearray->list)
  22.       (list (vlax-variant-value value))
  23.     )
  24.     )
  25.     (if  (= (type value) (function LIST))
  26.       value
  27.       nil
  28.     )
  29.   )
  30.   (setq  pt1 (getpoint "\n栏选起点:")
  31.   pt2 (getpoint pt1 "\n栏选终点:")
  32.   ss  (ssget "f" (list pt1 pt2) '((0 . "lwpolyline")))
  33.   lst (xty-tr-ss2lst ss nil)
  34.   en  (vlax-ename->vla-object
  35.         (ssname (ssget ":e:s" '((0 . "*line"))) 0)
  36.       )
  37.   pt3 (if  (= (vla-get-ObjectName en) "AcDbXline")
  38.         (xty-tr-value2list(vla-get-basepoint en))
  39.         (vlax-curve-getstartpoint en)
  40.       )
  41.   pt4 (if  (= (vla-get-ObjectName en) "AcDbXline")
  42.         (xty-tr-value2list(vla-get-secondpoint en))
  43.         (vlax-curve-getendpoint en)
  44.       )
  45.   )
  46.   (foreach n lst
  47.     (setq temp (xty-tr-value2list (vla-explode n)))
  48.     (foreach m temp
  49.       (setq pta  (xty-tr-value2list (vla-get-startpoint m))
  50.       ptb  (xty-tr-value2list (vla-get-endpoint m))
  51.       )
  52.       (if (inters pt1 pt2 pta ptb)
  53.   (progn (setq ptc   (inters pt3 pt4 pta ptb nil)
  54.          pta   (if (< (distance ptc pta) (distance ptc ptb))
  55.            pta
  56.            ptb
  57.          )
  58.          param (fix (vlax-curve-getparamatpoint n pta))
  59.          )
  60.          (vla-put-coordinate
  61.      n
  62.      param
  63.      (vlax-safearray-fill
  64.        (vlax-make-safearray vlax-vbDouble '(0 . 1))
  65.        (list (car ptc) (cadr ptc))
  66.      )
  67.          )
  68.   )
  69.       )
  70.       (vla-delete m)
  71.     )
  72.   )
  73. )


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 2明经币 +2 收起 理由
pizi158545086 + 1 很给力!
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-12-13 20:57 | 显示全部楼层

非常感谢帮忙,函数错误是什么回事呢,可以再帮忙下吗
回复

使用道具 举报

发表于 2021-12-13 21:28 | 显示全部楼层
pizi158545086 发表于 2021-12-13 20:57
非常感谢帮忙,函数错误是什么回事呢,可以再帮忙下吗

告知我错误
回复

使用道具 举报

发表于 2021-12-13 21:29 | 显示全部楼层
pizi158545086 发表于 2021-12-13 20:57
非常感谢帮忙,函数错误是什么回事呢,可以再帮忙下吗

疏忽了*xty-e2o*改成vlax-ename->vla-object
回复

使用道具 举报

 楼主| 发表于 2021-12-13 21:38 | 显示全部楼层
夏生生 发表于 2021-12-13 21:29
疏忽了*xty-e2o*改成vlax-ename->vla-object

没看到*xty-e2o*这段文字,尴尬,可以发下完整源码吗?谢谢

点评

12楼就是完整的源码,由于嵌套了自己的函数,没拷贝全  发表于 2021-12-13 23:15
回复

使用道具 举报

发表于 2021-12-13 23:02 | 显示全部楼层
pizi158545086 发表于 2021-12-13 21:38
没看到*xty-e2o*这段文字,尴尬,可以发下完整源码吗?谢谢

在12楼改了
回复

使用道具 举报

发表于 2021-12-14 07:39 | 显示全部楼层

真是高手  !!厉害!!佩服!!
回复

使用道具 举报

 楼主| 发表于 2021-12-14 08:58 | 显示全部楼层

不知道怎么回事  加载了  命令行显示栏选起点 ,下一步就显示错误了  难道是我CAD版本的原因?我用的版本是2021

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2021-12-14 09:17 | 显示全部楼层
pizi158545086 发表于 2021-12-14 08:58
不知道怎么回事  加载了  命令行显示栏选起点 ,下一步就显示错误了  难道是我CAD版本的原因?我用的版本 ...

哥们你选的时候 两点穿过你的矩形
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 20:27 , Processed in 0.213752 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表