cbssalf 发表于 2007-6-14 18:56:00

[求助]请教各位老师谁能帮我用LISP编写个程序自动产生出圆孔孔径符号,谢了

ZZXXQQ 发表于 2007-6-14 20:19:00

不知道图是如何画的没法编呀!

cbssalf 发表于 2007-6-15 01:30:00

<p>图中已经有了圆孔的位置,只产生孔符号其它的不用理会.</p>

byghbcx 发表于 2007-6-15 08:14:00

<p>可以先抛出一点思路出来,你要干什么?你的绘制过程中怎样的?要让程序为你解决什么样的问题?最后让大家共同想想,来达到你理想的目标.</p><p>是用插入图块吗?</p>

cbssalf 发表于 2007-6-16 11:44:00

各位老师,CAD文件中已经有了圆孔的位置,不必理会它的位置,但是圆孔的大小有40种,所以要分别出它的大小很不容易,必须要有程序自动产生孔径符号插入把它分别出来(从小到大插入,大的圆孔,它的孔径符号也跟圆孔一起大)才能知道圆孔的大小.如不明白可以加我的QQ:278262188

yz_hyg 发表于 2007-6-26 20:15:00

本帖最后由 作者 于 2007-6-26 20:32:35 编辑

是不是分辨出孔的大小,并进行分类,然后标注孔的尺寸,并统计各类孔的多少以及孔的总数量。

ZZXXQQ 发表于 2007-6-26 21:31:00

<p>请传张DWG图上来,光是文字说不明白。</p>

cbssalf 发表于 2007-6-27 03:01:00

cbssalf 发表于 2007-6-27 03:40:00

<p>dwg文件已传了请各位老师帮帮忙是否能解决此问题,本人的意思是执行命令自动选择0层与G层的孔后,</p><p>在命令行直接输入要加大的每种圆孔的针径完毕后就自动产生出,(序号、符号、孔径、针径、数量、总和).</p><p>我跪下求各位老师帮助了。</p>

ZZXXQQ 发表于 2007-6-27 12:40:00


(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")
(IF (SETQ SS (SSGET "X" '((0 . "CIRCLE")))) (PROGN
(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))) 2) (PROGN
    (SETQ SS1 (SSDEL (SSNAME SS I) SS1)
   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 2)
(RTOS (+ R R 0.1) 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)
)
页: [1] 2
查看完整版本: [求助]请教各位老师谁能帮我用LISP编写个程序自动产生出圆孔孔径符号,谢了