找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1334|回复: 1

[教学] 特性匹配函数

[复制链接]
发表于 2014-10-10 20:53:30 | 显示全部楼层 |阅读模式

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

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

×
来源于 eachy 版主的 "可自由定制的刷子"

  1. ;;source -- 源实体 object
  2. ;;target -- 目标实体 或 目标实体表,object
  3. ;;lst -- 特性名称或特性名称表 , 'startpoint 或 "startpoint"  '(startpoint endpoint ...) | ("startpoint" "endpoint" ...)
  4. (defun fy:mat (source target lst / vars _mat)
  5.   (defun _mat (obj lst vars)
  6.     (mapcar '(lambda (x y)
  7.                (if (and y (vlax-property-available-p obj x T))
  8.                  (vlax-put-property obj x y)
  9.                )
  10.              )
  11.             lst
  12.             vars
  13.     )
  14.   )
  15.   (if (or (= (type lst) 'SYM) (= (type lst) 'STR))
  16.     (setq lst (list lst))
  17.   )
  18.   (setq        vars (mapcar '(lambda (a)
  19.                         (if (vlax-property-available-p source a)
  20.                           (vlax-get-property source a)
  21.                         )
  22.                       )
  23.                      lst
  24.              )
  25.   )
  26.   (if (listp target)
  27.     (mapcar '(lambda (x) (_mat x lst vars)) target)
  28.     (_mat target lst vars)
  29.   )
  30. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-10-10 21:01:15 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-10-12 09:44 编辑

  1. (defun c:tt (/ e)
  2.   (fy:begin)
  3.   (if (and (progn
  4.              (princ "\n选择源Line...")
  5.              (setq e (ssget "_+.:E:S" '((0 . "line"))))
  6.            )
  7.            (progn
  8.              (princ "\n选择匹配目标....")
  9.              (ssget '((0 . "line")))
  10.            )
  11.       )
  12.     (fy:mat  (e2o (ssname e 0))  (fy:cset->objs)   'startpoint)
  13.   )
  14.   (princ)
  15. )

  1. (defun c:tt (/ e)
  2.   (fy:begin)
  3.   (if (and (progn
  4.              (princ "\n选择源Circle...")
  5.              (setq e (ssget ":S" '((0 . "Circle"))))
  6.            )
  7.            (progn
  8.              (princ "\n选择匹配目标....")
  9.              (ssget '((0 . "circle")))
  10.            )
  11.       )
  12.     (fy:mat (e2o (ssname e 0)) (fy:cset->objs) 'radius);_圆半径
  13.   )
  14.   (princ)
  15. )

  1. (defun c:tt (/ e)
  2.   (fy:begin)
  3.   (if (and (progn
  4.              (princ "\n选择源Insert...")
  5.              (setq e (ssget ":S" '((0 . "INSERT"))))
  6.            )
  7.            (progn
  8.              (princ "\n选择匹配目标....")
  9.              (ssget '((0 . "Insert")))
  10.            )
  11.       )
  12.     (fy:mat (e2o (ssname e 0))
  13.             (fy:cset->objs)
  14.             ;;x比例 y比例 z比例 旋转角
  15.             '(xscalefactor yscalefactor zscalefactor rotation)
  16.     )
  17.   )
  18.   (princ)
  19. )
fymat.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 18:28 , Processed in 0.361731 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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