明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2987|回复: 16

点选标注,显示计算过程并列出文本

  [复制链接]
发表于 2012-10-25 18:53 | 显示全部楼层 |阅读模式
如图,点取标注尺寸后显示计算过程,并列出文本在图纸上
各位大大,帮帮忙了

本帖子中包含更多资源

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

x
发表于 2018-3-11 20:52 | 显示全部楼层
这个编的真的太好了,不知道能不能把标注改成文本数字计算出表达方式呢
;;尺寸运算  by:langjs
(defun c:qq ( / fuh i num obj ss str str1 tt)
  (setq ss (ssget '((0 . "DIMENSION"))))
  (setq fuh "+")
  (while (not (member (setq tt (getstring (strcat "\n请输入运算符号[加(+)/乘(*)] <" fuh ">:")))'("*" "+" ""))))
  (if (/= tt "") (setq fuh tt))
  (if (= fuh "+")(setq num 0) (setq num 1))
  (setq str ""        i 0 )
  (repeat (sslength ss)
    (setq obj (vlax-ename->vla-object (ssname ss i))
          str1 (vla-get-measurement obj)
          i (1+ i)
    )
    (if (= fuh "+")
      (setq num (+ num str1)
            str (strcat str (if (= i 1) "" "+") (rtos str1 2 3))
      )
      (setq num (* num str1)
            str (strcat str (if (= i 1) "" "*") (rtos str1 2 3))
      )
    )
  )
  (entmake (list '(0 . "TEXT") (cons 1 (strcat str "=" (rtos num 2 3))) (cons 10 (getpoint "选择插入点"))
                  (cons 40 (*  (vla-get-textheight obj)(vla-get-scalefactor obj)))
           )
  )
  (princ)
)
发表于 2018-8-14 19:37 | 显示全部楼层
langjs 发表于 2012-11-7 13:03
;;尺寸运算  by:langjs
(defun c:qq ( / fuh i num obj ss str str1 tt)
  (setq ss (ssget '((0 . "DIME ...

你好能不能改成以m为单位
发表于 2017-11-6 14:17 | 显示全部楼层
非常好的代码, 谢谢分享啊。
发表于 2012-10-26 14:09 | 显示全部楼层
期待高手的幫忙
发表于 2012-11-2 15:12 | 显示全部楼层
再頂頂到有人幫忙
发表于 2012-11-7 08:39 | 显示全部楼层
再頂頂到有人幫忙
发表于 2012-11-7 13:03 | 显示全部楼层
;;尺寸运算  by:langjs
(defun c:qq ( / fuh i num obj ss str str1 tt)
  (setq ss (ssget '((0 . "DIMENSION"))))
  (setq fuh "+")
  (while (not (member (setq tt (getstring (strcat "\n请输入运算符号[加(+)/乘(*)] <" fuh ">:")))'("*" "+" ""))))
  (if (/= tt "") (setq fuh tt))
  (if (= fuh "+")(setq num 0) (setq num 1))
  (setq str ""        i 0 )
  (repeat (sslength ss)
    (setq obj (vlax-ename->vla-object (ssname ss i))
          str1 (vla-get-measurement obj)
          i (1+ i)
    )
    (if (= fuh "+")
      (setq num (+ num str1)
            str (strcat str (if (= i 1) "" "+") (rtos str1 2 3))
      )
      (setq num (* num str1)
            str (strcat str (if (= i 1) "" "*") (rtos str1 2 3))
      )
    )
  )
  (entmake (list '(0 . "TEXT") (cons 1 (strcat str "=" (rtos num 2 3))) (cons 10 (getpoint "选择插入点"))
                  (cons 40 (*  (vla-get-textheight obj)(vla-get-scalefactor obj)))
           )
  )
  (princ)
)

评分

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

查看全部评分

发表于 2012-11-7 14:22 | 显示全部楼层
本帖最后由 langjs 于 2012-11-7 14:40 编辑

;;; 面积运算  by:langjs
(defun c:aa (/ m2 name obj pt pt1 pt2 ss)
  (setq ss (ssadd))
  (setq pt1 (getpoint "\n按顺序选择封闭区域顶点:"))
  (while (setq pt2 (getpoint pt1 "\n按顺序选择封闭区域顶点:"))
    (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(62 . 1) (cons 90 2) (cons 10 pt1)(cons 10 pt2)))
    (setq ss (ssadd (entlast) ss) pt1 pt2)
  )
  (command ".region" ss "")
  (setq obj (vlax-ename->vla-object (setq name (entlast))))
  (if (= (cdr (assoc 0 (entget name))) "REGION")
    (progn
      (setq pt (vlax-safearray->list (vlax-variant-value (vla-get-centroid obj)))  m2 (strcat "S=" (rtos (vla-get-area obj) 2 2) "mm2"))
      (entmake (list '(0 . "TEXT") (cons 62 3) (cons 10 pt) (cons 40 3) (cons 1 m2) '(41 . 0.8) '(72 . 1) (cons 11 pt) '(73 . 0)))
      (entdel name)
    )
  )
  (command "erase" ss "")
  (princ)
)
 楼主| 发表于 2012-11-11 21:58 | 显示全部楼层
嗯,不错,谢谢楼上
尺寸运算中,要是能忽略小数点,相同的数值直接乘以个数,如:100*3+150=450,那就完美了。
面积运算中,封闭区域能直接框选,非封闭区域选顶点,最好计算结果为平方,如S=15.3m2
发表于 2012-11-11 23:32 | 显示全部楼层
感谢高手langjs 。支持楼上gwpgc所提的要求,另外再加上一人标注面积的字体高度能设定一个值就更好了,如在1:100的比例中常用的字高设置为500
发表于 2012-11-14 10:42 | 显示全部楼层
再頂頂到有人幫忙
发表于 2012-11-18 20:24 | 显示全部楼层
再顶一顶看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-24 23:52 , Processed in 0.434783 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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