找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1277|回复: 3

[研讨] 这个GetProjectCurve生成的选集如何删除

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-13 10:36:48 | 显示全部楼层 |阅读模式

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

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

×
又搞不清API在选集分配了,问题怎么把临时线删掉

本函数是用来测试曲线各个方向的投影,以后可以用来绘制侧视图
  1. (defun ProjectCurves (curve v d / box outbox v1)
  2.   (setq        box    (xdrx_entity_box curve)
  3.         outBox (apply 'xdrx_points_offset (cons d (XD::Pnts:Close box)))
  4.         v      (xdrx_vector_normalize v)
  5.         v1     (xdrx_vector_normalize (xdrx_vector_perpvector v))
  6.   )
  7.   (mapcar
  8.     '(lambda (x y / ss pts el)
  9.        (xdrx_setmark)
  10.        (xdrx_curve_getProjectCurve curve (list x y));_这个是临时的,如何删除?
  11.        (setq el (xdrx_pickset->ents (setq ss (xdrx_getss))));_始终是一个?
  12.        (setq
  13.          ss (xdrx_curve_getprojectcurve ss '((0. 0. 0.) (0. 0. 1.)))
  14.        )
  15.        (setq
  16.          pts (vl-sort (xdrx_getpropertyvalue (ssname ss 0) "Vertices")
  17.                       '(lambda (p1 p2)
  18.                          (if (equal (cadr p1) (cadr p2) 1e-3)
  19.                            (< (car p1) (car p2))
  20.                            (< (cadr p1) (cadr p2))
  21.                          )
  22.                        )
  23.              )
  24.        )
  25.        (apply 'xdrx_polyline_make pts);_WCS
  26.        (mapcar 'xdrx_entity_delete el)
  27.      )
  28.     outbox
  29.     (list v1 v v1 v)
  30.   )
  31. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-12-13 11:35:45 | 显示全部楼层
知道问题所在了, mapcar 的时候不是一个选集,后面的会冲掉前面的,收集要用 cons
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-12-13 13:03:24 | 显示全部楼层
本帖最后由 st788796 于 2013-12-13 13:11 编辑

Ok 了,不用转坐标系 Curve 可以按指定的 线投影了,再处理后就可以用于绘制各方向侧视图

  1. (defun ProjectCurves (curve v d / box outbox v1 ptl el)
  2.   (setq        box    (xdrx_entity_box curve)
  3.         outBox (apply 'xdrx_points_offset (cons d (XD::Pnts:Close box)))
  4.         v      (xdrx_vector_normalize v)
  5.         v1     (xdrx_vector_normalize (xdrx_vector_perpvector v))
  6.         ptl    (mapcar
  7.                  '(lambda (x y / e)
  8.                     (setq ss (xdrx_curve_getProjectCurve curve (list x y))
  9.                           el (cons (ssname ss 0) el)
  10.                           ss (xdrx_curve_getprojectcurve
  11.                                ss
  12.                                '((0. 0. 0.) (0. 0. 1.))
  13.                              )
  14.                           el (cons (ssname ss 0) el)
  15.                     )
  16.                     (xdrx_getpropertyvalue
  17.                       (car el)
  18.                       "Vertices"
  19.                     )
  20.                   )
  21.                  outbox
  22.                  (list v1 v v1 v)
  23.                )
  24.   )
  25.   (mapcar 'xdrx_entity_delete el)
  26.   (mapcar '(lambda (x) (xdrx_polyline_compress (apply 'xdrx_polyline_make x)))
  27.           (mapcar '(lambda (a)
  28.                      (vl-sort a
  29.                               '(lambda (e1 e2)
  30.                                  (if (equal (cadr e1) (cadr e2) 1e-3)
  31.                                    (< (car e1) (car e2))
  32.                                    (< (cadr e1) (cadr e2))
  33.                                  )
  34.                                )
  35.                      )
  36.                    )
  37.                   ptl
  38.           )
  39.   )
  40. )
  41. (defun c:tt (/ e p1 p2 d)
  42.   (and (setq
  43.          e (car (xdrx_entsel "\nPick Pline: " '((0 . "lwpolyline"))))
  44.        )
  45.        (setq p1 (getpoint "\nFirst point: "))
  46.        (setq p2 (getpoint p1 "\nSecond point: "))
  47.        (setq d (getdist p1 "\nSpace: "))
  48.        (ProjectCurves e (mapcar '- p2 p1) d)
  49.   )
  50.   (princ)
  51. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 16:24 , Processed in 0.365376 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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