明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1912|回复: 8

帮帮忙,好心人

[复制链接]
发表于 2004-3-13 11:31:00 | 显示全部楼层 |阅读模式
(defun c:biaoshi(/ n pt txt pt1 pt2 pt3 pttxt)
(setq n(getint "\n 输入标示零件个数: " )
txt(getstring "\n 输入起始零件序号: " )
pt(getpoint "\n 输入标记线连接点: " )
pt1(list (+ (car pt) 4) (cadr pt))
pttxt(list (+ (car pt) 2) (+ (cadr pt) 1.8))
) (setq cl(getvar "clayer"))
(setq os(getvar "osmode"))
(setvar "clayer" "文字标注")
(setvar "osmode" 0) (command"line" pt pt1 "")
(command"text" "j" "mc" pttxt "2.5" "0" txt "" "")
(repeat (- n 1)
(setq pt2(polar pt1 (/ (* pi 7) 4) 1.4))
(command"line" pt1 pt2 "")
(setq pt3(polar pt2 (/ pi 4) 1.4))
(setq pt1(list (+ (car pt3) 4) (cadr pt3)))
(command"line" pt2 pt3 pt1 "")
(setq pttxt(list (+ (car pt3) 2) (+ (cadr pt) 1.8))) ;定义文字插入点
;这里要请教高手 (command "text" "" "" pttxt "" "" txt "" "") ;插入加了1的文字
)
(setvar "clayer" cl)
(setvar "osmode" os)
) 各位高手帮下忙,帮我补一下这个程序的关键部分,我是要填入的文字在原来的基础上依次加1,像图中的21、22一样。谢谢

本帖子中包含更多资源

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

x
发表于 2004-3-13 12:13:00 | 显示全部楼层
本帖最后由 作者 于 2004-3-13 13:21:15 编辑

請自行對照其中的差異
  1. (defun c:biaoshi(/ n pt txt pt1 pt2 pt3 pttxt)
  2.    (setq n(getint "\n ?入?示零件??: " )
  3.   txt(getstring "\n ?入起始零件序?: " )
  4.   pt(getpoint "\n ?入????接?: " )
  5.   pt1(list (+ (car pt) 4) (cadr pt))
  6.   pttxt(list (+ (car pt) 2) (+ (cadr pt) 1.8))
  7.   )   (setq cl(getvar "clayer"))
  8.    (setq os(getvar "osmode"))
  9.    (setvar "clayer" "文字?注")
  10.    (setvar "osmode" 0)   (command"line" pt pt1 "")
  11.    (command"text" "mc" pttxt 2.5 0 txt)
  12.    (repeat (- n 1)
  13.        (setq pt2(polar pt1 (/ (* pi 7) 4) 1.4))
  14.        (command"line" pt1 pt2 "")
  15.        (setq pt3(polar pt2 (/ pi 4) 1.4))
  16.        (setq pt4(list (+ (car pt3) 4)   (cadr pt3)))
  17.        (command"line" pt2 pt3 pt4 "")
  18.        (setq pttxt(list (+ (car pt3) 2) (+ (cadr pt) 1.8)))     ;定?文字插入?
  19.          ;?里要?教高手       (setq txt (rtos (+ (atoi txt) 1) 2 0))
  20. (print txt)
  21.   
  22.        (command "text" "MC" pttxt 2.5 0 txt)       ;插入加了1的文字
  23.      
  24.        (setq pt1 pt4)
  25.       
  26.       
  27.      )
  28.    (setvar "clayer" cl)
  29.    (setvar "osmode" os)
  30.    )
发表于 2004-3-13 12:15:00 | 显示全部楼层
如果能理解这句话,相信就可以解决了


(setq txt "20")


(setq txt (rtos (+ (atoi txt) i)));i=0,1,2,3,4,...
 楼主| 发表于 2004-3-13 17:50:00 | 显示全部楼层
好极了。 (atoi string) 此函数可用来将字符串转换成整型数。

(reverse lst)

此函数将依据所给定的 modeprecisionAutoCAD UNITMODE 系统变量及DIMZIN尺寸变量来返回一字符串以表示 numbermode precision是整型数, 表示所选择的线性单位模式和精确度。AutoCAD 中所提供的mode 值如下:

RTOS 模式

编辑格式

1

科学记数 (Scientific)

2

十进制 (Decimal)

