明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1200|回复: 1

[已解答] 求助这个修改标注脚点位置的函数为什么不稳定,有时会将标注改跑掉?

[复制链接]
发表于 2015-9-16 15:39:15 | 显示全部楼层 |阅读模式
这个函数存在的问题如题,我实在是不清楚为什么了,有时修改结果是正确的,有时又会跳跑掉
什么原因呢?大神请出手调教,不胜感激……
  1. ;函数说明:选择一个标注、输入一点,修改所选择标注的脚点位置
  2. (defun c:tt ()
  3.   (setq
  4.     N_DimEntName (car (entsel))
  5.     N_GetPoint (getpoint)
  6.     N_DimStart (cdr (assoc 10 (entget N_DimEntName)));取得dim尺寸的起点
  7.     N_DimStartPoint (cdr (assoc 14 (entget N_DimEntName)));取得dim尺寸脚的起点
  8.     N_DimEndPoint (cdr (assoc 13 (entget N_DimEntName)));取得dim尺寸脚的起点
  9.     N_DimDistance (cdr (assoc 42 (entget N_DimEntName)));取得dim尺寸的测量长度
  10.     N_DimEnd (polar N_DimStart (+ (* 0.5 pi) (angle N_DimStart N_DimStartPoint)) N_DimDistance);取得dim尺寸的终点
  11.     N_PerPoint (PerToLine N_GetPoint N_DimStart N_DimEnd)
  12.     N_NewStartPoint (polar N_DimStart (angle N_PerPoint N_GetPoint) (distance N_PerPoint N_GetPoint))
  13.     N_NewEndPoint (polar N_DimEnd (angle N_PerPoint N_GetPoint) (distance N_PerPoint N_GetPoint))
  14.     N_EntList (subst (cons 14 N_NewStartPoint ) (assoc 14 (entget N_DimEntName)) (entget N_DimEntName))
  15.     N_EntList (subst (cons 13 N_NewEndPoint ) (assoc 13 N_EntList) N_EntList)
  16.   )
  17.   (entmod  N_EntList)
  18. )
  19. (defun PerToLine (cp p1 p2 / norm)
  20.   (setq norm (mapcar '- p2 p1)
  21.     p1 (trans p1 0 norm)
  22.     cp (trans cp 0 norm)
  23.   )
  24.   (trans (list (car p1) (cadr p1) (caddr cp)) norm 0)
  25. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-9-16 18:03:58 | 显示全部楼层
;函数说明:选择一个标注、输入一点,修改所选择标注的脚点位置
;万分感谢edata百忙之中抽出时间帮忙抓虫修改,问题完美解决。
(defun N::ReSetDim ()
        (setq
                N_DimEntName (car (entsel))
                N_GetPoint (getpoint)
                N_DimStart (cdr (assoc 10 (entget N_DimEntName)));取得dim尺寸的起点
                N_DimStartPoint (cdr (assoc 14 (entget N_DimEntName)));取得dim尺寸脚的起点
                N_DimEndPoint (cdr (assoc 13 (entget N_DimEntName)));取得dim尺寸脚的起点
                ;N_DimDistance (cdr (assoc 42 (entget N_DimEntName)));取得dim尺寸的测量长度
                N_DimDistance (distance (PerToLine N_DimEndPoint N_DimStart N_DimStartPoint) N_DimEndPoint)
                ;N_DimEnd (polar N_DimStart (+ (* 0.5 pi) (angle N_DimStart N_DimStartPoint)) N_DimDistance);取得dim尺寸的终点
                N_PerPoint (PerToLine N_GetPoint N_DimStart N_DimStartPoint)
                ;N_NewStartPoint (polar N_DimStart (angle N_PerPoint N_GetPoint) (distance N_PerPoint N_GetPoint))
                N_NewStartPoint N_PerPoint
                ang (angle (PerToLine N_DimEndPoint N_DimStart N_DimStartPoint) N_DimEndPoint)
                N_EntList (entget N_DimEntName)
                N_NewEndPoint (polar N_NewStartPoint ang  N_DimDistance)
                N_EntList (subst (cons 14 N_NewStartPoint ) (assoc 14 N_EntList) N_EntList)
                N_EntList (subst (cons 13 N_NewEndPoint ) (assoc 13 N_EntList) N_EntList)
        )
        (setq a (entget N_DimEntName))
        (entmod        N_EntList)
        (setq b (entget N_DimEntName))
        ;(command "line" N_DimStart N_NewStartPoint "" "line" N_DimEnd N_NewEndPoint "")
)
(defun PerToLine (cp p1 p2 / norm)
        (setq norm (mapcar '- p2 p1)
                p1 (trans p1 0 norm)
                cp (trans cp 0 norm)
        )
        (trans (list (car p1) (cadr p1) (caddr cp)) norm 0)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-29 04:41 , Processed in 0.178847 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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