linheyuanpcb 发表于 2008-1-13 20:52:00

谢谢你ZZXXQQ 可以用了,那可以再帮帮忙?就是说现在把孔都用颜色来区分开了,那能不能给我写一个可以选中颜色来修改孔径和统计圆的数量与移层?选颜色删除和复制和移动的我都有了.谢谢

yoyoho 发表于 2008-1-14 12:34:00

<p>感谢楼主,真是好程序阿!实用喔!</p><p></p>

ZZXXQQ 发表于 2008-1-14 19:27:00

试试看:


;按色改圆大小换图层 明经 ZZXXQQ 2008.1.14
(defun c:ct ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\nSelect a Circle 选择一个圆 :"))
          (setq ent (entget (car s1)))
    (= (cdr (assoc 0 ent)) "CIRCLE")
) (progn
(if (assoc 62 ent)
   (setq ss (ssget "X" (list (assoc 0 ent) (assoc 40 ent) (assoc 62 ent))))
   (setq ss (ssget "X" (list (assoc 0 ent) (assoc 40 ent) (cons 62 256))))
)
(setq i -1 cn (sslength ss))
(setq rg (getdist (strcat "\nInput new radius <" (rtos (cdr (assoc 40 ent)) 2 3) "> :")))
(if (/= rg nil)
   (repeat cn
    (setq ent (entget (ssname ss (setq i (1+ i))))
          ent (subst (cons 40 rg) (assoc 40 ent) ent))
    (entmod ent)
   )
)
(if (setq lnm (getstring "\nInput new layer name 新层名 :"))
   (if (tblsearch "LAYER" lnm)
    (command ".chprop" ss "" "LA" lnm "")
   )
)
))
(princ (strcat "\nTotle same radius circle is 同种圆数量 =" (itoa cn)))
(princ)
)

linheyuanpcb 发表于 2008-1-15 09:09:00

<p>谢谢ZZXXQQ兄的帮忙,程序可以用了,不知还能不能求一个程序呢?呵¥¥¥就是现在颜色和大小移层都可以了,统计也有了,还有那个能不能把圆的大小和数量来统计出来,生成表格大概如下,不同大小的圆用各种符号来表示出来.?</p><p>序号&nbsp; 符号&nbsp; 孔径&nbsp; 针径&nbsp; 数量</p><p>01&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp; 0.80&nbsp; 0.90&nbsp; 12</p><p>02&nbsp;&nbsp;&nbsp;&nbsp; 王&nbsp;&nbsp; 0.90&nbsp;&nbsp;1.00&nbsp; 8</p><p>.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp; .</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ============</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Total=20&nbsp;</p><p>说明:符号可以由我自己定义,用dwg做好读进去用</p><p>&nbsp;&nbsp;&nbsp; 孔径与针径的关系是:0.1mm(被偿值可以由使用者输入)</p><p>&nbsp;&nbsp;&nbsp; 算出孔的总数.符号由不同颜色显示出来.</p><p>谢谢你</p>

yth0407 发表于 2008-1-15 11:22:00

楼主好像跟本人是同行..不知在哪高就呢?

ZZXXQQ 发表于 2008-1-15 14:57:00

本帖最后由 作者 于 2008-1-19 20:13:48 编辑

又改过了。再试试。


;孔号统计表 明经 ZZXXQQ 2007.6.27 ,更改 2008.1.16, 2008.1.19
(DEFUN C:MCTAB ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE")
       OLDZIN (GETVAR "DIMZIN")
       OLDBLI (GETVAR "BLIPMODE"))
