明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4194|回复: 17

[经验] 请教关于多段线其中的部分线段整体偏置出的问题

[复制链接]
发表于 2013-10-12 20:35 | 显示全部楼层 |阅读模式
如果是多段线,怎么把多段线其中的部分线段整体偏置出来(根据拾取指定两点,并指示要偏置的部分来实现偏置),如下图所示:
怎么用lisp实现多段线其中的部分线段整体偏置出来?

本帖子中包含更多资源

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

x
发表于 2023-4-2 13:58 | 显示全部楼层
liu22737 发表于 2014-4-23 08:41
大师们给你的只是一个思路,仅供参考,

这种小程序我帮你写了一个,

请问程序是否用到了QAFLAGS变量
发表于 2023-4-2 21:40 | 显示全部楼层
选择对象:
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)。
 楼主| 发表于 2013-10-13 19:05 | 显示全部楼层
谁有这样的lisp,能否帮帮忙,经常要用,谢谢!!!
发表于 2013-10-15 09:51 | 显示全部楼层
没有这样的程序,早些年是有些局部偏移的程序,但都是仅一段,没有过这种两点之间的。
据我所知,这种程序使用纯ALisp还是比较麻烦的,判断一个点是否在多段线上,在哪一段都是很麻烦的,总之不容易。似乎Vlisp要容易一些,不过我不会。
最近好像G版露面也比较少了,如果他出手,应该不成问题。
我早已没精力写程序了,只能提一个思路,如果哪位有兴趣,不妨试试。
思路:选择多段线(点选,在要偏移区间内),设定区间首尾点,提取首尾点之间节段参数,在区间内构成临时多段线,偏移,删除临时多段线。
发表于 2013-12-26 23:04 | 显示全部楼层
可以把我发过的点表偏移拿去认真修改下,首先保证偏移不出问题,然后根据你需要偏移出去的点对应取得偏移后的点,把最终得到的点表用PL画出来
 楼主| 发表于 2013-12-27 16:43 | 显示全部楼层
感谢llsheng_73  ll_j 的热心回复,谢谢!!!
发表于 2013-12-28 08:36 | 显示全部楼层
下面我将部分多段线分离出
  1. (defun c:fff (/ CMDECHO1 N OSMODE1 P2 PET SS SS1 SS2)
  2.   (defun GetTwoPts (ss / XY)
  3.     (setq xy (last (ssnamex ss 0)))
  4.     (list (last (cadr xy)) (last (cadddr xy)))
  5.   )
  6.   (setq CMDECHO1 (getvar "CMDECHO"))
  7.   (setq osmode1 (getvar "osmode"))
  8.   (setq pet (getvar "PEDITACCEPT"))


  9.   (Setvar "CMDECHO" 0)
  10.   (Setvar "osmode" 0)
  11.   (setvar "PEDITACCEPT" 1)

  12.   (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
  13.     (progn (setq p2 (GetTwoPts ss))
  14.            (repeat (setq n (sslength ss))
  15.              (vl-cmdf "_.explode" (ssname ss (setq n (1- n))))
  16.              (setq ss1 (ssget "_P"))
  17.              (setq ss2 (ssget "W" (car p2) (cadr p2)))
  18.              (if (and ss1 ss2)
  19.                (progn
  20.                  (vl-cmdf "_.Select" ss1 "_Remove" ss2 "")
  21.                  (setq ss1 (ssget "_P"))
  22.                )
  23.              )
  24.              (if ss1
  25.                (command "_pedit" "_M" ss1 "" "_j" "" "")
  26.              )
  27.              (if ss2
  28.                (command "_pedit" "_M" ss2 "" "_j" "" "")
  29.              )
  30.            )
  31.     )
  32.   )
  33.   (Setvar "CMDECHO" CMDECHO1)
  34.   (Setvar "osmode" osmode1)
  35.   (setvar "PEDITACCEPT" pet)
  36.   (princ)
  37. )


稍改就可满足你的要求
发表于 2014-3-10 12:12 | 显示全部楼层
自贡黄明儒 发表于 2013-12-28 08:36
下面我将部分多段线分离出

稍改就可满足你的要求

黄大师。。。目测你对多线段很有研究啊。。。
请教个问题吧
关于你之前发的关于多线段的子函数我全部都看过了。。

就是没有可以返回多线段的第N段   子函数??
这个功能可能实现吗??
求指教
发表于 2014-4-21 15:51 | 显示全部楼层
看看黄大侠成就
 楼主| 发表于 2014-4-22 09:18 | 显示全部楼层
自贡黄明儒 发表于 2013-12-28 08:36
下面我将部分多段线分离出

稍改就可满足你的要求

长老你好,你的这个程序并不能做到我图中那样哦。
发表于 2014-4-22 13:22 | 显示全部楼层
全自动有点麻烦:

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-9 05:05 , Processed in 0.190977 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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