明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 317|回复: 3

【FTA】修复天正转角(基于当前UCS)

[复制链接]
发表于 2024-1-22 16:52 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2024-1-23 10:01 编辑

复制天正对象到不同的UCS下时,转角改变通常需要手动调整。
但对象类型太多了,实操麻烦。干脆写个简单的程序代替这个过程吧。

  1. ;基于当前UCS修复天正对象的转角(除文字外)
  2. (defun C:FTA (/ DOC UCSAng SS i obj)
  3.   (if (null vlax-dump-object) (vl-load-com));;将Visual LISP扩展功能加载到AutoLISP
  4.   (setq DOC (vla-get-ActiveDOCument (vlax-get-acad-object)))
  5.   (defun *error* (x) ;出错函数
  6.     (vla-endundomark Doc) ;结束编组
  7.   )
  8.   
  9.   (while (eq 8 (logand 8 (getvar 'undoctl)))
  10.       (vla-endundomark DOC)
  11.   );关闭以前的编组
  12.   (vla-startundomark Doc) ;记录编组
  13.     (setq UCSAng (atan (cadr (getvar 'ucsxdir)) (car (getvar 'ucsxdir))));UCS相对于世界坐标的夹角
  14.     (if (<= UCSAng 0.0)(setq UCSAng (+ (* 2 pi) UCSAng)));负值修复
  15.     (while
  16.         (and
  17.           (princ "\n——★★★ 请选择天正对象 ★★★——\n")
  18.           (setq SS (ssget '((0 . "TCH_*"))))
  19.         )
  20.         (repeat (setq i (sslength SS))
  21.           (setq obj (Vlax-Ename->Vla-Object (ssname SS (setq i (1- i)))))
  22.           (if
  23.             (and
  24.                 (vlax-property-available-p obj "LayoutRotation") ;存在转角属性
  25.                 (not (wcmatch (Vlax-Get obj 'ObjectName) "TDb*Text"));不是天正文字
  26.             )
  27.             (vlax-Put obj 'LayoutRotation (* 180 (/ UCSAng pi)))
  28.           )
  29.         )
  30.     )
  31.   (vla-endundomark Doc) ;结束编组
  32.   (princ)
  33. )

发表于 2024-1-23 09:51 | 显示全部楼层
天正T20 V9.0  选取不了天正图元
 楼主| 发表于 2024-1-23 10:02 | 显示全部楼层
陈伟 发表于 2024-1-23 09:51
天正T20 V9.0  选取不了天正图元

代码之前写错了,已经更新,再试试

点评

已经好了  发表于 2024-1-23 10:03

评分

参与人数 1明经币 +1 收起 理由
lxl217114 + 1 神马都是浮云

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-2 09:43 , Processed in 0.628927 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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