明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5357|回复: 19

5币 求标注等分小程序

  [复制链接]
发表于 2012-4-28 11:05 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 cjjh8301 于 2012-4-28 11:06 编辑

要求程序可实现将整个的标注等量拆分成N个标注,N是键盘输入值,主要是针对线性及对齐标注,如圆弧、角度标注也能实现则更好。
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

发表于 2012-4-28 11:05 | 显示全部楼层
本帖最后由 dwg001 于 2012-5-1 08:19 编辑


  1. ;;;;dwg001 早期练习  
  2. ;; 现小作修改
  3. (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)

  4.   (setq oldmode (getvar 'osmode)
  5. oldla (getvar 'clayer)
  6. oldecho (getvar 'cmdecho)
  7. oldsty  (getvar 'dimstyle)
  8.   )
  9.   (setvar 'osmode  0)
  10.   (setvar 'cmdecho 0)
  11.   (while (setq obj (entsel "\n...选择需等分的标注> "))
  12.     (setq
  13.       J   (getint "\n...输入等分标注数> ")
  14.       ent (car obj)
  15.       dxf (entget ent)
  16.       lay (cdr (assoc 8 dxf))
  17.       dimstl (cdr (assoc 3 dxf))
  18.       )
  19.    
  20.     (if (and obj (> J 1) (= (cdr (assoc 0 dxf)) "DIMENSION"))
  21.       (progn
  22. (setq i 0
  23.        r 0
  24. )
  25. (command "-layer" "s" lay "")
  26. (command "dimstyle" "r" dimstl)
  27. (setq P0 (cdr (assoc 10 dxf))
  28.        P2 (cdr (assoc 13 dxf))
  29.        P1 (cdr (assoc 14 dxf))
  30. )
  31.         

  32. (setq L (distance p1 p0)
  33.            ang1-0 (angle P1 P0)
  34.               p0- (polar p0  (- ang1-0  (/ pi 2)) 50)
  35.        p2- (polar p2  ang1-0   50)
  36.        inter (inters p0 p0-  p2 p2- nil))
  37.         

  38.         (if (/= L (distance p2 inter))(progn
  39.          (setq dxf (subst
  40.      (cons 13 (polar inter (- ang1-0 pi) L))
  41.      (assoc 13 dxf)
  42.      dxf  )   )
  43.           (entmod dxf)
  44.         (setq  P2 (cdr (assoc 13 dxf)))
  45.   ) );end_ if


  46.   (setq ang  (angle P1 P2)
  47.               dist (/ (distance P1 P2) J)
  48.        P2   (polar P1 ang dist)
  49. )
  50. (command "dim1" "ali" P1 P2 P0 "")

  51. (while (< r (- J 1))
  52.    (setq P2 (polar P2 ang dist))
  53.    (command "dim" "con" P2 "" "e")
  54.    (setq r (1+ r))
  55. )
  56. (setq i (1+ i))
  57. (entdel ent)
  58.       )
  59.     )
  60.     (setvar 'clayer oldla)
  61.     (command "dimstyle" "r" oldsty)
  62.   )
  63.   (princ "\n...等分标注数=")
  64.   (princ J)
  65.   (princ "\n...[学lisp练习: 尺寸标注等分]")
  66.   (setvar 'osmode oldmode)
  67.   (setvar 'cmdecho oldecho)
  68.   (princ)
  69. )

点评

还有一小问题:先选择后操作无效啊  发表于 2012-5-1 19:16

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 很热心!

查看全部评分

回复

使用道具 举报

发表于 2012-4-28 13:52 | 显示全部楼层
类此命题都得有配合调试用的图纸(*.Dwg)
得包含充分的样例,分述原图与成果图
若只有概念性的描述殆望同行才能解读出
回复

使用道具 举报

 楼主| 发表于 2012-4-28 16:48 | 显示全部楼层
实际很简单,就是一个命令实现等分标注的功能,比如图中的标注100变成4个25标注。
回复

使用道具 举报

发表于 2012-4-29 09:22 | 显示全部楼层
本帖最后由 dwg001 于 2012-4-29 09:24 编辑

早期的一个练习,试试.

回复

使用道具 举报

发表于 2012-4-29 10:44 | 显示全部楼层
dwg001 发表于 2012-4-29 09:25
;;学lisp早期的练习, 试试.

;;dwg001 早期练习

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

使用道具 举报

 楼主| 发表于 2012-4-29 18:53 | 显示全部楼层
程序可用,但是有个问题,等分后标注都归0层了,能不能改下,等分后图层不变呀。
回复

使用道具 举报

发表于 2012-4-30 08:41 | 显示全部楼层
小作修改,见5楼更新.再试试.
回复

使用道具 举报

 楼主| 发表于 2012-4-30 15:26 | 显示全部楼层
用了一会,发现个问题比较影响使用的,就是标注起点不在一直线的话,线性标准等分后标注都旋转了,如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

传一个dwg样图上来,俺试试  发表于 2012-4-30 16:50
回复

使用道具 举报

发表于 2012-4-30 15:34 | 显示全部楼层
等分之后连标注样式都改了啊

点评

再试试,更新见5楼.  发表于 2012-4-30 16:54
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 20:50 , Processed in 0.324319 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表