找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3071|回复: 10

[求助] [求助]:另类线段偏移命令

[复制链接]
发表于 2005-9-9 17:45:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
通常用的OFFSET命令是在垂直于LINE方向进行偏移的,如果要沿自身方向偏移一定距离怎么办呢?说明一下:如果是水平或者竖直的LINE,可以通过F8键选择正交来解决;如果是任意角度就不行了。不知能否通过LSP来实现,敬请高手给予解答。(附图如下)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-9 21:39:05 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]|;

  13. ;;;另类偏移
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (setvar"osmode"0)
  17.   (setq no1 (UREAL 7 "" "\n偏移距离" no1))
  18.   (while (setq s1 (car (entsel "\n选线<退出> : ")))
  19.     (if        (= (dxf 0 (entget s1)) "LINE")
  20.       (progn
  21.         (setq pt1 (dxf 10 (entget s1))
  22.               pt2 (dxf 11 (entget s1))
  23.               ang (angle pt1 pt2)
  24.               pt  (_midp pt1 pt2)
  25.               pt0 (getpoint pt "\n方向 :")
  26.         )
  27.         (if (> (- (distance pt1 pt0) (distance pt2 pt0)) 0)
  28.           (setq pt1 (polar pt ang no1))
  29.           (setq pt1 (polar pt ang (* no1 -1)))
  30.         )
  31.         (command "copy" s1 "" pt pt1)
  32.       )
  33.     )
  34.   )
  35.   (CMDLA1)
  36. )[/FONT]

命令:llpy
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 01:57:47 | 显示全部楼层
这不是沿着角度拷贝么?
还要写什么啊
要写,不如先问角度,ucs跟随,调用copy,恢复ucs
如果要copy的角度垂直当前坐标系或有方向的辅助点,或已知方向角(dist < ang),直接拷贝就可以了啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 05:35:31 | 显示全部楼层
二位高手没必要搞的这么复杂,其实有一个很简单的方法,将需延伸线段选中,将线段的端点,点击成红点后,将十字光标移至中点,输入你要延伸的数值,但要在数据前加一个减号,如楼主所需输入负20,回车就行了,同理另一端也用同样方式很方便的,不信你们试一试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-10 07:18:48 | 显示全部楼层
如二位所言,可以取消offset命令了!呵呵……

二楼程序效果:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-12 09:12:36 | 显示全部楼层
感谢大家的热心帮助。3楼说的沿角度拷贝,...能否再详细一点。4楼的方法对于数量很少的几条线的延长线偏移还是可以,如果对于大批量的就像5楼的动画那么多的话就有点辛苦了。不知能否利用2和3楼的思想做过程序?请高手给予解答。(xyp的程序还要加载你的通用程序,能否不用加载呢/。)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 13:39:13 | 显示全部楼层
多条直线怎么知道具体的一条要往哪边“拷贝”?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-12 14:38:18 | 显示全部楼层
二楼的程序很好,非常感谢,只可惜看不到源文件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 16:22:59 | 显示全部楼层
对,我的想法和狂刀长老是一样的,用ucs就可以的
所以下面是一段没有什么容错能力的代码,可以批量沿本身方向拷贝
至于拷贝的方向是沿着起点到终点,因此直线的起终点挺重要
另外一点,感觉这个程序用处不是特别大一样:)
[PHP]
(defun c:test ()
  (setq ss (ssget '((0 . "line"))))
  (setq dis (getreal "\nthe distance:"))
  (setq i 0)
  (repeat (sslength ss)
    (setq ent (entget (ssname ss i)))
    (setq pointa (cdr (assoc 10 ent))
          pointb (cdr (assoc 11 ent))
    )
    (setq pointd (polar pointa 0 dis))
    (setq angab (angle pointa pointb))
    (setq angab90 (+ angab (/ pi 2)))
    (setq pointc (polar pointa angab90 100))
    (command "_ucs" "3" pointa pointb pointc)
    (command "copy" (ssname ss i) "" pointa pointd)
    (command "_ucs" "w")
    (setq i (1+ i))
  )
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 16:31:41 | 显示全部楼层
“拷贝的方向是沿着起点到终点”就如同offset只向一个方向偏移,还有啥意义!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 16:36:21 | 显示全部楼层
因为要批量,所以就只能这样,就觉得没有意义
象xyp版主的单选是比较有意义的:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 14:34 , Processed in 0.209690 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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