明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 413|回复: 2

将选择的对象投影到指定的参考框中

[复制链接]
发表于 2025-1-16 18:19:38 | 显示全部楼层 |阅读模式
  1. ;;;;;;;;;;;将选择的对象投影到指定的参考框中
  2. (defun c:sxx (/ *error* des ent enx idx lst mat ocs sel src typ)

  3.   ;; 错误处理函数
  4.   (defun *error* (msg)
  5.     (LM:endundo (LM:acdoc))
  6.     (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  7.       (princ (strcat "\nError: " msg))
  8.     )
  9.     (princ)
  10.   )

  11.   ;; 开始事务
  12.   (LM:startundo (LM:acdoc))

  13.   ;; 主程序
  14.   (if
  15.     (and
  16.       ;; 选择对象
  17.       (setq sel
  18.             (LM:ssget "\n请选择对象: "
  19.                       '("_:L"
  20.                         ((-4 . "<OR")
  21.                          (-4 . "<AND")
  22.                          (0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,POINT")
  23.                          (-4 . "<NOT")
  24.                          (-4 . "<AND")
  25.                          (0 . "POLYLINE") (-4 . "&") (70 . 88)
  26.                          (-4 . "AND>")
  27.                          (-4 . "NOT>")
  28.                          (-4 . "AND>")
  29.                          (-4 . "<AND")
  30.                          (0 . "SPLINE") (-4 . "&=") (70 . 8)
  31.                          (-4 . "AND>")
  32.                          (-4 . "OR>")
  33.                         )
  34.                        )
  35.                       )
  36.             )
  37.       ;; 获取源参考框
  38.       (setq src (2dprojection:getreferenceframe "\n请选择源对象的参考框: "))
  39.       ;; 获取目标参考框
  40.       (setq des (2dprojection:getreferenceframe "\n请选择投影的参考框: "))
  41.       ;; 获取变换矩阵
  42.       (setq mat (2dprojection:getmatrix src des))
  43.       ;; 获取当前 UCS 的 Z 轴方向
  44.       (setq ocs (trans '(0.0 0.0 1.0) 1 0 t))
  45.     )
  46.     ;; 遍历选择集
  47.     (repeat (setq idx (sslength sel))
  48.       (setq ent (ssname sel (setq idx (1- idx)))
  49.             enx (entget ent)
  50.             typ (cdr (assoc 0 enx))
  51.       )
  52.       (cond
  53.         ;; 处理点对象
  54.         ((= "POINT" typ)
  55.          (entmake
  56.            (vl-list*
  57.             '(0 . "POINT")
  58.             (cons 10 (trans (2dprojection:mappoint mat (trans (cdr (assoc 10 enx)) 0 ocs)) ocs 0))
  59.             (LM:defaultprops enx)
  60.            )
  61.          )
  62.         )
  63.         ;; 处理直线对象
  64.         ((= "LINE" typ)
  65.          (entmake
  66.            (vl-list*
  67.             '(0 . "LINE")
  68.             (cons 10 (trans (2dprojection:mappoint mat (trans (cdr (assoc 10 enx)) 0 ocs)) ocs 0))
  69.             (cons 11 (trans (2dprojection:mappoint mat (trans (cdr (assoc 11 enx)) 0 ocs)) ocs 0))
  70.             (LM:defaultprops enx)
  71.            )
  72.          )
  73.         )
  74.         ;; 处理多段线、圆弧、圆、椭圆等对象
  75.         ((setq lst (LM:Entity->PointList ent))
  76.          (entmake
  77.            (append
  78.             (list
  79.              '(000 . "LWPOLYLINE")
  80.              '(100 . "AcDbEntity")
  81.              '(100 . "AcDbPolyline")
  82.              (cons 90 (length lst))
  83.              (if (vlax-curve-isclosed ent) '(70 . 1) '(70 . 0))
  84.             )
  85.             (LM:defaultprops enx)
  86.             (mapcar '(lambda (p) (cons 10 (2dprojection:mappoint mat (trans p 0 ent)))) lst)
  87.             (list (assoc 210 enx))
  88.            )
  89.          )
  90.         )
  91.       )
  92.     )
  93.   )

  94.   ;; 结束事务
  95.   (LM:endundo (LM:acdoc))
  96.   (princ)
  97. )

[size=16.002px]将选择的对象投影到指定的参考框中,可以试下!

评分

参与人数 1明经币 +1 收起 理由
寒潮大冬瓜 + 1 很给力!不管用不用得上→精神可嘉!

查看全部评分

回复

使用道具 举报

发表于 2025-1-16 20:09:31 | 显示全部楼层
缺函数,Error: no function definition: 2DPROJECTION:GETREFERENCEFRAME
回复 支持 反对

使用道具 举报

发表于 2025-1-17 20:47:42 | 显示全部楼层
小毛草发出好多代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-5 16:48 , Processed in 0.184386 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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