找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 949|回复: 7

[1103]请问该怎样做到线段标示尺寸及列出计算式?

[复制链接]
发表于 2005-11-3 22:08:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
编程申请:[1103]请问该怎样做到线段标示尺寸及列出计算式?
不知道这样的程序是否有人做过了呢?
若有烦请各位告知一下
感谢

附图:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-4 13:24:06 | 显示全部楼层
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;;;标注多义线各段线长
  4. (defun c:test211 ()
  5.   (CMDLASC0)
  6.   (setq        ss (ssget '((0 . "*LINE")))
  7.         i  -1
  8.   )
  9.   (mkla "线长标注" 4)
  10.   (while (setq s1 (ssname ss (setq i (1+ i))))
  11.     (setq ptlst-a (xyp-get-Vertexes s1 t))
  12.     (while (setq pt1 (car ptlst-a))
  13.       (if (setq ptlst-a (cdr ptlst-a))
  14.         (progn
  15.           (setq        pt2   (car ptlst-a)
  16.                 tx    (rtos (distance pt1 pt2) 2 2)
  17.                 ang   (rad2ang (angle pt1 pt2))
  18.                 pt-tx (xyp-get-RightPoint pt1 pt2 (* sc 100))
  19.           )
  20.           (command "text" "j" "BC" pt-tx (* sc 300) ang tx)
  21.         )
  22.       )
  23.     )
  24.   )
  25.   (CMDLA1)
  26. )
  27. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-4 21:26:26 | 显示全部楼层
也可用考虑用dim来标注长度,eachy写过一个标注多义线各段长度的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-5 00:53:22 | 显示全部楼层
那请问标注后的计算式列表可以做得到吗
另外请问如果只使用cad自带的函数
可以编写的出来吗
不使用其他自定义的函数
希望能够看到原味的程序
期待各位版主们高手们的解答
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-7 14:31:44 | 显示全部楼层
我编了一个,供你参考.
(defun Radian->Degrees (nbrOfRadians)
  (* 180.0 (/ nbrOfRadians pi))
)

(defun c:Dis1 (/     s           m         n        ll1   ll2         t1    NN
               x1        Len1    LENG2 XX1         XX2   LENG1
               p1    ll2text
              )
  (princ "\nSelect line")
  (setq s (ssget))                        ;选择
  (setq m 0)
  (setq n (sslength s))                        ;选择集
  
  (setq ll1 '())                        ;定义长度表
  (setq ll2 0)                                ;定义总长度
  (while (< m n)
    (setq t1 (entget (ssname s m)))
    (if        (= (cdr (assoc 0 t1)) "LINE")
      (progn

        (SETQ NN 0)                        ; NN  点计数器
        (SETQ XX1 (CDR (ASSOC 10 T1)))        ;起点坐标
        (SETQ XX2 (CDR (ASSOC 11 T1)))        ;终点坐标
        (SETQ LENG1 (DISTANCE XX1 XX2))        ;得到直线长度

        (setq ptext1 (mapcar '/ (MAPCAR '+ XX1 XX2) (list 2 2 2)))
        (setq textangle (angle xx1 xx2)) ;获取文本旋转角度
        (if (> textangle (/ pi 2)) (setq textangle (-  textangle pi)))
        (if (> textangle (/ pi 2)) (setq textangle (-  textangle pi)))
        (setq textangle (Radian->Degrees textangle)) ;角度转换
       
        (command "text"
                 "J"
                 "BC"
                 ptext1
                 3
                 textangle
                 (rtos LENG1 2 2)
        )
        (setq ll1 (append ll1 (list leng1)))
      )                                        ;progn
    )                                        ;if
    (setq m (1+ m))
  )                                        ; while
  (princ "\n 所选中的电线长度表:")
  (princ ll1)
  (princ "\n 电线总长度=")
  (setq ll2 0)
  (setq ll2text "")
  (foreach len1 LL1
    (progn
      (setq ll2 (+ ll2 len1))
      (if (= ll2text "")
        (progn
          (setq ll2text (strcat ll2text (rtos len1 2 2)))
        )
        (progn

          (setq ll2text (strcat (strcat ll2text "+") (rtos len1 2 2)))
        )
      )
    )
  )
  (setq ll2text (strcat ll2text "="))
                                        ;(princ ll2text)
                                        ;(princ ll2)
  (setq p1 (getpoint "\n请选择输出点:"))
  (command "text" p1 3 0 (strcat ll2text (rtos ll2 2 2)))
  (PRINC "\n OK")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-7 18:58:53 | 显示全部楼层
最初由 xyz518mm 发布
[B]那请问标注后的计算式列表可以做得到吗
另外请问如果只使用cad自带的函数
可以编写的出来吗
不使用其他自定义的函数
希望能够看到原味的程序
期待各位版主们高手们的解答 [/B]

所谓“自定义函数”也是cad自带函数的具体应用和总结。

比如:
  1. [FONT=courier new]
  2. ;;; ------- _midp -------
  3. ;;;两点之中点
  4. ;;;方式 : (setq pt3 (_midp pt1 pt2))
  5. (defun _midp (p1 p2)
  6.   (list        (/ (+ (car p1) (car p2)) 2)
  7.         (/ (+ (cadr p1) (cadr p2)) 2)
  8.   )
  9. )[/FONT]


完整程序:
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;;;标注多义线各段线长
  4. (defun c:test211 ()
  5.   (CMDLASC0)
  6.   (setq        ss  (ssget '((0 . "*LINE")))
  7.         ttx ""
  8.         l   0
  9.         i   -1
  10.   )
  11.   (mkla "线长标注" 4)
  12.   (while (setq s1 (ssname ss (setq i (1+ i))))
  13.     (setq ptlst-a (xyp-get-Vertexes s1 t))
  14.     (while (setq pt1 (car ptlst-a))
  15.       (if (setq ptlst-a (cdr ptlst-a))
  16.         (progn
  17.           (setq        pt2   (car ptlst-a)
  18.                 leng  (distance pt1 pt2)
  19.                 tx    (rtos leng 2 2)
  20.                 ang   (rad2ang (angle pt1 pt2))
  21.                 pt-tx (xyp-get-RightPoint pt1 pt2 (* sc 100))
  22.                 ttx   (strcat ttx "+" tx)
  23.                 l     (+ l leng)
  24.           )
  25.           (command "text" "j" "BC" pt-tx (* sc 300) ang tx)
  26.         )
  27.       )
  28.     )
  29.   )
  30.   (if (and ttx l)
  31.     (progn
  32.       (setq ttx (strcat ttx "=" (rtos l 2 2)))
  33.       (while (not (setq pt (getpoint "\n计算式标注点 : "))))
  34.       (command "text" "j" "BC" pt (* sc 300) 0 ttx)
  35.     )
  36.   )
  37.   (CMDLA1)
  38. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-8 01:56:43 | 显示全部楼层
做个反映器,长度变化的时候自动更新标注及算式。如何?:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-8 07:44:04 | 显示全部楼层
很不错的提议
不知道狂刀所说的
反应器该怎样进行编写呢?
另外您曾发表过 "增加cad搜索路径"
的程序
不知道是在哪里
可以告知一下吗
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 19:03 , Processed in 0.431917 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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