(SETVAR "OSMODE" 0)
(SETVAR "DIMZIN" 0)
(SETVAR "BLIPMODE" 0)
(COMMAND ".UNDO" "BE")
(princ "\nSelect Circle(s) 选择圆 :")
(IF (SETQ SS (SSGET '((0 . "CIRCLE")))) (PROGN
(setq equ (getdist "\nInput equalize 补偿值 :"))
(SETQ I -1 BLST (LIST))
(REPEAT (SSLENGTH SS)
   (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I))))
      PC (CDR (ASSOC 10 ENT))
      R (CDR (ASSOC 40 ENT))
      PT1 (POLAR PC (/ PI 4) R)
      PT2 (POLAR PC (* PI -0.75) R))
   (IF (= (SSLENGTH (SETQ SS1 (SSGET "C" PT1 PT2 '((0 . "INSERT"))))) 1) (PROGN
    (SETQ ENT1 (ENTGET (SSNAME SS1 0))
       ISNM (CDR (ASSOC 2 ENT1))
       CO (CDR (ASSOC 62 ENT1)))
    (IF (NOT (ASSOC ISNM BLST))
   (SETQ BLST
      (CONS
       (LIST
ISNM
(RTOS (+ R R) 2 3)
(RTOS (+ R R equ) 2 2)
CO
(ITOA (SSLENGTH (SSGET "X" (LIST (CONS 2 ISNM)))))
       )
       BLST
      )
   )
    )
   ))
)
(SETQ K 0 LL (LENGTH BLST))
(WHILE (< K LL)
   (SETQ L1 (NTH K BLST) K (1+ K) J K)
   (WHILE (< J LL)
    (SETQ L2 (NTH J BLST))
    (IF (> (CADR L2) (CADR L1))
   (SETQ BLST (SUBST (LIST "A" "B") L2 BLST)
    BLST (SUBST L2 L1 BLST)
         BLST (SUBST L1 (LIST "A" "B") BLST))
    )
    (SETQ J (1+ J))
   )
)
(IF (SETQ PT (GETPOINT "\nTab Start Point :")) (PROGN
   (COMMAND "TEXT" PT 2.5 0 "序号 符号    孔径   针径   数量")
   (SETQ K -1
PT (POLAR (POLAR PT (/ PI -2) 6) 0 2)
SUM 0)
   (REPEAT LL
    (SETQ L (NTH (SETQ K (1+ K)) BLST))
    (COMMAND "TEXT" PT 2.5 0 (ITOA (- LL K)))
    (COMMAND "-INSERT" (CAR L) (POLAR (POLAR PT 0 10) (/ PI 2) 1) 1 1 0)
    (COMMAND "CHPROP" "L" "" "C" (CADDDR L) "")
    (COMMAND "TEXT" (SETQ PT1 (POLAR PT 0 18)) 2.5 0 (CADR L))
    (COMMAND "TEXT" (SETQ PT1 (POLAR PT1 0 12)) 2.5 0 (CADDR L))
    (COMMAND "TEXT" (POLAR PT1 0 12) 2.5 0 (LAST L))
    (SETQ PT (POLAR PT (/ PI -2) 5)
   SUM (+ SUM (ATOI (LAST L))))
   )
   (COMMAND "TEXT" (POLAR (POLAR PT 0 18) (/ PI -2) 5) 2.5 0 "总 和")
   (COMMAND "TEXT" (POLAR (POLAR PT 0 42) (/ PI -2) 5) 2.5 0 (ITOA SUM))
))
))
(COMMAND ".UNDO" "E")
(SETVAR "BLIPMODE" OLDBLI)
(SETVAR "OSMODE" OLDOS)
(SETVAR "DIMZIN" OLDZIN)
(SETVAR "CMDECHO" 1)
(PRINC)
)


linheyuanpcb 发表于 2008-1-15 16:25:00

<p></p><p></p><p>ZZXXQQ你好,我传了一个做好的实例和符号图上去,请帮忙</p><p>符号图是dwg文件,可以调用,放到指定的文件夹下边,请参考!</p>

ZZXXQQ 发表于 2008-1-16 23:10:00

16楼已改,再试试。

linheyuanpcb 发表于 2008-1-17 09:00:00

<p>命令: mctab ; 错误: 参数类型错误: lselsetp nil</p><p>不知是什么原因呢ZZXXQQ</p>

linheyuanpcb 发表于 2008-1-17 09:14:00

<p>呵^^^已试用,可以统计符号和数量,并且可以自己补偿0.1mm,但是统计出来的数据比实数多出一个</p><p>如下&nbsp; 序号 符号 孔径 针径&nbsp; 数量</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;01&nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;0.50 0.60&nbsp;&nbsp; 5&lt;这里应该是5,但统计出来却是6&gt;</p><p>还有个问题就是:ZZXXQQ你理解错我的意思了,呵%%我要的程序是要自己生成符号和统计数量,如下</p><p>0000000&nbsp; &lt;0.71&gt;&nbsp; 左边有三排孔,通过程序来在新的一层下边生成一种符号来显示出来.符号自动生成</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;通过读取路径得到的DWG里边的图来作为符号&gt;</p><p>0000000&nbsp; &lt;0.90&gt;&nbsp; 和上边一样,这个用另一种符号表示&lt;颜色不论&gt;</p><p>0000000&nbsp; &lt;1.20&gt;&nbsp; ........................................</p><p></p><p>以上的三排孔都由原来的圆,通过程序生成了三种不同符号在新层显示出来.第一排"王" 第二排"* "</p><p>如此类推..都有符号显示来,之后统计数量与补偿..</p><p></p><p>谢谢你ZZXXQQ</p>
页: 1 [2] 3 4 5 6
查看完整版本: 求能在在同一层下不同的圆的大小由不同的颜色来显示的lisp