找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1858|回复: 30

[求助] [求助]:求助双向offset工具

[复制链接]
发表于 2004-3-8 12:04:03 | 显示全部楼层 |阅读模式

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

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

×
那位高手可以提供CAD双向offset的工具,谢谢!
Email:goldendream@21cn.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-3-8 12:12:22 | 显示全部楼层
  你的意思是不是运行一个命令后,所选择的线条就向该线条的两侧分别偏移一条线?
  如果是这样,好像AutoCAD没有这个功能。不过这个功能很有实用价值,建议会编程的朋友编一个Lisp解决这个问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-8 12:17:14 | 显示全部楼层
是的,以前朋友帮我编了一个,可是现在不知道为什么不能用了,斑竹有办法吗,谢谢
很提高效率的。

<font color=blue><b>[斑竹提示]:</b></font><font color=red><b>我一点也不会编程,我将此帖移动到LISP板块,让更多的编程高手看看这个帖子,希望早日解决。    </b>&nbsp;&nbsp;&nbsp;&nbsp;<i>by cdhua001</i></font>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-8 12:36:37 | 显示全部楼层
最初由 zhang139666 发布
[B]是的,以前朋友帮我编了一个,可是现在不知道为什么不能用了,斑竹有办法吗,谢谢
很提高效率的。

<font color=blue><b>[斑竹提示]:</b></font><font color=red><b>我一点也不会编程,我将此帖移动到LISP板块,... [/B]


