cjjh8301 发表于 2012-4-28 11:05:08

5币 求标注等分小程序

本帖最后由 cjjh8301 于 2012-4-28 11:06 编辑

要求程序可实现将整个的标注等量拆分成N个标注,N是键盘输入值,主要是针对线性及对齐标注,如圆弧、角度标注也能实现则更好。

dwg001 发表于 2012-4-28 11:05:09

本帖最后由 dwg001 于 2012-5-1 08:19 编辑



;;;;dwg001 早期练习
;; 现小作修改
(defun c:df (/ang ang1-0 dimstl dist dxf ent i inter j l lay obj oldecho oldla oldmode oldsty p0 p0- p1 p2 p2- r)

(setq oldmode (getvar 'osmode)
oldla (getvar 'clayer)
oldecho (getvar 'cmdecho)
oldsty(getvar 'dimstyle)
)
(setvar 'osmode0)
(setvar 'cmdecho 0)
(while (setq obj (entsel "\n...选择需等分的标注> "))
    (setq
      J   (getint "\n...输入等分标注数> ")
      ent (car obj)
      dxf (entget ent)
      lay (cdr (assoc 8 dxf))
      dimstl (cdr (assoc 3 dxf))
      )
   
    (if (and obj (> J 1) (= (cdr (assoc 0 dxf)) "DIMENSION"))
      (progn
(setq i 0
       r 0
)
(command "-layer" "s" lay "")
(command "dimstyle" "r" dimstl)
(setq P0 (cdr (assoc 10 dxf))
       P2 (cdr (assoc 13 dxf))
       P1 (cdr (assoc 14 dxf))
)
      

(setq L (distance p1 p0)
         ang1-0 (angle P1 P0)
            p0- (polar p0(- ang1-0(/ pi 2)) 50)
       p2- (polar p2ang1-0   50)
       inter (inters p0 p0-p2 p2- nil))
      

      (if (/= L (distance p2 inter))(progn
         (setq dxf (subst
   (cons 13 (polar inter (- ang1-0 pi) L))
   (assoc 13 dxf)
   dxf)   )
        (entmod dxf)
        (setqP2 (cdr (assoc 13 dxf)))
) );end_ if


  (setq ang(angle P1 P2)
            dist (/ (distance P1 P2) J)
       P2   (polar P1 ang dist)
)
(command "dim1" "ali" P1 P2 P0 "")

(while (< r (- J 1))
   (setq P2 (polar P2 ang dist))
   (command "dim" "con" P2 "" "e")
   (setq r (1+ r))
)
(setq i (1+ i))
(entdel ent)
      )
    )
    (setvar 'clayer oldla)
    (command "dimstyle" "r" oldsty)
)
(princ "\n...等分标注数=")
(princ J)
(princ "\n...[学lisp练习: 尺寸标注等分]")
(setvar 'osmode oldmode)
(setvar 'cmdecho oldecho)
(princ)
)

Andyhon 发表于 2012-4-28 13:52:10

类此命题都得有配合调试用的图纸(*.Dwg)
得包含充分的样例,分述原图与成果图
若只有概念性的描述殆望同行才能解读出

cjjh8301 发表于 2012-4-28 16:48:43

实际很简单,就是一个命令实现等分标注的功能,比如图中的标注100变成4个25标注。

dwg001 发表于 2012-4-29 09:22:11

本帖最后由 dwg001 于 2012-4-29 09:24 编辑

早期的一个练习,试试.

669423907 发表于 2012-4-29 10:44:41

dwg001 发表于 2012-4-29 09:25 static/image/common/back.gif
;;学lisp早期的练习, 试试.

;;dwg001 早期练习


请问 dwg001 ,如何改,才能先选择标注,再输入等分数,且空选时,程序退出?

cjjh8301 发表于 2012-4-29 18:53:57

程序可用,但是有个问题,等分后标注都归0层了,能不能改下,等分后图层不变呀。

dwg001 发表于 2012-4-30 08:41:54

小作修改,见5楼更新.再试试.

cjjh8301 发表于 2012-4-30 15:26:46

用了一会,发现个问题比较影响使用的,就是标注起点不在一直线的话,线性标准等分后标注都旋转了,如图

注册 发表于 2012-4-30 15:34:50

等分之后连标注样式都改了啊
页: [1] 2
查看完整版本: 5币 求标注等分小程序