明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3046|回复: 10

各位大侠,能不能帮忙编个等分尺寸的LISP?

[复制链接]
发表于 2012-12-21 23:50:37 | 显示全部楼层 |阅读模式
比如说,尺寸显示是2800,然后要10等分后,就显示280X10=2800
发表于 2012-12-22 08:23:30 | 显示全部楼层
本帖最后由 革天明 于 2012-12-22 08:40 编辑

我留个位置
;;等分尺寸标注
(defun c:dfbz(/ en ii ent dist str)
  (setq en(car(entsel "\请选择要等分的标注:")))
  (setq ii(getint "\n请输入要等分的数目:"))
  (setq ent(entget en))
  (setq dist(cdr(assoc 42 ent)))
  (setq str(strcat (rtos (/ dist ii) 2 2) "×" (itoa ii) "=" (rtos dist 2 2)))
  (setq ent(subst (cons 1 str) (assoc 1 ent) ent))
  (entmod ent)
)
发表于 2012-12-22 08:39:23 | 显示全部楼层
  1. ;;; 等分尺寸,如尺寸值为1000,等分5份,写成:200X5=1000;
  2. ;;; 程序设计:USER2128 于 2012.12.22
  3. (defun c:tt ( / ss ent dist num txt)
  4.   (if (and (setq ss (entsel "\n选择尺寸:"))
  5.            (ssget (cadr ss) '((0 . "DIMENSION")))
  6.            (setq ent (entget (car ss)))
  7.            (setq dist (cdr (assoc 42 ent)))
  8.            )
  9.     (progn
  10.       (initget 6 "Number")
  11.       (setq num (getreal "\n输入等分距离/<回车输入等分数量N>: "))
  12.       (if num
  13.         (setq txt (/ dist num)
  14.               txt (strcat (rtos num 2) "X" (rtos txt 2) "=<>")
  15.               )
  16.         (progn (initget 7)
  17.           (setq num (getreal "\n输入等分数量: ")
  18.                 txt (/ dist num)
  19.                 txt (strcat (rtos txt 2) "X" (rtos num 2) "=<>")
  20.                 ))
  21.         )
  22.       (setq ent (subst (cons 1 txt) (assoc 1 ent) ent))
  23.       (entmod ent)
  24.       )
  25.     (princ "\n未选取实体, 或非尺寸实体!")
  26.     )
  27.   (princ))

点评

adc
等分数量正常应该是整数才对  发表于 2012-12-22 13:50
你的程序在显示方面做了更好,我的乘完之后不相等了,因为取小数位置的原因  发表于 2012-12-22 08:46
发表于 2012-12-22 13:35:22 | 显示全部楼层
转一个站内的    ;;自动将标注等分 明经 ZZXXQQ
    (defun c:test ()
     (if (setq ss (ssget '((0 . "DIMENSION")(-4 . "<OR")(70 . 32)(70 . 33)(70 . 34)(70 . 37)(-4 . "OR>")))) (progn
      (setvar "DIMZIN" 8)
      (setvar "LUPREC" 1)           ; 此处设定小数精度
      (setq i 0)
      (setq div (getint "\n输入要等分的量: "))
      (repeat (sslength ss)
       (setq ent (entget(ssname ss i))
             txt (cdr(assoc 42 ent))
             dtxt (if(>(cdr(assoc 70 ent))33)(rtos(/(* txt 180) pi div) 2 0)(rtos(/ txt div)))
             ent (subst (cons 1 (strcat (itoa div) "x" dtxt "=<>")) (assoc 1 ent) ent))
       (entmod ent)
       (setq i (1+ i))
      )
     ))
     (princ)
    )
 楼主| 发表于 2012-12-22 18:43:32 | 显示全部楼层
USER2128 发表于 2012-12-22 08:39

标注的尺寸为什么会显示“未选取实体, 或非尺寸实体”?
发表于 2012-12-22 18:56:06 | 显示全部楼层
YF/db 发表于 2012-12-22 18:43
标注的尺寸为什么会显示“未选取实体, 或非尺寸实体”?

“未选取实体, 或非尺寸实体”,请按字面去理解:请选(并选中)标注尺寸(实体)
 楼主| 发表于 2012-12-24 11:33:36 | 显示全部楼层
USER2128 发表于 2012-12-22 18:56
“未选取实体, 或非尺寸实体”,请按字面去理解:请选(并选中)标注尺寸(实体)

帮忙试下这个DWG的尺寸标注,我用阁下的lsp还会有这样的问题

本帖子中包含更多资源

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

x

点评

在提示“选择尺寸:”时,请你移动鼠标到尺寸文本(如图中的2800),并且鼠标处的小框框一定要靠着字(字形成的线条)上,然后按鼠标左键,然后再看屏幕下方的提示操作。如再不会,请你参加培训班,专学:如何单选。  发表于 2012-12-26 08:13
发表于 2012-12-24 12:35:50 | 显示全部楼层
帮顶一个,,,,,,
发表于 2012-12-24 18:49:21 | 显示全部楼层
YF/db 发表于 2012-12-24 11:33
帮忙试下这个DWG的尺寸标注,我用阁下的lsp还会有这样的问题
  1. ;;; 等分尺寸,如尺寸值为1000,等分5份,写成:200X5=1000;
  2. ;;; 程序设计:USER2128 于 2012.12.24
  3. (defun c:tt ( / ss ent dist num txt)
  4.   (defun num2txt (num n / txt)
  5.     (setq txt (rtos num 2 n))
  6.     (if (= (substr txt (- (strlen txt) 1)) ".0")
  7.       (setq txt (substr txt 1 (- (strlen txt) 2)))
  8.       (setq txt txt)
  9.       ))
  10.   (if (and (setq ss (entsel "\n选择尺寸:"))
  11.            (ssget (cadr ss) '((0 . "DIMENSION")))
  12.            (setq ent (entget (car ss)))
  13.            (setq dist (cdr (assoc 42 ent)))
  14.            )
  15.     (progn
  16.       (initget 6 "Number")
  17.       (setq num (getreal "\n输入等分距离/<回车输入等分数量N>: "))
  18.       (if num
  19.         (setq txt (/ dist num)
  20.               txt (strcat (num2txt num 1) "X" (num2txt txt 1) "=<>")
  21.               )
  22.         (progn (initget 7)
  23.           (setq num (getreal "\n输入等分数量: ")
  24.                 txt (/ dist num)
  25.                 txt (strcat (num2txt txt 1) "X" (num2txt num 1) "=<>")
  26.                 ))
  27.         )
  28.       (setq ent (subst (cons 1 txt) (assoc 1 ent) ent))
  29.       (entmod ent)
  30.       )
  31.     (princ "\n未选取实体, 或非尺寸实体!")
  32.     )
  33.   (princ))

 楼主| 发表于 2012-12-27 21:13:18 | 显示全部楼层
USER2128 发表于 2012-12-24 18:49

测试了下,用CAD的标注可以等分,但是用天正标的尺寸无法等分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-2 16:37 , Processed in 0.199685 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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