这个帖子了面推荐的工具箱里面就有这样的工具,而且是参数化的。可以根据你设置的绘图比例以及要求偏移的距离进行偏移。相当不错。建议使用。


  1. <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="700" id="AutoNumber1" height="498">
  2.   <tr>
  3.     <td width="100%" height="489">
  4.       <iframe name="I1" width="100%" height="100%" src="http://www.xdcad.net/forum/showthread.php?s=&threadid=51698">
  5. 浏览器不支持嵌入式框架或配置为不显示嵌入式框架
  6.       </iframe>
  7.     </td>
  8.   </tr>
  9. </table>
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-8 12:44:43 | 显示全部楼层
谢谢楼上的大哥,已经下载成功
请指教如何使用呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-8 12:58:56 | 显示全部楼层
  1. [php]
  2. ;;;|双向偏移 SNSJ 2004.3.8
  3. (defun c:2os (/ getds obj)
  4. (vl-load-com)(initget 2)
  5. (setq getds (getdist "\n输入偏移距离<可直接量取>:"))
  6. (if (ssget '((0 . "Arc,Circle,Ellipse,*Line")))
  7.    (vlax-for obj (vla-get-activeselectionset
  8.                     (vla-get-activedocument (vlax-get-acad-object)))
  9.      (vla-offset obj getds)(vla-offset obj (* getds -1))
  10.      )(vlax-release-object obj)
  11.   )
  12.     )
  13. [/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-8 13:05:48 | 显示全部楼层
谢谢楼上的大哥,可以用了,可不可以把偏移后的实体放到物定的层里面呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-8 13:32:01 | 显示全部楼层
  1. [php]
  2. ;;;|双向偏移 SNSJ 2004.3.8
  3. (defun c:2os (/ getds obj varst)
  4. (vl-load-com)(setq varst (getvar "clayer"))
  5.   (cond ((null(tblsearch "layer" "my-offset-layer"))
  6.         (vl-cmdf ".layer" "n" "my-offset-layer" "")(setvar "clayer" "my-offset-layer"))   
  7.   (t (setvar "clayer" "my-offset-layer"))
  8.         )   
  9. (initget 2)
  10. (setq getds (getdist "\n输入偏移距离<可直接量取>:"))
  11. (if (ssget '((0 . "Arc,Circle,Ellipse,*Line")))
  12.    (vlax-for obj (vla-get-activeselectionset
  13.                     (vla-get-activedocument (vlax-get-acad-object)))
  14.      (vla-offset obj getds)(vla-offset obj (* getds -1))
  15.      )(vlax-release-object obj)
  16.   )(setvar "clayer" varst)
  17.     )
  18. [/php]

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

使用道具 举报

 楼主| 发表于 2004-3-8 14:47:51 | 显示全部楼层
谢谢楼上的大哥
上面的程序是新生成了一个图层,我是想可不可以把偏移后生成的实体转换到指定的层上去,我这儿有一个朋友以前编的程序,现在不能用了,请楼上的大哥及各位大侠们帮忙指正。谢谢。
;;;  1995.12.17
;;;  offset a line to a different layer
;;;  edit by CHAKE

(defun c:sw()   
   (princ "\nInput the distance to OFFSET, Please")
   (princ " << Curren distance is ")(princ w-gxjl)(princ " >>")
   (setq w-gxjl (getreal))
)
(defun c:sn()
   (setq gx-lanm (getvar "clayer"))
   (princ "\nInput the Layer Name to OFFSET in , Please")
   (princ " << The cureent layer is ") (princ gx-lanm)(princ " >>")
   (setq gx-lanm (getstring))
)

(defun c:11 ()
   (graphscr)
   (if (= w-gxjl nil)
       (setq w-gxjl 20))
   (if (= gx-lanm nil)
       (setq gx-lanm "gx-youdian")
   )
   (setq osnm (getvar "osmode"))
   (setq unm (entsel"\nSelect a line or an Arc, Please "))
   (setq u1 (entget (car unm)))
   (qqqq)
   (setq pd (getpoint"\nSelect the Direction to offset. Please"))
   (if (or (= (cdr (assoc 0 u1)) "arc")
           (= (cdr (assoc 0 u1)) "ARC")
       )
       (progn   
           (setq ddiist (distance pd pce))
           (if (< ddiist prl)
               (setq prn (abs (- prl w-gxjl)))
               (setq prn (+ prl w-gxjl))
           )
           (setq pa (polar pce panf prn))
           (setq pb (polar pce pane prn))
           (command "layer" "s" gx-lanm "")
           (setvar "osmode" 0)
           (command "arc" "c" pce pa pb)
       )
       (progn
           (setq pan3 (+ pan (/ pi 2)))
           (setq po (polar pd pan3 60.5))
           (setq pcen (inters pa pb pd po nil))
           (setq pan (angle pcen pd))
           (setq pn1 (polar pa pan w-gxjl))
           (setq pn2 (polar pb pan w-gxjl))
           (command "layer" "s" gx-lanm "")
           (setvar "osmode" 0)
           (command "line" pn1 pn2 "")
)     )(setvar "osmode" osnm)
)

(defun qqqq ()
   (if (or (= (cdr (assoc 0 u1)) "ARC")
           (= (cdr (assoc 0 u1)) "arc")
       )
       (progn   
         (setq pce (cdr (assoc 10 u1)))
         (setq panf (cdr (assoc 50 u1)))
         (setq pane (cdr (assoc 51 u1)))
         (setq prl (cdr (assoc 40 u1)))
       )
       (progn
         (setq pa (cdr (assoc 10 u1)))
         (setq pb (cdr (assoc 11 u1)))
         (setq pan (angle pa pb))
       )
)  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-8 14:50:24 | 显示全部楼层
不知道你想怎么指定层?能不能说清楚点?是自己输入层么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-8 15:02:32 | 显示全部楼层
比如我现在已经有了一个层为“aa",而我要偏移的对象在“SS”层,可不可以把“SS”层中的实体偏移后自动放到“AA”层里面去。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-8 17:37:18 | 显示全部楼层
  1. [php]
  2. ;;;|双向偏移 SNSJ 2004.3.8
  3. (defun ptlay (x y)  (vla-put-layer(car(vlax-safearray->list(vlax-variant-value x)))y))
  4. (defun c:2os (/ getds obj lynm)
  5. (vl-load-com)(setq lynm (getstring "\n输入想要偏移的层名:"))
  6.   (if (null(tblsearch "layer" lynm))(vl-cmdf ".layer" "n" lynm ""))   
  7. (initget 2)(setq getds (getdist "\n输入偏移距离<可直接量取>:"))
  8. (if (ssget '((0 . "Arc,Circle,Ellipse,*Line")))
  9.   (vlax-for obj (vla-get-activeselectionset
  10.               (vla-get-activedocument (vlax-get-acad-object)))             
  11.         (ptlay (vla-offset obj getds) lynm)(ptlay (vla-offset obj (* getds -1)) lynm)
  12.      )(vlax-release-object obj)
  13.   )(princ)  
  14.   )
  15. [/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-8 22:47:22 | 显示全部楼层
感谢斑竹提供的精彩代码,以前我也编了一个。但是使用起来有时候不正常。根据您提供的代码改了一下,这下好用多了。谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-9 09:15:05 | 显示全部楼层
哈哈~~解决了mutiline的一大难题啊!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-9 09:30:44 | 显示全部楼层
果然是很簡短的代碼. 比我的好呀.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 14:52 , Processed in 0.212364 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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