明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2403|回复: 9

[已解答] “引线序号球标”诚恳求助

[复制链接]
发表于 2015-5-30 16:19:49 | 显示全部楼层 |阅读模式
各位师兄,前辈!
以下代码淘自明经,原创是哪位真不知道,故在此区域恳求帮忙修正以下问题点
问题点:新建文件刚加载时可以运行,结束后第2次执行命令出错,提示:“ 错误: 参数类型错误: stringp 3”
              另请把乱码译成简体汉字,先在此谢谢!
(defun c:cc()
(setvar "cmdecho" 0)
(if (= ccvar nil)(setq ccvar (list 15 15 1 1 "Y" "")))
(setq r(getreal (strcat "\n蛾畖<" (rtos (car ccvar)) ">:")));;砞0碞ぃ穦礶蛾ㄓ
(setq h(getreal (strcat "\nゅ蔼<" (rtos (cadr ccvar)) ">:")))
(setq n(getint (strcat "\n秨﹍絪腹<" (itoa (caddr ccvar)) ">:")))
(setq b(getint (strcat "\n絪腹计<" (itoa (cadddr ccvar)) ">:")))
(initget 0 "Y N")
(setq k (getkword (strcat "\n絪腹秨繷?琌(Y)/(N)<" (nth 4 ccvar)">:")))
(if (= k nil)(setq k (nth 4 ccvar)))
(setq s "" marks (nth 5 ccvar))
(if (= k "Y") (progn
(setq s (getstring (strcat "\n絪腹秨繷<" marks ">:")))
(if (= s "")(setq s marks)(setq marks s))
))
(if (= r nil)(setq r (car ccvar)))
(if (= h nil)(setq h (cadr ccvar)))
(if (= n nil)(setq n (caddr ccvar)))
(if (= b nil)(setq b (cadddr ccvar)))
(setq ss "" bb (itoa n))
(while (setq pt (getpoint "\n匡翴:"))
(setq ceo nil)
(repeat (- b (strlen bb)) (setq ss (strcat ss "0")))
(if (> r 0) (progn (command "circle" pt r) (setq ceo (entget (entlast)))))
(command "text" "J" "mc" pt h "" (strcat s ss bb))
(setq teo (entget (entlast)))
(command "leader" pt (polar pt (/ pi 4) r)  "" "" "n")
(setq leo (entget (entlast)))
(setq p1 (cdr (assoc 10 leo)) k 1)
(while (/= k 3)
(setq p (grread T))
(setq k (car p) p (cadr p))
(if (> r 0) (progn
(setq ceo (subst (cons 10 p) (assoc 10 ceo) ceo))
(entmod ceo)
))
(setq teo (subst (cons 11 p) (assoc 11 teo) teo))
(entmod teo)
(setq p (polar p (angle p p1) r))
(setq leo (subst (cons 10 p) (assoc 10 (reverse leo)) leo))
(if (> (distance p p1) 0.0) (entmod leo))
)
(setq n (1+ n) ss "" bb (itoa n))
)
(setq ccvar (list r h n b k marks))
(setvar "cmdecho" 1)
(princ)
)
(princ "\nC:cc")
(prin1)









该贴已经同步到 冒个烟圈的微博
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2015-5-30 19:35:56 | 显示全部楼层
有人帮忙吗?自己先顶上
发表于 2015-5-30 20:37:50 | 显示全部楼层
r为球标半径,h为字高,n球标开开始数字,b球标的位数,如个位数1,二位数为01,三位数003,s为数字前加符号,pt应该在屏幕上点击吧。
提示:“ 错误: 参数类型错误: stringp 3”,把(initget 0 "Y N")相关的取掉应该可以了吧,呵呵,具体你试一下。
 楼主| 发表于 2015-5-30 20:41:34 | 显示全部楼层
simpleye 发表于 2015-5-30 20:37
r为球标半径,h为字高,n球标开开始数字,b球标的位数,如个位数1,二位数为01,三位数003,s为数字前加符号 ...

好勒。。我试试看。。因为是新手,下午弄了半天
 楼主| 发表于 2015-5-30 22:18:53 | 显示全部楼层
simpleye 发表于 2015-5-30 20:37
r为球标半径,h为字高,n球标开开始数字,b球标的位数,如个位数1,二位数为01,三位数003,s为数字前加符号 ...

