明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xyp1964

[讨论] 【e派】工具箱函数再揭秘及应用实例

    [复制链接]
 楼主| 发表于 2024-8-23 14:00:34 | 显示全部楼层
本帖最后由 xyp1964 于 2024-8-23 15:11 编辑

  1. ;; xyp-9Pt 实体或选择集9点坐标 (xyp-9Pt ename site)
  2. (defun xyp-9Pt (ename site / MinPT MaxPT p1 p9 p5 p3 p7 p2 p4 p6 p8 i p1a p9a s1 x ob mid)
  3.   (defun mid (p1 p2)
  4.     (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p1 p2))
  5.   )
  6.   (cond ((= (type ename) 'ENAME)
  7.          (vla-getboundingbox (vlax-ename->vla-object ename) 'MinPT 'MaxPT)
  8.          (setq p1 (vlax-safearray->list MinPT)
  9.                p9 (vlax-safearray->list MaxPT)
  10.          )
  11.         )
  12.         ((= (type ename) 'VLA-OBJECT)
  13.          (vla-getboundingbox ename 'MinPT 'MaxPT)
  14.          (setq p1 (vlax-safearray->list MinPT)
  15.                p9 (vlax-safearray->list MaxPT)
  16.          )
  17.         )
  18.         ((= (type ename) 'PICKSET)
  19.          (setq i   -1
  20.                p1a '()
  21.                p9a '()
  22.          )
  23.          (while  (setq s1 (ssname ename (setq i (1+ i))))
  24.            (setq ob (vlax-ename->vla-object s1))
  25.            (vla-getboundingbox ob 'MinPT 'MaxPT)
  26.            (setq p1  (vlax-safearray->list MinPT)
  27.                  p9  (vlax-safearray->list MaxPT)
  28.                  p1a (cons p1 p1a)
  29.                  p9a (cons p9 p9a)
  30.            )
  31.          )
  32.          (setq p1 (apply 'mapcar (cons 'min p1a))
  33.                p9 (apply 'mapcar (cons 'max p9a))
  34.          )
  35.         )
  36.   )
  37.   (setq p5 (mid p1 p9)
  38.         p3 (if (< (car p9) (car p1))
  39.              (list (car p1) (cadr p9) (caddr p1))
  40.              (list (car p9) (cadr p1) (caddr p1))
  41.            )
  42.         p7 (if (< (car p9) (car p1))
  43.              (list (car p9) (cadr p1) (caddr p9))
  44.              (list (car p1) (cadr p9) (caddr p9))
  45.            )
  46.         p2 (mid p1 p3)
  47.         p4 (mid p1 p7)
  48.         p6 (mid p3 p9)
  49.         p8 (mid p7 p9)
  50.   )
  51.   (nth (- site 1) (list p1 p2 p3 p4 p5 p6 p7 p8 p9))
  52. )
发表于 2024-9-9 21:42:22 | 显示全部楼层
院长更新了这个9点自定义函数增加了‘选择集’功能
发表于 2024-10-8 01:30:55 | 显示全部楼层
院长好!请教这个代码如何直接获取样条曲线拟合点的集合?
yshf发表于 2018-11-16 09:42:28 | 只看该作者
;样条曲线按拟合点转二维多段线
(defun c:test()
     (vl-load-com)
     (setq AcadDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
     (vla-StartUndoMark AcadDoc)
     (if (setq ssa (ssget '((0 . "Spline"))))
         (progn
             (vlax-for obj (vla-get-ActiveSelectionSet AcadDoc)
                 (setq ptb (vlax-get-property obj "FitPoints"))
                 (setq plobj (vla-AddPolyline (vla-get-ModelSpace AcadDoc) ptb))
                 (vlax-put plobj "color" 1)
                 ;(vla-delete obj) ;;要删除原样条曲线取消此行注释
             )
            
         )
     )
     (vla-EndUndoMark AcadDoc)
     (vlax-release-object AcadDoc)
     (princ)
)
发表于 2024-10-11 08:13:57 | 显示全部楼层
寒潮大冬瓜 发表于 2024-10-8 01:30
院长好!请教这个代码如何直接获取样条曲线拟合点的集合?
yshf发表于 2018-11-16 09:42:28 | 只看该作者
...

(vla-get-ControlPoints obj) ;取得样条曲线的控制点
(vla-get-fitpoints obj);获得样条曲线拟合点坐标
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 06:03 , Processed in 0.154855 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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