669423907 发表于 2011-7-14 13:34:03

回复 Gu_xl 的帖子

Gu_xl 大师你好,我的意思是 :在动态切换标注样式的程序中加一个功能,当切换到想要的标注样式后(确认后),就把切换到的标注样式置为当前使用的标注样式。再次感谢你的热情帮助!

xiaotao 发表于 2011-7-14 16:12:48

不错!学习了

zhynt 发表于 2011-7-14 16:56:08

((= 13 (cadr gr)) (setq loop nil)(command "dimstyle" "r" style) )

669423907 发表于 2011-7-14 20:03:51

回复 zhynt 的帖子

非常感谢zhynt大师的帮助。


我把它加在 (princ))之前,效果可以达到了!



只是出现一个不影响程序使用的错误:“$2”???         ; 错误: no function definition: nil
((= 13 (cadr gr)) (setq loop nil) (command "dimstyle" "r" style))
(princ))


669423907 发表于 2011-7-14 21:28:30

只要添加   (command "dimstyle" "r" style)   就可以了!
谢谢两位大师!

raimo 发表于 2011-7-14 22:52:45

本帖最后由 raimo 于 2011-7-14 22:54 编辑

可以用鼠标中键(滚轮)切换吗?

cumtjh 发表于 2011-7-15 13:54:11

raimo 发表于 2011-7-14 22:52 static/image/common/back.gif
可以用鼠标中键(滚轮)切换吗?

是啊 这个好像更方便 好想法啊

cumtjh 发表于 2011-7-15 14:04:54

669423907 发表于 2011-7-11 23:00 static/image/common/back.gif
想请高手们帮忙写一个动态切换标注样式的程序,不知是否能达到以下效果:
已有标注样式:5,7,10,13,15,1 ...

非常有创意的程序,GOODidea
顺问下 用的GG录屏吗 很清晰

cumtjh 发表于 2011-7-15 14:10:59

本帖最后由 cumtjh 于 2011-7-15 14:22 编辑



;;;动态切换标注样式的程序,搞机械的很实用啊!(感谢Gu_xl 版主完美解决)
;;;http://bbs.mjtd.com/forum.php?mod=viewthread&tid=88162&fromuid=269329
;作者:By Gu_xl 版主(感谢669423907提出好点子 )
;;整理:By cumtjh
;;待改进 为支持鼠标中键切换标注就更帅啦
;;根据此程序可以做动态缩放等 一些动态命令 值得推荐

(defun c:tabdim (/ loop i ss dimstyles gr cnt)
(setq dimstyles (vl-sort (gxl-table "dimstyle") '(lambda (a b) (> (atoi a) (atoi b))))
      cnt (length dimstyles)
      i -1
      loop t
      )
(setq ss (ssget '((0 . "DIMENSION"))))
(if ss
    (progn
      (princ "\n*** 键入 A 或 S 切换标注样式 , 回车键或右键结束 *** ")
      (princ "\n")
      (while loop
      (setq gr (grread t 5 1))
      (if (= 2 (car gr))
      (cond ((or (= 97 (cadr gr)) (= 65 (cadr gr)))
               (setq i (1+ i)
                     i (rem i cnt)
                     )
               (setq style (nth i dimstyles))
               (princ (strcat "\r***当前标注样式为: " style "                                     "))
               (gxl-sel-mapcar ss '(lambda (x) (GXL-CH_ENT x 3 style)))
               )
            ((or (= 83 (cadr gr)) (= 115 (cadr gr)))
               (setq i (1- i))
                (if (MINUSP i) (setq i (+ i cnt)))   
               (setq style (nth i dimstyles))
               (princ (strcat "\r***当前标注样式为: " style "                                     "))
               (gxl-sel-mapcar ss '(lambda (x) (GXL-CH_ENT x 3 style)))
               )
            ((= 13 (cadr gr)) (setq loop nil))
            ) ;_ cond
          (if (= 25 (car gr))
            (setq loop nil)
            )
          )
      )
      
      )
    )
    (command "dimstyle" "r" style);切换到的标注样式置为当前使用的标注样式
    (princ (strcat "\r***当前切换标注样式为: " style "                                     "))
    (princ)
)
;;;gxl-table 返回包含在指定符号表中的所有元素
(defun gxl-table (s / d r)
(while (setq d (tblnext s (null d)))
    (setq r (cons (cdr (assoc 2 d)) r))
)
)
;;;(gxl-CH_Ent ent i pt) 用新值pt更新图元ent索引i对应的值
(defun gxl-CH_Ent (ent i pt / en)
(if (assoc i (setq en (entget ent)))
    (setq en (subst (cons i pt) (assoc i en) en))
    (setq en (append en (list (cons i pt))))
    )
    (entmod en)
)
;;;(gxl-Sel-Mapcar ss Fun) 遍历选择集对所包含的图元进行指定函数操作,返回操作后的表
(defun gxl-Sel-Mapcar (ss Fun / nn rtn)
(repeat (setq nn (sslength ss))
(setq rtn (cons (apply Fun (list (ssname ss (setq nn (1- nn))))) rtn))
    )
)

T_T 发表于 2011-7-15 17:37:11

不错,下来学习.
页: 1 [2] 3 4 5
查看完整版本: 动态切换标注样式的程序,搞机械的很实用啊!(感谢Gu_xl 版主完美解决)