谢谢你提示。。我试了下可以使用,
但是这样的话,就不能添加序的前缀(如:字母A)了,这个功能还是保留的好,做组立图有一半能用的上添加字母功能,
期待好心人帮忙能在原有功能不变的同时解决问题
发表于 2015-5-31 07:31:04 | 显示全部楼层
我试了都可以的,你是不是修改错了。还有一点,最好在前面设置osmode为0,箭头改为圆点,
 楼主| 发表于 2015-5-31 10:53:39 | 显示全部楼层
simpleye 发表于 2015-5-31 07:31
我试了都可以的,你是不是修改错了。还有一点,最好在前面设置osmode为0,箭头改为圆点,

在不删除(initget 0 "Y N")
             (setq k (getkword (strcat "\n絪腹秨繷?琌(Y)/(N)<" (nth 4 ccvar)">:")))
             (if (= k nil)(setq k (nth 4 ccvar)))
这个功能的前提下你能帮我修改好吗?
或者用其它的语句替代它也行,谢谢。
发表于 2015-5-31 16:23:14 | 显示全部楼层
冒个烟圈 发表于 2015-5-31 10:53
在不删除(initget 0 "Y N")
             (setq k (getkword (strcat "\n絪腹秨繷?琌(Y)/(N):")))
...

(defun c:cc(/ ccvar r h n b k s ss bb pt ceo teo leo p1 p marks)
(setvar "osmode" 0)
加上局部变量和关掉捕种,估计就可以了
 楼主| 发表于 2015-5-31 19:39:10 | 显示全部楼层
kwok 发表于 2015-5-31 16:23
(defun c:cc(/ ccvar r h n b k s ss bb pt ceo teo leo p1 p marks)
(setvar "osmode" 0)
加上局部变量 ...

按您说的试了下,结果OK了。非常感谢!!!
发表于 2024-4-9 13:55:57 | 显示全部楼层
(defun c:cc ()
  (setvar "cmdecho" 0)
  (if (= ccvar nil) (setq ccvar (list 15 15 1 1 "N" "")))
  (setq r (getreal (strcat "\n圆圈半径<" (rtos (car ccvar)) ">:")))
  (setq h (getreal (strcat "\n输入字高<" (rtos (cadr ccvar)) ">:")))
  (setq n (getint (strcat "\n起始序号<" (itoa (caddr ccvar)) ">:")))
  (setq        b (getint (strcat "\n序号位数[前面补0]<" (itoa (cadddr ccvar)) ">:")))
  (initget 0 "Y N")
  (setq        k (getkword (strcat "\n是否设置前缀(Y)/(N)<" (nth 4 ccvar) ">:")))
  (if (= k nil) (setq k (nth 4 ccvar)))
  (setq        s "" marks (nth 5 ccvar))
  (if (= k "Y")
    (progn
      (setq s (getstring (strcat "\n设置前缀<" marks ">:")))
      (if (= s "")
        (setq s marks)
        (setq marks s)
      )
    )
  )
  (if (= r nil) (setq r (car ccvar)))
  (if (= h nil) (setq h (cadr ccvar)))
  (if (= n nil) (setq n (caddr ccvar)))
  (if (= b nil) (setq b (cadddr ccvar)))
  (setq        ss "" bb (itoa n))
  (while (setq pt (getpoint "\n指定起点:"))
    (setq ceo nil)
    (repeat (- b (strlen bb)) (setq ss (strcat ss "0")))
    (if        (> r 0) (progn (command "circle" pt r) (setq ceo (entget (entlast)))))
    (command "text" "J" "mc" pt h "" (strcat s ss bb))
    (setq teo (entget (entlast)))
    (command "leader" pt (polar pt (/ pi 4) r) "" "" "n")
    (setq leo (entget (entlast)))
    (setq p1 (cdr (assoc 10 leo)) k  1)
    (while (/= k 3)
      (setq p (grread T))
      (setq k (car p) p (cadr p))
      (if (> r 0)
        (progn
          (setq ceo (subst (cons 10 p) (assoc 10 ceo) ceo))
          (entmod ceo)
        )
      )
      (setq teo (subst (cons 11 p) (assoc 11 teo) teo))
      (entmod teo)
      (setq p (polar p (angle p p1) r))
      (setq leo (subst (cons 10 p) (assoc 10 (reverse leo)) leo))
      (if (> (distance p p1) 0.0) (entmod leo))
    )
    (setq n  (1+ n) ss "" bb (itoa n))
  )
  (setq ccvar (list r h n b k marks))
  (setvar "cmdecho" 1)
  (princ)
)
(princ "\n命令:CC")
(princ)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 01:36 , Processed in 0.166083 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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