明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2859|回复: 7

一段程序“自动引线编号”的如何把数字出变成圆或者直线

[复制链接]
发表于 2012-4-11 17:37:39 | 显示全部楼层 |阅读模式
本帖最后由 lvrenfei 于 2012-4-14 07:23 编辑

一段程序“自动引线编号”的如何把数字处变成圆或者直线的,现在是正方形的, 正方形不合标准。哪位大侠帮我修改下


(defun C:TX()
   (setvar "cmdecho" 0)
   (setq os (getvar "osmode"))
   (setvar "osmode" 0)
   (setq dd (getdist "\n正方形边长 <10>: "))
   (if (null dd) (setq dd 10))
   (setq num (getint "\n起始编号 <1>: "))
   (if (null num) (setq num 1))
   (setq dd2 (/ dd 5))
   (setq pt1 (getpoint "\n第一点: "))
   (while (/= pt1 nil)
      (command "donut" 0 dd2 pt1 "")
      (setq pt2 (getpoint pt1 "\n第二点: "))
      (command "line" pt1 pt2 "")
      (command "polygon" 4 "e" pt2 (polar pt2 0 dd))
      (setq en1 (entlast))
      (command "text" "m" (polar (polar pt2 0 (/ dd 2)) (/ pi 2) (/ dd 2))
                     (/ dd 2) 0 (itoa num))
      (setq en2 (entlast))
      (setq pp1 pt2)
      (setq pp2 (polar pp1 0 dd))
      (setq pp3 (polar pp2 (/ pi 2) dd))
      (setq pp4 (polar pp1 (/ pi 2) dd))
      (setq pp_0 (polar pp1 (/ pi 2) (/ dd 2)))
      (setq pp_90 (polar pp1 0 (/ dd 2)))
      (setq pp_180 (polar pp2 (/ pi 2) (/ dd 2)))
      (setq pp_270 (polar pp3 pi (/ dd 2)))
      (setq pp pt2)
      (setq ang (angle pt1 pt2))
      (cond ((and (> ang (* pi 0.5)) (< ang pi)) (setq pp pp2))
            ((and (> ang pi) (< ang (* pi 1.5))) (setq pp pp3))
            ((and (> ang (* pi 1.5)) (< ang (* pi 2))) (setq pp pp4)))
      (cond ((= ang 0) (setq pp pp_0))
            ((= ang (/ pi 2)) (setq pp pp_90))
            ((= ang pi) (setq pp pp_180))
            ((= ang (* pi 1.5)) (setq pp pp_270)))
      (command "move" en1 en2 "" pp pt2)
      (setq num (1+ num))
      (setq pt1 (getpoint "\n第一点: ")))
   (princ)
)

本帖子中包含更多资源

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

x
发表于 2012-4-11 20:09:01 | 显示全部楼层
看来最近关于标号的程序比较受人关注。可是我的大规模程序“明细表”有那么多方法反倒沉没了

点评

学习是要兴趣(自愿)和动力(被逼)支撑的。。。大多数人这2种情况都不存在!  发表于 2012-4-11 22:49
程序太长,是没有人愿意看的!现在都是拿来主义,拿来能用就好!愿意去学习研究的人已经很少了!  发表于 2012-4-11 22:12
回复 支持 0 反对 1

使用道具 举报

发表于 2012-4-11 22:03:05 | 显示全部楼层
http://bbs.mjtd.com/thread-92888-1-1.html

你看看这个贴子,上面有结果了,你可以直接用了
发表于 2012-4-11 22:20:12 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setvar "cmdecho" 0)
  3.   (setq os (getvar "osmode"))
  4.   (setvar "osmode" 0)
  5.   (setq dd (getdist "\n圆半径<10>: "))
  6.   (if (null dd)
  7.     (setq dd 10)
  8.   )
  9.   (setq num (getint "\n起始编号<1>: "))
  10.   (if (null num)
  11.     (setq num 1)
  12.   )
  13.   (setq dd2 (/ dd 5.))
  14.   (while (setq pt1 (getpoint "\n第一点<退出>: "))
  15.     (command "donut" 0 dd2 pt1 "")
  16.     (setq pt2  (getpoint pt1 "\n第二点<退出>: ")
  17.           pt2a (polar pt2 (angle pt2 pt1) dd)
  18.     )
  19.     (command "line" pt1 pt2a "")
  20.     (command "circle" pt2 dd)
  21.     (command "text" "m" pt2 (/ dd 2) 0 (itoa num))
  22.     (setq num (1+ num))
  23.   )
  24.   (princ)
  25. )
发表于 2012-4-11 22:29:05 | 显示全部楼层
  1. ;; 伪源码方式,需要e派工具箱的支持
  2. (defun c:tt (/ p1 p2 p2a s1 s2 s3 s4)
  3.   (cmdla0)
  4.   (xyp-initSet '(dd num) '(10. 1))
  5.   (setvar "osmode" 0)
  6.   (setq        dd  (Udist 7 "" "圆半径<输入或鼠标直接量取>" dd nil)
  7.         num (Uint 7 "" "起始编号" num)
  8.   )
  9.   (while (and (setq p1 (getpoint "\n第一点<退出>: "))
  10.               (setq p2 (getpoint p1 "\n第二点<退出>: "))
  11.          )
  12.     (xyp-Group0)
  13.     (setq p2a (polar p2 (angle p2 p1) dd)
  14.           s1  (XYP-ENTMAKE-DONUT 0 (/ dd 5.) p1)
  15.           s2  (xyp-line p1 p2a)
  16.           s3  (xyp-circle p2 dd)
  17.           s4  (xyp-Text 5 p2 (itoa num))
  18.           num (1+ num)
  19.     )
  20.     (xyp-SubUpd s4 40 dd)
  21.     (xyp-Group1)
  22.   )
  23.   (cmdla1)
  24. )
 楼主| 发表于 2012-4-13 08:14:38 | 显示全部楼层
cabinsummer 发表于 2012-4-11 20:09
看来最近关于标号的程序比较受人关注。可是我的大规模程序“明细表”有那么多方法反倒沉没了

谢谢楼上同学的批评与支持,一定努力学习
发表于 2016-8-2 18:20:55 | 显示全部楼层
xyp1964 发表于 2012-4-11 22:20

你好,你这个程序,编号字符插入点pt2之外,可不可以帮我增设另外一个字符插入点,,,就像图片那样。至于字符内容 (itoa ,,,))我自己定义。谢谢你,我摸索了好久,一直没法定义那个点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-21 03:49 , Processed in 0.247682 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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