明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1917|回复: 4

[求助]急求一个标注的LSP程序,在线等

[复制链接]
发表于 2008-1-18 17:31 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-1-18 17:32:21 编辑

(如图所示)图中红色的多边形为多根PL线组成的(每根PL线都是断开的),图层为ZD,想要标注每一条边的边长,但是有的边太短,标不下,想要拉出来标注(单位为米),求个LSP来实现。万分感谢。。。。

本帖子中包含更多资源

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

x
 楼主| 发表于 2008-1-18 19:32 | 显示全部楼层

我顶,没有人帮忙吗???

发表于 2008-1-19 22:45 | 显示全部楼层

计算每条边的长(与字高比较一下大小)

如果在一个数值之内就延出来标注

我想应该能做到

发表于 2008-1-20 22:52 | 显示全部楼层

我想这个程序也许能帮你,你自己去改吧

;;;zbbz

;;; 标注时是按当前的UCS的,但是数值还是 WCS 的,

;;; 不用转换到 WCS。


;============================== 开始 ==============================

(defun c:zbbz()

;============================== 设置 ==============================

  (prompt "\n输入字高:<") (princ (getvar "textsize")) (princ ">")
  (setq 输入字高 (getreal))
  (if (not 输入字高)
      (setq 字高 (getvar "textsize"))
      (setq 字高 输入字高)
  )
  (setq old_dimzin (getvar "dimzin"))
  (setvar "dimzin" 1)
  (setq 精度 3)                     
  (setvar "cmdecho" 0)
  (标注)
)


;====================== 取起点的位置及数值 ======================

  (defun 标注()
    (setq 标注点 (getpoint "\n点取标注点:"))
    (if 标注点 (继续) (退出))
  )

  (defun 继续()
    (setq 绝对标注点 (trans 标注点 1 0))
    (setq x_坐标值 (rtos (car   绝对标注点) 2 精度))
    (setq y_坐标值 (rtos (nth 1 绝对标注点) 2 精度))


;=================== 取标注引线位置及长度和角度 ===================

    (setq 临时起点 (getpoint 标注点 "\n点取标注位置:"))
    (setq 引线长度 (distance 标注点 临时起点))
    (setq 临时角度 (atof (angtos (angle 标注点 临时起点 ) 0 3)))
 

;================= 检查标注引线的角度并设为标准值 =================

    (setq 标准角度 (cond ((<= 临时角度    15)   0)
                         ((<= 临时角度  37.5)  30)
                         ((<= 临时角度  52.5)  45)
                         ((<= 临时角度  67.5)  60)
                         ((<= 临时角度   105)  90)
                         ((<= 临时角度 127.5) 120)
                         ((<= 临时角度   141) 135)
                         ((<= 临时角度   165) 150)
                         ((<= 临时角度   195) 180)
                         ((<= 临时角度 217.5) 210)
                         ((<= 临时角度 232.5) 225)
                         ((<= 临时角度   255) 240)
                         ((<= 临时角度   285) 270)
                         ((<= 临时角度 307.5) 300)
                         ((<= 临时角度 322.5) 315)
                         ((<= 临时角度   345) 330)
                         (0)
                   )
    )

 

;======================= 设标注引线终点的位置 =======================
 
    (setq 起点 (polar 标注点 (angtof (itoa 标准角度) 0) 引线长度))
 

;===================== 设标注线终点的位置及方向 ===================

    (setq x_字符数 (strlen  x_坐标值))
    (setq y_字符数 (strlen  y_坐标值))
    (if (> x_字符数 y_字符数)
        (setq 坐标字符数 x_字符数)
        (setq 坐标字符数 y_字符数)
    )
 
    (setq 坐标字符长 (* 坐标字符数 字高)) 
    (if (and (< 标准角度 270) (> 标准角度 90))
        (setq 标注方向 180)
        (setq 标注方向 0)
    )
 
    (if (= 标注方向 180)
        (setq 终点 (list (- (car 起点) 坐标字符长)  (nth 1 起点)))
        (setq 终点 (list (+ (car 起点) 坐标字符长)  (nth 1 起点)))
    )


;======================== 设标注数字的起点 ========================

    (if (= 标注方向 0) (setq 文字开始点 起点) (setq 文字开始点 终点)) 
    (setq 起点_x (list (car 文字开始点)
                       (+ (nth 1 文字开始点) (/ 字高 3.5))))
    (setq 起点_y (list (car 文字开始点)
                       (- (nth 1 文字开始点) 字高 (/ 字高 3.5))))
 

;======================= 使两个坐标字符等长 =======================

    (setq 相差字符数 (abs(- x_字符数 y_字符数)))
    (setq 补充空格数 "")
    (repeat 相差字符数 (setq 补充空格数 (strcat 补充空格数 " ")))
    (if (= 相差字符数 0)
        (setq x_c (strcat "Y=" x_坐标值) y_c (strcat "X=" y_坐标值)))
 
    (if (and (/= l 0) (> x_字符数 y_字符数)) 
        (setq x_c (strcat "Y=" x_坐标值)
              y_c (strcat "X="  补充空格数 y_坐标值)))
 
    (if (and (/= l 0) (< x_字符数 y_字符数)) 
        (setq x_c (strcat "Y="  补充空格数 x_坐标值)
              y_c (strcat "X=" y_坐标值)))

 
;============================= 标注 ===============================

    (setq old_osmode (getvar "osmode"))
    (setvar "osmode" 0)
    (command "line" 标注点 起点 终点)
    (command "")
    (command "text" 起点_x 字高 "0" y_c)
    (command "text" 起点_y 字高 "0" x_c)
    (setvar "osmode" old_osmode)
    (标注)
  )

;============================== 还原 ==============================

  (defun 退出()
    (setvar "dimzin" old_dimzin)
    (setvar "cmdecho" 1)
    (princ)
  )

发表于 2008-3-1 23:29 | 显示全部楼层

http://hi.baidu.com/alex0007/blog/item/fe18fd1bff3157feae513347.html

dmlen.VLX 3KB 分段标注曲线长度=========>http://eachy.ys168.com/(还不错,只是不知如何改成精度为0,默认为0.00)

估计比较合你用.

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

本版积分规则

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

GMT+8, 2024-5-17 10:21 , Processed in 0.184251 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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