找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1756|回复: 9

[教学] 中心偏移并封口

[复制链接]
发表于 2014-2-21 20:22:07 | 显示全部楼层 |阅读模式

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

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

×
看到API有个帖子,用Lisp写了一个同样功能的
http://bbs.xdcad.net/thread-672674-1-1.html
  1. (defun c:tt (/ _addline dis)
  2.   (defun _addline (p1 p2)
  3.     (vlax-invoke (fy:acspace) 'Addline p1 p2)
  4.   );_ ModelSpace or PaperSpace
  5.   (fy:clearcset);_Clear CURRENT Selectionset
  6.   (if (setq
  7.         dis (getdist (strcat "\nOffset Distance< "
  8.                              (vl-princ-to-string (getvar "offsetdist"))
  9.                              ">: "
  10.                      )
  11.             )
  12.       )
  13.     (setvar "offsetdist" dis)
  14.     (setq dis (getvar "offsetdist"))
  15.   )
  16.   (fy:begin);_ startundmark
  17.   (if (and (> dis 0.)
  18.            (ssget '((0 . "arc,circle,*line,ellipse")))
  19.       )
  20.     (progn
  21.       (mapcar '(lambda (x / l1 l2 lyr)
  22.                  (setq lyr (vla-get-layer x)
  23.                        l1  (lisp-value (api-error 'vla-offset (list x dis) t))
  24.                        l2
  25.                            (lisp-value (api-error 'vla-offset (list x (- dis)) t))
  26.                  )
  27.                  (if (and l1
  28.                           l2
  29.                           (= (length l1) (length l2) 1)
  30.                           (or (not (vlax-curve-isclosed x))
  31.                               (not (equal (vlax-curve-getstartpoint x)
  32.                                           (vlax-curve-getendpoint x)
  33.                                           1e-3
  34.                                    )
  35.                               )
  36.                           )
  37.                      )
  38.                    (progn
  39.                      (_addline (vlax-curve-getstartpoint (car l1))
  40.                                (vlax-curve-getstartpoint (car l2))
  41.                      )
  42.                      (_addline (vlax-curve-getendpoint (car l1))
  43.                                (vlax-curve-getendpoint (car l2))
  44.                      );_Draw Line
  45.                      (vla-put-layer (car l1) lyr)
  46.                      (vla-put-layer (car l2) lyr)
  47.                    )
  48.                  )
  49.                )
  50.               (fy:cset->objs);_Convert ActiveselctinSet to List of Object
  51.       )
  52.       ;;(vl-cmdf ".erase" "p" "");_earse orign curve
  53.     )
  54.   )
  55.   (fy:end)
  56.   (princ)
  57. )
  58. (defun api-error (func lst bool / trap)
  59.   (cond
  60.     ((vl-catch-all-error-p
  61.        (setq trap (vl-catch-all-apply func lst))
  62.      )
  63.      (if bool
  64.        (princ (strcat "\nError: "
  65.                       (vl-catch-all-error-message trap)
  66.               )
  67.        )
  68.      )
  69.      (setq trap nil)
  70.     )
  71.   )
  72.   trap
  73. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 651个

财富等级: 财运亨通

发表于 2014-2-21 21:23:01 | 显示全部楼层
用CAD2004运行时显示
命令: tt
; 错误: no function definition: FY:CLEARCSET
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-2-22 15:48:53 | 显示全部楼层
本帖最后由 守仁格竹GM 于 2014-2-22 15:50 编辑

替楼主补充一些基础函数
(defun FY:Clearcset (/ cset)
  (if (not (vl-catch-all-error-p
             (setq cset
                    (vl-catch-all-apply
                      'vla-item
                      (list
                        (vla-get-selectionsets (Fy:acDoc))
                        "CURRENT"
                      )
                    )
             )
           )
      )
    (vla-delete cset)
  )
  (princ)
)
(defun fy:acapp    nil
  (eval    (list 'defun
          'fy:acapp
          'nil
          (vlax-get-acad-object)
    )
  )
  (fy:acapp)
)
(defun Fy:acDoc    nil
  (eval    (list 'defun
          'FY:acdoc
          'nil
          (vla-get-activedocument (fy:acapp))
    )
  )
  (fy:acdoc)
)

点评

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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

发表于 2014-2-24 14:00:53 | 显示全部楼层
求 fy:begin与fly:end函数

点评

我的签名下有编译的 app.fas 链接,包括用到的所有函数  详情 回复 发表于 2014-2-25 07:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-25 07:23:52 | 显示全部楼层
lucas3 发表于 2014-2-24 14:00
求 fy:begin与fly:end函数

我的签名下有编译的 app.fas 链接,包括用到的所有函数
  1. (defun fy:error        (msg)
  2.   (if (and msg (/= msg "Function cancelled"))
  3.     (prompt (strcat "Error: " msg))
  4.     (princ)
  5.   )
  6.   (fy:end)
  7.   (princ)
  8. )
  9. (defun fy:begin        ()
  10.   (setq        olderr        *error*
  11.         *error*        fy:error
  12.   )
  13.   (fy:Clearcset)
  14.   (fy:startundo)
  15.   t
  16. )
  17. (defun fy:end ()
  18.   (fy:unsetv)
  19.   (setq        *error*        olderr
  20.         *sysvars* nil
  21.   )
  22.   (fy:endundo)
  23.   (princ)
  24. )


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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

发表于 2014-2-25 08:29:25 | 显示全部楼层
本帖最后由 lucas3 于 2014-2-25 08:38 编辑

哇,一环扣一环啊,能否补齐这里所需的所有函数?fy:unsetv,  fy:startundo,FY:ACSPACE ,Free-Lancer大师,谢谢了,即使加载了您的函数库,也提示少FY:ACSPACE函数

点评

fy:acspace 在这 http://bbs.xdcad.net/thread-672699-1-1.html 重新编译了一个  详情 回复 发表于 2014-2-25 08:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-25 08:53:39 | 显示全部楼层
lucas3 发表于 2014-2-25 08:29
哇,一环扣一环啊,能否补齐这里所需的所有函数?fy:unsetv,  fy:startundo,FY:ACSPACE ,Free-Lancer大师 ...

fy:acspace 在这
http://bbs.xdcad.net/thread-672699-1-1.html

重新编译了一个

点评

Free-Lancer大师为什么要编译呢?能否共享源码?  详情 回复 发表于 2014-2-25 11:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

发表于 2014-2-25 11:51:43 | 显示全部楼层
Free-Lancer 发表于 2014-2-25 08:53
fy:acspace 在这
http://bbs.xdcad.net/thread-672699-1-1.html

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-2-25 12:02:08 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-2-25 12:04 编辑
lucas3 发表于 2014-2-25 11:51
Free-Lancer大师为什么要编译呢?能否共享源码?


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 22:52 , Processed in 0.245789 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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