3

工程 (尺和十进位寸) (Engineering)

4

建筑 (尺和分数寸) (Architectural)

5

任意的分数单位 (Fractional)

为什么要改成十进制啊?

发表于 2004-3-13 17:55:00 | 显示全部楼层
为什么?没有人要求你用10进制啊,如果你愿意,可以随便用。。。
 楼主| 发表于 2004-3-13 18:12:00 | 显示全部楼层
(setq txt (rtos (+ (atoi txt) 1) 2 0))
这不是十进制是什么,
发表于 2004-3-13 18:26:00 | 显示全部楼层
你给的是函数介绍,介绍中并没有要求这样,所以。。。


程序这样写也没有任何理由,你需要可以改成别的。。。因为写出来的程序可能都是某几种可能的一种,不可能都写全了,如果这样问就问不完了,,,比如,你为什么用红色的字,为什么要用那个表情,为什么你的汉字数是9个???
发表于 2004-3-13 19:59:00 | 显示全部楼层
呵呵,有趣
发表于 2004-3-13 21:05:00 | 显示全部楼层
这是5年前写的程序,一直没有做修改,你做个参考吧:
  1. ;; 版权所有 (C) 1991-2000   明经通道 郑立楷
  2. ;;
  3. ;;     本软件免费可供进行任何用途需求的拷贝、修改及发行, 但请遵循下述原则:
  4. ;;
  5. ;;     1)   上列的版权通告必须出现在每一份拷贝里。
  6. ;;     2)   相关的说明文档也必须载有版权通告及本项许可通告。
  7. ;;
  8. ;;     本软件仅提供作为应用上的参考, 而未声明或隐含任何保证; 对于任何特殊
  9. ;;     用途之适应性, 以及商业销售所隐含作出的保证, 在此一概予以否认。
  10. ;;
  11. ;;     http://www.mjtd.com     http://www.mccad.net
  12. ;;
  13. ;;     e-mail:mccad@mjtd.com
  14. ;;
  15. ;;
  16. (princ"\n总装明细序号填写程序")
  17. (defun c:mxxh(/ oldecho oldlayer oldstyle oldsize oldpwid oldsnap oldortho
  18.                                sele txto txt pt_s pt_m pt_t pt_r pt_l pt_c pt_e tt num)
  19.    (setq oldecho (getvar "cmdecho"))
  20.    (setvar "cmdecho" 0)
  21.    (setq oldlayer (getvar "clayer"))
  22.              (if (=(tblobjname "LAYER" "3") nil)
  23.                      (progn
  24.                              (entmake (list
  25.                                                        '(0 . "LAYER")
  26.                                                        '(100 . "AcDbSymbolTableRecord")
  27.                                                        '(100 . "AcDbLayerTableRecord")
  28.                                                        '(6 . "CONTINUOUS")
  29.                                                        '(62 . 3)
  30.                                                        '(70 . 0)
  31.                                                          (cons 2 "3")
  32.                                                )
  33.                              )
  34.                      )
  35.              )
  36.      (setvar "clayer" "3")
  37.    (setq oldstyle (getvar "textstyle"))
  38.    (setq oldsize (getvar "textsize"))
  39.    (setq oldpwid (getvar "plinewid"))
  40.    (setvar "plinewid" 0)
  41.    (setq oldsnap(getvar"osmode"))
  42.    (setq oldortho(getvar"orthomode"))
  43.    (initget "Single Horizonal Vertical")
  44.    (setq sele(getkword "\n部装明细序号填写方式[水平多项(H)/垂直多项(V)/单一序号(S)]<单一序号>:"))
  45.    (if (not sele)
  46.        (setq sele "Single")
  47.    )
  48.    (setq txt0 1)
  49.    (while (/= sele "eXit")
  50.        (initget 1)
  51.                (setvar "osmode" 0)
  52.   (setq pt_s(getpoint "\n选择引线起点:"))
  53.   (initget 1)
  54.                (setvar "osmode" oldsnap)
  55.                (setvar "orthomode" 0)
  56.   (setq pt_m(getpoint pt_s"\n选择序号起点:"))
  57.   (setq pt_t (polar pt_m (/ PI 2) 3.5))
  58.   (command "donut" "0" "0.5" "non" pt_s "")
  59.   (cond
  60.      ((= sele "Single")
  61.          (princ (strcat"\n请输入序号<" (itoa txt0) ">:"))
  62.     (setq txt(getint))
  63.     (if (not txt)
  64.        (setq txt txt0)
  65.     )
  66.     (setq txt0 (+ txt 1))
  67.     (if (> (car pt_m)(car pt_s))
  68.        (progn
  69.            (setq pt_c (polar pt_m PI 4))
  70.       (setq pt_e (polar pt_m 0   4))
  71.        )
  72.        (progn
  73.            (setq pt_c (polar pt_m 0   4))
  74.       (setq pt_e (polar pt_m PI 4))
  75.        )
  76.     )
  77.     (command "pline" "non" pt_s "non" pt_c "non" pt_e "")
  78.     (command "text" "m" "non" pt_t "5" "0" txt)
  79.      )
  80.      ((= sele "Vertical")
  81.          (initget 1)
  82.     (setq num(getint"\n请输入同零件组的项数:"))
  83.     (if (>(car pt_m)(car pt_s))
  84.        (progn
  85.            (setq pt_c(polar pt_m PI 4))
  86.       (setq pt_e(polar pt_m 0   4))
  87.        )
  88.        (progn
  89.            (setq pt_c(polar pt_m 0   4))
  90.       (setq pt_e(polar pt_m PI 4))
  91.        )
  92.     )
  93.     (setq tt 1)
  94.     (while(<= tt num)
  95.        (princ(strcat "\n请输入序号<" (itoa txt0) ">:"))
  96.        (setq txt(getint))
  97.        (if (not txt)
  98.            (setq txt txt0)
  99.        )
  100.        (setq txt0 (+ txt 1))
  101.                    (command "pline" "non" pt_s "non" pt_c "non" pt_e "")
  102.        (command "text" "m" "non" pt_t "5" "0" txt)
  103.        (setq pt_s pt_c)
  104.        (setq pt_c (polar pt_c (/ PI 2) 8))
  105.        (setq pt_e (polar pt_e (/ PI 2) 8))
  106.        (setq pt_t (polar pt_t (/ PI 2) 8))
  107.        (setq tt (1+ tt))
  108.     )
  109.      )
  110.      ((= sele "Horizonal")
  111.          (initget 1)
  112.     (setq num(getint"\n请输入同零件组的项数:"))
  113.     (setq pt_l(polar pt_m PI 4))
  114.     (setq pt_r(polar pt_l 0 (+(*(- num 1) 10.828) 8)))
  115.     (if (and (<(car pt_l)(car pt_s))(>(abs(- (car pt_l) (car pt_s)))(abs(-(car pt_r)(car pt_s)))))
  116.        (progn
  117.            (command "pline" "non" pt_s "non" pt_r "non" "@2<-135" "non" "@8<180" "")
  118.          (setq tt (1+ tt))
  119.       )
  120.        )
  121.        (progn
  122.            (command "pline" "non" pt_s "non" pt_l "non" "@2<-45" "non" "@8<0" "")
  123.          (setq tt(1+ tt))
  124.       )
  125.        )
  126.     )
  127.          (setq tt 1)
  128.     (while (<= tt num)
  129.        (princ (strcat "\n请输入序号<" (itoa txt0) ">:"))
  130.        (setq txt (getint))
  131.        (if (not txt)
  132.            (setq txt txt0)
  133.        )
  134.        (setq txt0 (+ txt 1))
  135.        (command "text" "m" "non" pt_t "5" "0" txt)
  136.        (setq pt_t(polar pt_t 0 10.828))
  137.        (setq tt (1+ tt))
  138.     )
  139.      )
  140.   )
  141.        (initget "Single Horizonal Vertical eXit")
  142.        (setq sele(getkword "\n部装明细序号填写方式[水平多项(H)/垂直多项(V)/单一序号(S)/退出(X)]<退出>:"))
  143.        (if (not sele)
  144.            (setq sele "eXit")
  145.        )
  146.    )
  147.    (setvar "clayer" oldlayer)
  148.    (setvar "cmdecho" oldecho)
  149.    (setvar "textstyle" oldstyle)
  150.    (setvar "textsize" oldsize)
  151.    (setvar "plinewid" oldpwid)
  152.    (setvar "orthomode" oldortho)
  153.    (princ)
  154. )
  155. (princ"已装载")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 20:26 , Processed in 0.184111 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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