cj52000 发表于 2014-9-28 11:06:53

请大家帮我完善下这个模板自动注解程序,非常感谢!


大家好,由于我是搞五金模具设计的,标注模板时涉及到注 解,目前已有的程序只能注解圆,不能注解除圆以外的多段线异形孔,现把源码贴上来,求高手帮我完善下这个程序,让它能标注异形孔,谢谢,非常感谢!





(defun c:zm()
(princ "\n选择要进行统计的圆对象")
(setq ss (ssget (list (cons 0 "CIRCLE"))))
(setq pt (getpoint "\n选择输出基点:"))
(setq si 0 tx 65 px (car pt) py (cadr pt) li '() lii 0)
(setq os (getvar "osmode") om (getvar "cmdecho"))
(command "osmode" 0 "osmode" 0 "_.ucs" "w")
(repeat (sslength ss)
   (setq cs (ssname ss si) ce (entget cs))
   (setq cp (cdr (assoc 10 ce)))
   (setq cr (cdr (assoc 40 ce)))
   (if (setq lst (assoc cr li))
   (setq ct (nth 1 lst) li (subst (list cr ct (1+ (nth 2 lst))) lst li))
   (setq ct tx tx (1+ tx) li (cons (list cr ct 1) li))
   )
   (command "_.text" (polar cp (/ pi 4) (+ cr 1)) 3 0 (chr ct))
   (command "_.chprop" "l" "" "p" "c" 6 "")
   (setq si (1+ si))
)
(foreach l li
   (setq cp (list px (+ py (* lii 5))) )
   (setq cr (nth 0 l) ct (nth 1 l) cn (nth 2 l))
   (command "_.text" cp 4 0 (strcat (chr ct) ":" (itoa cn) "-%%C" (rtos (* cr 2) 2)))
   (command "_.chprop" "l" "" "p" "c" 6 "")
   (setq lii (1+ lii))
)
(setvar "osmode" os)
(setvar "cmdecho" om)
(princ "\n统计完成!")
(princ)
)




DEFUN C:cbj ()
(PRINC "查直径及个数")
(setq ss (ssget ((0 . "CIRCLE"))))
(setq i 0 n 0 zj-j nil) (repeat (sslength ss) (setq el (entget (ssname ss i))) (setq zj (read (rtos (cdr (assoc 40 el)) 2 4))) 获得直径 (print zj) (setq zj-j (cons zj zj-j)) (print zj-j) (setq i (1+ i)) ) (setq zj-h (VL-SORT zj-j <)) (repeat (length zj-h) (setq zj-n (- (length zj-j) (length (vl-remove-if (lambda (x) (= x (nth n zj-h))) zj-j)))) (print (strcat "直径" (itoa (nth n zj-h)) " " (itoa zj-n) "个")) (setq n (1+ n)) ) (princ))


chpmould 发表于 2014-9-28 23:01:35

这种专业性的程序得根据自己的实际需求写出来的才合用,一般非专业帮不上忙
页: [1]
查看完整版本: 请大家帮我完善下这个模板自动注解程序,非常感谢!