明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1254|回复: 5

[源码] 转角/对齐标注对齐--没写过,近几天用上刚写的分享

[复制链接]
发表于 2023-8-20 18:10:06 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2023-8-22 11:19 编辑

很少用,临时写的,需要其他控制的自己补充。

先选要对齐的一组转角/对齐标注,再指定对齐的基准(其中一个标注)

(defun perppp (P p1 p2);垂足  
  (inters p1 p2 p(polar p(+ (* 0.5 pi)(angle p1 p2))10.0)nil)
)

;(dimsduiqi(setq e(car(entsel)))(setq ss(ssget)))
(defun dimsduiqi(e ss / e0 es ang ang1 e10 e13 e14 p10 p101 p13 p131 p14)        
        (setq es(entget e))
        (setq p10(cdr(assoc 10 es)))
        (setq e14(assoc 14 es) p14(cdr e14))
        (setq ang(angle p14 p10))
        (setq p101(polar p10 (+ (* pi 0.5)ang) 10))
        (setq p13(cdr(assoc 13 es)))
        (setq p131(perppp p13 p10 p14));perppp垂足函数
        (entmod(subst(cons 14 p131)e14 es))
        (repeat(setq ss1(ssadd) n(sslength ss))
                (setq e0(ssname ss(setq n(1- n))) es(entget e0))
                (setq e10(assoc 10 es) e13(assoc 13 es) e14(assoc 14 es))
                (setq ang1(- ang(angle (cdr e14)(cdr e10))))
                (if(or(equal 0 ang1 1e-6)(equal pi ang1 1e-6))(progn
                        (setq es(subst(cons 10(perppp (cdr e10) p10 p101))e10 es))
                        (setq es(subst(cons 13(perppp (cdr e13) p13 p131))e13 es))
                        (entmod(subst(cons 14(perppp (cdr e14) p13 p131))e14 es))
                        (ssadd e0 ss1)                        
                ))                                                
        )(list ang e ss1);这个数据留着扩展-下面函数使用
)

;对齐即完成
(defun c:dmdq( / e ss frs)
        (setq frs '((0 . "DIMENSION")(-4 . "<or")(70 . 32)(70 . 33)(-4 . "or>")))
        (princ"\n选择拟对齐标注集:")
        (if        (and (or(setq ss(ssget "i" frs))(setq ss(ssget frs)))
                        (sssetfirst nil ss)
                        (setq e(car(entsel " \n指定基准标注对象:")))
                        (ssmemb e ss)
                )
                (dimsduiqi e ss)
        )
)
;对齐后移动
(defun c:dmdm( / cmd ls Wob)                                                
        (if(setq ls(c:dmdq))(progn               
                (setq cmd(if command-s command-s vl-cmdf))
                (setq Wob(Vlax-Get-Or-Create-Object "WScript.Shell" ))
                (cmd "_move" (caddr ls) "" "non" (cdr(assoc 10(entget(cadr ls)))))                        
                (Vlax-Invoke-Method Wob 'Sendkeys(strcat"<"(angtos(car ls)0 4)"{Enter}"))
                (cmd pause)
                (vlax-release-object Wob)
        ))
)


本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
tigcat + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-8-20 19:15:05 | 显示全部楼层
很棒。如果有图片演示将更好了。
发表于 2023-8-20 20:01:21 | 显示全部楼层
如果有图片演示将更好了。
发表于 2023-8-20 21:31:23 | 显示全部楼层
放个GIF ,效果一目了然,方便大家知道效果
 楼主| 发表于 2023-8-22 11:49:59 | 显示全部楼层
补了一张动态图
发表于 2023-8-25 08:00:10 | 显示全部楼层
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 02:57 , Processed in 0.192635 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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