明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1543|回复: 7

[源码] 标注增强倾斜

[复制链接]
发表于 2020-9-27 23:44 | 显示全部楼层 |阅读模式
本帖最后由 guangdonglbq 于 2020-9-27 23:45 编辑

使用AutoCAD自带的倾斜功能时,标尺界线会倾斜显示,但标注文本始终垂直于尺寸线,整体看起来不是那么协调。使用本程序可使尺寸界线倾斜时,标注文本也倾斜相同角度。
易桥工具箱中的标注“增强倾斜”的功能,使用效果与本程序相同。

;;;标注增强倾斜
(defun DimensionEnhanceTilt(/ entdxf fbasiclineangle fjiajiao foutangle ftargetangle listdirectionpoint1 listdirectionpoint2 listfirstpoint listsecondpoint objectnth ssobjects strobjectname stroutangle)
;(BeginUndoGroup)
        (princ "\n选择对齐尺寸标注:")
        (while (setq ssObjects (ssget '((0 . "DIMENSION")))) ; 创建选择集 ssObjects
                (setq listDirectionPoint1 (getpoint "点取倾斜方向上的第一点:"))
                (setq listDirectionPoint2 (getpoint  listDirectionPoint1 "\n点取倾斜方向上的第二点:"))
                (setq fTargetAngle (angle listDirectionPoint1 listDirectionPoint2 ))
                (command "_.DIMEDIT" "O" ssObjects "" listDirectionPoint1 listDirectionPoint2 )
               
    (setq ObjectNth 0)
    (while (< ObjectNth (sslength ssObjects))
                        (setq strObjectName (ssname ssObjects ObjectNth))
                        (setq entDxf (entget strObjectName))
                        
                        (setq        listFirstPoint (cdr (assoc 13 entDxf)))
                        (setq        listSecondPoint (cdr (assoc 14 entDxf))        )
                        (setq fBasicLineAngle (angle listSecondPoint listFirstPoint ))
                        
      (setq entDxf (entget strObjectName))
                        (setq fJiaJiao (- fBasicLineAngle fTargetAngle))
                        
                        (setq fOutAngle (- (RadToDegree fJiaJiao ) 90.0 ))        
                        
                        (if (> foutangle 180)
                                (setq foutangle (- foutangle 180))
                        )                        
                        (if (< foutangle -180 )
                                (setq foutangle (+ 180 foutangle)))
                        (if (< foutangle -90 )
                                (setq foutangle (+ 180 foutangle)))
                        ;;以上三句if语句可保证文字倾斜后,不出现错误,但未搞清楚不处理时的出错原因。
                        
                        (setq strOutAngle (strcat "{\\Q" (rtos fOutAngle 2 4) ";<>}" )) ;文字倾斜组码(1 . {\\Q16;<>})
                        
                        (entmod (subst (cons 1 strOutAngle)
                                                                (assoc 1 entDxf)
                                                                entDxf
                                                        )
                        )
                        (entupd strObjectName)
                        
                        (setq ObjectNth (1+ ObjectNth))
    )
               
    (princ "\n选择对齐尺寸标注:")
        )
  ;(EndUndoGroup)        
  (princ)
)

;;弧度转为角度
(defun RadToDegree(rad)
(/ (* rad 180.0) pi)
)





"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-9-28 08:14 | 显示全部楼层
本帖最后由 mokson 于 2020-9-28 08:20 编辑

楼主大人辛苦了。感谢您!
但是如何使用,命令是什么? RADTODEGREE?
发表于 2020-9-28 08:58 | 显示全部楼层
不错,不错,严重支持.............
发表于 2020-9-28 23:29 | 显示全部楼层
谢谢!  guangdonglbq  分享程序!!!!!
 楼主| 发表于 2020-9-29 15:45 | 显示全部楼层
mokson 发表于 2020-9-28 08:14
楼主大人辛苦了。感谢您!
但是如何使用,命令是什么? RADTODEGREE?

(DimensionEnhanceTilt)
发表于 2020-9-29 17:40 | 显示全部楼层
命令搞得太长了。
发表于 2020-9-29 18:13 | 显示全部楼层
不错,不错,严重支持........
发表于 2023-12-18 15:59 | 显示全部楼层
今天发现这个很好用!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 16:39 , Processed in 0.632169 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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