找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3192|回复: 27

fff 连续不等距offset[原创]:

[复制链接]
发表于 2002-1-18 20:41:58 | 显示全部楼层 |阅读模式

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

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

×

  1. :1
  2. ;fff 连续不等距offset------lxx.2000.02[2001.2m]
  3. (defun c:fff (/ ss p1 p2 dis)
  4.   (princ "\nfff 连续不等距offset------lxx.2000.02[2001.2m]")
  5.   (setq ss (car(entsel))
  6.         p1 (getpoint "\n <getdist> 1st pt:"))
  7.   (while (setq p2 (getpoint p1 "\n next point:")
  8.                dis (distance p1 p2)
  9.          )     
  10.          (command ".offset" dis ss p2 "")
  11.          (setq ss (ssget "l")
  12.                p1 p2)
  13.   )(princ)
  14. )
  15. (princ "\n ----fff连续不等距 offset----lxx.2000.02.12")(princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-1-19 13:39:33 | 显示全部楼层

希望改进!

这和多重拷贝有区别吗?要是写成可以键盘连续输入偏移距离就好了,其中偏移距离可以用逗号隔开。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-1-21 00:04:14 | 显示全部楼层
你好好试试!
可以键盘连续输入偏移距离(或通过连续点击确定),且不需要打逗号。
这个程序就是为此而作的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-1-21 19:47:37 | 显示全部楼层
  赖云龙先生的偏移程序的优点是一次可以从键盘输入连续的偏移距离,这是很方便的。可惜美中不足的是偏移方式是从原点开始的,而梦兄的优点是从相对点开始下一次偏移,这是本程序的方便之处!要是中和这二者所长的话,那样就算是完美了!
  梦兄要是有了改进版本,要别忘了通知小弟呀!
附上赖先生的偏移程序:
一次偏移多种距离

  1. ;;;程序设计:赖云龙;;;
  2. ;;;---------------;;;
  3. (defun C:ff (/ A S N PT1 AA AAA AL)
  4. (setq A "")
  5. (while (= A "")
  6. (setq A (getstring "\nSpecify offset distance <x/x/x...>:"));输入如:2/6/23…..
  7. )
  8. (setq A (strcat A "/"))
  9. (prompt "\nSelect object to offset: ")
  10. (while (= AA nil)
  11. (setq AA (entsel))
  12. )
  13. (initget 1)
  14. (setq PT1 (getpoint "\nSpecify point on side to offset: "))
  15. (setq AL (+ (strlen A) 1))
  16. (setq N 1)
  17. (setq S "")
  18. (while (not (= N AL))
  19. (if (= (substr A N 1) "/")
  20. (progn
  21. (setq AAA (car AA))
  22. (command "_.offset" S AAA PT1 "")
  23. (setq S "")
  24. )
  25. (setq S (strcat S (substr A N 1)))
  26. )
  27. (setq N (1+ N))
  28. )
  29. (princ)
  30. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-1-22 13:34:13 | 显示全部楼层
对于我的fff.lsp 可以这样使用的:
1.选物体
2.任取第一点,鼠标拉出一个方向。
3. 键盘输入-〉 距离 空格 距离 空格……
(中途可以改变鼠标拉出的方向呢)
有兴趣的可以试试:-)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-1-23 00:03:16 | 显示全部楼层
:8
梦兄,小弟还是觉着用鼠标拉出方向不太方便,不如用键盘来得快。
小弟试用了一下,该程序鼠标点的第一点,实际上已经是偏移方向了,中途也不知如何变向,而且似乎也没有变向的必要吧......  
还是希望梦兄考虑一下推出fff.lsp V1.2  :b:9
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-1-23 11:48:27 | 显示全部楼层

试试这个!__连续定向copy

;连续定向copy
(defun c:xc(/ PT1 PT2 ANG SCCC DISs )
(While (= SCCC nil)
     (setq SCCC (ssget))
)
(While (= PT1 nil)
     (setq PT1 (getpoint "\nBase point or displacement:" ) )
)
(While (= ANG nil)
     (setq ANG (getangle PT1 "\nPick next point for direction:" ) )
)
(if (= DISCCC nil) (setq DISCCC 3000) )
;
(While (/= DISs 0)
    (setq PR (strcat "\nDistance(Give a value or Pick two points; 0 for quit)<" (rtos DISCCC 2 2) ">:" ) )
    (setq DISs (getdist PR ) )
    (if (/= DISs nil)
       (if (/= DISs 0)
           (setq DISCCC DISs)
       )
    )
    (setq PT2 (polar PT1 ANG DISCCC ) )
    (if (/= DISs 0)
      (progn
        (command "_.copy" SCCC "" "0,0" "@" "move" "p" "" PT1 PT2)
        (setq PT1 PT2 )
      )
    )
)
;
(princ "\nCommand: XC --- Copyright of darksun1480 ---")
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-1-23 11:57:44 | 显示全部楼层

可是:“连续定向copy ”运行有点问题,可以帮我看一下吗?

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

使用道具 举报

发表于 2002-1-26 15:32:28 | 显示全部楼层

Re: 可是:“连续定向copy ”运行有点问题,可以帮我看一下吗?

最初由 darksun1480 发布
[B]连续回车时有问题! [/B]

  1. ;;;不是很明白你所说的,像下列程序吗??
  2. ;;;连续定向copy
  3. (defun C:XC (/ PT1 PT2 ANG SCCC HOLDECHO HOLDOSMODE HOLDANG HOLDORTH)
  4.   (setq HOLDECHO (getvar "cmdecho"))
  5.   (setvar "cmdecho" 0)
  6.   (setq HOLDOSMODE (getvar "osmode"))
  7.   (setvar "osmode" 39)
  8.   (setq HOLDORTH (getvar "orthomode"))
  9.   (setvar "orthomode" 0)
  10.   (while (null SCCC)
  11.     (prompt "\n选择复制对象: ")
  12.     (setq SCCC (ssget))
  13.   )
  14.   (initget 1)
  15.   (setq PT1 (getpoint "\n基准点: "))
  16.   (initget 1)
  17.   (setq ANG (getangle PT1 "\n复制方向: "))
  18.   (setq HOLDANG (getvar "snapang"))
  19.   (setvar "snapang" ANG)
  20.   (setvar "orthomode" 1)
  21.   (setq PT2 0)
  22.   (while (/= PT2 NIL)
  23.     (setq PT2 (getpoint PT1 "\n复制距离: "))
  24.     (setvar "osmode" 0)
  25.     (if        (/= PT2 NIL)
  26.       (command "_.copy" SCCC "" "0,0" "@" "move" "p" "" PT1 PT2)
  27.     )
  28.     (setq PT1 PT2)
  29.   )
  30.   (setvar "snapang" HOLDANG)
  31.   (setvar "orthomode" HOLDORTH)
  32.   (setvar "osmode" HOLDOSMODE)
  33.   (setvar "cmdecho" HOLDECHO)
  34.   (princ)
  35. )
  36. (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-2-5 08:34:20 | 显示全部楼层

一次可偏移多种距离,可以是相对距离,也可是绝对距离...


  1. 一次可偏移多种距离,可以是相对距离,也可是绝对距离。
  2. (defun C:FSS (/ A S N PT1 AA AAA AL old-dist)
  3.     (if (not offset-distance-x)
  4.         (setq offset-distance-x "X*X**X*X...")
  5.     )
  6.     (princ "\n ----FSS   连续偏移----                             ----DNAL 2002.02----")
  7.     (setq A (getstring (strcat "\nSpecify offset distance < "
  8.                                 offset-distance-x
  9.                                 " >:"
  10.                        )
  11.             )
  12.     )
  13.     (if (= A "")
  14.         (setq A offset-distance-x)
  15.         (setq offset-distance-x A)
  16.     )
  17.     (setq A (strcat A "*"))
  18.     (prompt "\nSelect object to offset: ")
  19.     (while (= AA nil)
  20.         (setq AA (entsel))
  21.     )
  22.     (initget 1)
  23.     (setq PT1 (getpoint "\nSpecify point on side to offset: "))
  24.     (setq AL (+ (strlen A) 1))
  25.     (setq N 1)
  26.     (setq S "")
  27.     (setq old-dist 0)
  28.     (while (not (= N AL))
  29.         (if (= (substr A N 1) "*")
  30.             (progn
  31.                  (setq AAA (car AA))
  32.                  (if (= S "")
  33.                      (progn
  34.                          (setq old-dist (getvar "offsetdist"))
  35.                          (if (= old-dist -1) (setq old-dist 0))
  36.                      )
  37.                      (progn
  38.                          (if (/= (strcase S) "T")
  39.                              (setq S (+ (distof s) old-dist))
  40.                          )
  41.                          (command "_.offset" S AAA PT1 "")
  42.                          (setq S "")
  43.                          (setq old-dist 0)
  44.                      )
  45.                  )
  46.             )
  47.             (setq S (strcat S (substr A N 1)))
  48.         )
  49.         (setq N (1+ N))
  50.     )
  51.     (princ)
  52. )
  53. ;连续偏移命令---FSS
  54. ;如果要偏移的距离是相对于原始被偏移的物体,则用“*”,
  55. ;如果要偏移的距离是相对于最新偏移生成的物体,则用“**”
  56. ;也就是说用“*”后面是绝对距离,“**”后面是相对距离。
  57. ;当然,绝对距离必须是正数,而相对距离可是负数,但它的
  58. ;“绝对距离”必须是正的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-2-5 08:41:32 | 显示全部楼层

Re: 一次可偏移多种距离,可以是相对距离,也可是绝对距离...

最初由 dnal 发布
[B][code]
一次可偏移多种距离,可以是相对距离,也可是绝对距离。
(defun C:FSS (/ A S N PT1 AA AAA AL old-dist)
    (if (not offset-distance-x)
        (setq offset-distance-x "X*X**X*X...")
    )
   ... [/B]


谢谢,下次给大家提供代码时候,用“程序代码”按钮,或者到“论坛公告”论坛,看论坛如何让代码缩进的方法,好吗?这样代码大家容易读。我替你改好了,这个帖子。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-2-6 14:19:12 | 显示全部楼层

谢谢--晓东 :-)

谢谢你,晓东,这是我第一次发贴子,谢谢你帮我改好。
另外,我想向你申请“lisplink-2k”的注册码,我的机器号是“72801”,
Email:tfm521@cmmail.com 谢谢,我已经等了好久了...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-11 21:22:59 | 显示全部楼层
最后的程序虽然完美,但实际使用频率及绘图效率较慢,我仍选择了楼主的小巧版的程序:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-13 20:50:09 | 显示全部楼层
http://www.xdcad.net/forum/attachment.php?s=&postid=882169

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 23:50 , Processed in 0.311459 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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