找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1184|回复: 6

[LISP程序]:请问 线的双向偏移 程序怎么编啊??

[复制链接]
发表于 2007-9-9 21:58:05 | 显示全部楼层 |阅读模式

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

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

×
请问 线的双向偏移 程序怎么编啊??  能否告诉小弟
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-9-10 15:11:11 | 显示全部楼层
要编制程序,得先将过程想清楚。在偏移时,关键是要确定偏移方向。
对于简单图形,比如圆和直线,其方向较好确定。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-9-10 22:25:53 | 显示全部楼层

Re: [LISP程序]:请问 线的双向偏移 程序怎么编啊??

最初由 Jason1010 发布
[B]请问 线的双向偏移 程序怎么编啊??   [/B]

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

使用道具 举报

发表于 2007-9-11 20:39:57 | 显示全部楼层
使用ActiveX接口。偏移值一个给正,一个给负。



  1. ;; Arc, Circle, Ellipse, Line, LightweightPolyline, Polyline, Spline, XLine
  2. (vl-load-com)

  3. (defun C:offset2 (/ ent dist)
  4.   (setq
  5.     dist (getdist
  6.            (strcat "双向偏移的距离:<" (rtos (getvar "OFFSETDIST")) ">")
  7.          )
  8.   )
  9.   (if (null dist)
  10.     (setq dist (getvar "offsetdist"))
  11.     (setvar "offsetdist" dist)
  12.   )
  13.   (setq        ent
  14.          (i:entselF
  15.            "\n选择要双向偏移的对象:"
  16.            '((0
  17.               .
  18.               "ARC,ELLIPSE,CIRCLE,LINE,POLYLINE,LWPOLYLINE,XLINE,SPLINE"
  19.              )
  20.             )
  21.          )
  22.   )
  23.   (princ ent)
  24.   (if ent
  25.     (progn
  26.       (setq ent (car ent))
  27.       (setq ent (vlax-ename->vla-object ent))
  28.       (vla-offset ent dist)
  29.       (vla-offset ent (- 0 dist))
  30.     )
  31.   )
  32.   (princ)
  33. )

  34. (defun I:EntSelF
  35.                  (Msg                        ; selection prompt
  36.                   Filter                ; filter list
  37.                   / EntN                ; (entsel) list, or "Exit" string
  38.                   pbDist                ; pickbox size in drawing units
  39.                   PtPick                ; point of selection from (entsel)
  40.                   ssPick                ; selection set
  41. ) ;_ closes variable declare
  42.   (while (not EntN)                        ; while no selection (or no exit)
  43.     (setq
  44.       EntN (if Msg                        ; if selection prompt
  45.              (entsel Msg)                ; then (entsel) w/prompt

  46.              (entsel)                        ; else plain (entsel)
  47.            ) ;_ closes if
  48.     ) ;_ closes setq
  49.     (if        (= (getvar "ErrNo") 52)                ; if null response
  50.       (setq EntN "Exit")                ; then set flag to exit
  51.     ) ;_ closes if
  52.   ) ;_ closes while
  53.   (cond
  54.     ((/= EntN "Exit")                        ; if not exit
  55.      (setq
  56.        pbDist (abs                        ; return absolute number
  57.                 (/
  58.                   (*
  59.                     (/                        ; get pixel ratio
  60.                       (getvar "PickBox")
  61.                       (cadr (getvar "ScreenSize"))
  62.                     )
  63.                     (getvar "ViewSize")        ; apply to viewsize
  64.                   ) ;_ closes *
  65.                   (sin (* 0.25 pi))        ; at 45?
  66.                 ) ;_ closes /
  67.               ) ;_ closes abs
  68.        PtPick (cadr EntN)                ; get point of pick
  69.      ) ;_ closes setq
  70.      (if (setq ssPick (ssget "_C"        ; if entities in crossing
  71.                              (polar PtPick (* 1.25 pi) pbDist)
  72.                              (polar PtPick (* 0.25 pi) pbDist)
  73.                              Filter        ; match filter, if any
  74.                       ) ;_ closes ssget
  75.          ) ;_ closes setq
  76.        (cons                                ; then return first entity as (entsel)
  77.          (ssname ssPick 0)
  78.          (list PtPick)
  79.        ) ;_ closes cons
  80.      ) ;_ closes if
  81.     ) ;_ closes condition
  82.   ) ;_ closes cond
  83. ) ;_ closes defun I:EntSelF

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 04:53 , Processed in 0.317320 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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