找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 1121443108qaz

[求助] 求教,lisp有没有简单的方式表述我这个想法

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-3-27 00:59:34 | 显示全部楼层
本帖最后由 newer 于 2018-3-27 01:13 编辑

按照marting的思路,API写了个

封闭曲线内连线.gif
XD::Pnts:Extremum 函数见:http://bbs.xdcad.net/thread-715128-1-1.html

  1. (defun c:tt ()
  2.   (setq tf t)
  3.   (while (and tf
  4.               (setq e
  5.                      (car
  6.                        (xdrx_entsel "\n拾取最外边界<退出>:" '((0 . "*line,circle,ellipse")))
  7.                      )
  8.               )
  9.          )
  10.     (if (xdrx_curve_isclosed e)
  11.       (setq tf nil)
  12.       (xdrx_prompt "\n边界不闭合,重选.")
  13.     )
  14.   )
  15.   (if (and (not tf)
  16.            (setq pts (xdrx_getsamplept e))
  17.            (setq ss (ssget "wp" pts '((0 . "*polyline,circle,ellipse"))))
  18.       )
  19.     (progn
  20.       (xdrx_begin)
  21.       (mapcar
  22.         '(lambda (x)
  23.            (if (xdrx_curve_isclosed x)
  24.              (progn (setq typ (car (xdrx_object_classname x)))
  25.                     (cond ((wcmatch typ "CIRCLE,ELLIPSE")
  26.                            (setq pt (nth 3 (xdrx_entity_getgrippoint x)))
  27.                           )
  28.                           ((= typ "SPLINE"))
  29.                           ((wcmatch typ "*POLYLINE")
  30.                            (setq pts (xdrx_getpropertyvalue x "vertices")
  31.                                  pt  (xd::pnts:extremum pts '> '> t)
  32.                            )
  33.                           )
  34.                     )
  35.                     (if (and (setq gray (xdge::constructor "kRay3d"
  36.                                                            pt
  37.                                                            (polar pt (/ pi 2.0) 1.0)
  38.                                         )
  39.                              )
  40.                              (setq ints (xdrx_entity_intersectwith gray e))
  41.                              (setq ints (car ints))
  42.                              (or (setq ss1 (ssget "f"
  43.                                                   (list pt ints)
  44.                                                   '((0 . "CIRCLE,ELLIPSE,*POLYLINE"))
  45.                                            )
  46.                                  )
  47.                                  (progn (setq ss1 (ssadd)) (ssadd e ss1) t)
  48.                              )
  49.                         )
  50.                       (progn (ssdel x ss1)
  51.                              (ssadd e ss1)
  52.                              (setq ints (xdrx_getinters (list pt ints) ss1)
  53.                                    ints (xdrx_points_sortoncurve gray ints)
  54.                                    ints (caar ints)
  55.                              )
  56.                              (xdrx_line_make pt ints)
  57.                       )
  58.                     )
  59.                     (xdge::free gray)
  60.              )
  61.            )
  62.          )
  63.         (xdrx_pickset->ents ss)
  64.       )
  65.       (xdrx_end)
  66.     )
  67.   )
  68.   (princ)
  69. )




点评

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-3-27 03:03:52 来自手机 | 显示全部楼层
newer 发表于 2018-3-27 00:59
按照marting的思路,API写了个



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

使用道具 举报

已领礼包: 333个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:04 , Processed in 0.356599 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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