明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1077|回复: 7

请高手帮帮忙

[复制链接]
发表于 2009-2-13 19:42:00 | 显示全部楼层 |阅读模式
(vl-load-com)
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (setq hxss (ssadd))
  (setq s (ssget '((0 . "line"))))
  (repeat (setq s1 (sslength s))
    (setq s_ent (ssname s (setq s1 (1- s1))))
    (setq ent (entget s_ent))
    (setq pt1 (cdr (assoc 10 ent))
          pt2 (cdr (assoc 11 ent))
    )
    (setq zw_s (ssget "_F" (list pt1 pt2) '((0 . "insert"))))
    (if (/= zw_s nil)
      (progn
        (repeat (setq zw_s1 (sslength zw_s))
       (setq bjyxlst '() lsts 0)
          (setq zw_ent (ssname zw_s (setq zw_s1 (1- zw_s1))))
          (if (not (ssmemb zw_ent hxss))
            (progn
          (setq hxss (ssadd zw_ent hxss))
              (setq zwent (entget zw_ent))
              (setq tkm (cdr (assoc 2 zwent)))
              (setq pins (cdr (assoc 10 zwent)))
              (setq ang (cdr (assoc 50 zwent)))
              (setq zty (entget (cdr (assoc -2 (tblsearch "block" tkm)))))
              (ch_z zty pins ang)
          (setq bjyxlst (reverse bjyxlst))
          (repeat (length bjyxlst)
                (setq zbd (cdr (nth lsts bjyxlst)))
            (setq zjd (vlax-curve-getClosestPointTo s_ent zbd T))
                (if (/= (distance zbd zjd) 0)
              (command "_dimaligned" zbd zjd (polar zjd pi 1000))
            )
          (setq lsts (1+ lsts))
          )
            )
          )
        )
      )
    )
  )
  (setvar "osmode" 37)
  (setvar "cmdecho" 1)
  (princ)


这段代码是对直线上图块里的圆进行标注~为什么每个图块第一次标注时正常~~
把标注删除后~~再对该图块进行标注时确无法标注了~~也没有任何出错信息
把图纸关了重新打开又能标注了~但同一图块只能标一次~
发表于 2009-2-13 23:16:00 | 显示全部楼层

         (setq bjyxlst '() lsts 0)

(ch_z zty pins ang)
          (setq bjyxlst (reverse bjyxlst))

啥意思。。。

听不懂你要干嘛???

 楼主| 发表于 2009-2-13 23:25:00 | 显示全部楼层
bjyxlst里面是由ch_z函数提取出来的圆心坐标~

我的意思是为什么同一个图块只能标注一次~
把标注删了~再重新标注时就没反应了~~
也没提示出错~运行完代码但不标注

把图纸关了重新打开又能标注了~~但也只能标一次~~
删了标注重标就又不行了~~
发表于 2009-2-13 23:26:00 | 显示全部楼层

最好抓个图来。。。

上面的代码太乱。。。

懒的看。

把需求说清楚,重新写更快。

 楼主| 发表于 2009-2-13 23:30:00 | 显示全部楼层
怎么把电脑里的图发上来???
发表于 2009-2-14 00:00:00 | 显示全部楼层
是不是这样子的。。。
以线选择块。。。
按你的需求,我猜测的。。。
  1. ;;LINE-BLOCK-DIMALIGNED 线和块标注 By carrot1983 2009-02-13
  2. (defun C:TT (/ ELIST PT SS SS1 V10 CMDECHO)
  3.   ;;(CAI-SS-VALUES SS -1) By carrot1983
  4.   (defun CAI-SS-VALUES (SS ITEM / I VALUES)
  5.     (repeat (setq I (sslength SS))
  6.       (setq
  7. VALUES
  8.   (cons
  9.     (cdr (assoc ITEM (entget (ssname SS (setq I (1- I))))))
  10.     VALUES
  11.   )
  12.       )
  13.     )
  14.     VALUES
  15.   )
  16.   (defun CAI-DXF (ITEM ELIST)
  17.     (cdr (assoc ITEM ELIST))
  18.   )
  19.   (command "._UNDO" "_BEGIN")
  20.   (setq CMDECHO (getvar "CMDECHO"))
  21.   (setvar "CMDECHO" 0)
  22.   (if (setq SS (ssget '((0 . "LINE"))))
  23.     (foreach E (CAI-SS-VALUES SS -1)
  24.       (if
  25. (and (setq ELIST (entget E))
  26.       (setq
  27.         SS1 (ssget "_F"
  28.      (list (CAI-DXF 10 ELIST) (CAI-DXF 11 ELIST))
  29.      '((0 . "INSERT"))
  30.      )
  31.       )
  32. )
  33.   (foreach E1 (CAI-SS-VALUES SS1 -1)
  34.     (setq ELIST (entget E1)
  35.    V10   (CAI-DXF 10 ELIST)
  36.     )
  37.     (setq PT (vlax-curve-getclosestpointto E V10))
  38.     (command "._DIMALIGNED"
  39.       "_NONE"
  40.       PT
  41.       "_NONE"
  42.       V10
  43.       "_NONE"
  44.       (polar V10 (+ (* 0.5 pi) (angle PT V10)) 1000) ;_标注尺寸界线长度1000
  45.     )
  46.   )
  47.       )
  48.     )
  49.   )
  50.   (setvar "CMDECHO" CMDECHO)
  51.   (command "._UNDO" "_END")
  52.   (princ)
  53. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-2-14 10:02:00 | 显示全部楼层
差不多是这个意思~~

我写的也能标出来~~
可为什么把标好的尺寸删除~或撤消后~
再对那些标过的圆进行标注时却没反映了,也没见出错信息


那个动画咋发的???????
 楼主| 发表于 2009-2-14 10:53:00 | 显示全部楼层
弄清了~~原来有个存圆心坐标的表没有设为局部变量

郁闷~~弄了半天就这原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-29 17:31 , Processed in 0.169914 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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