明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3806|回复: 17

[讨论] {已解决}问个注记建筑物边长的问题

  [复制链接]
发表于 2011-4-7 15:25:33 | 显示全部楼层 |阅读模式
本帖最后由 a170285 于 2011-4-7 21:07 编辑

请教下,怎么能让(setq bz (ssget))这句话只选取闭合的线????
还有就是用南方CASS里面的这个命令"BIANCHANG"注记边长,出来的边长字体大小为0.28呢?
我怎么弄都搞不明白..请教各位大大们
(defun c:11()  
  (setq cmdecho_bak (getvar "cmdecho"))      ;;;备份响应变量
  (setvar "cmdecho" 0)                       ;;;关闭响应变量
  (setq bz (ssget '((0 . "lwpolyline");只
                    (-4 . "<or")      ;选
                    (70 . 1)          ;取
                    (70 . 129)        ;闭合
                    (-4 . "or>"))))   ;线
  (repeat (setq len (sslength bz))
          (setq te (ssname bz (setq len (1- len))))
          (command "BIANCHANG" te "")
  )
  (setvar "cmdecho" cmdecho_bak)              ;;;开启响应变量
  )
  
不知道为什么我这样写如果超过2个封闭的多段线..CAD就会说.出现致命错误

本帖子中包含更多资源

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

x
发表于 2020-9-14 11:07:42 | 显示全部楼层
Gu_xl 发表于 2011-4-7 18:54
回复 a170285 的帖子

老师你的这个不能框选多个闭合的多段线吗
发表于 2011-4-7 15:54:24 | 显示全部楼层
回复 a170285 的帖子

(ssget '((0 . "lwpolyline")(-4 . "<or") (70 . 1)(70 . 129)(-4 . "or>")))
(ssget '((0 . "text") (40 . 0.28)))
 楼主| 发表于 2011-4-7 16:00:59 | 显示全部楼层
回复 Gu_xl 的帖子

版主那个(-4 . "<or")(-4 . "or>")这个两个什么意思?????不懂.....

还有下面那句...我的意思是说..让"BIANCHANG"这个命令注记出来的数字大小是0.28喔..
不是选取
发表于 2011-4-7 16:02:03 | 显示全部楼层
(70 . 1)不是就代表闭合的了吗?
 楼主| 发表于 2011-4-7 16:09:56 | 显示全部楼层
回复 snddd2000 的帖子

那怎么做菜能让他用了"BIANCHANG"这个命令后标记出来的数字大小是0.28呢?
发表于 2011-4-7 16:56:40 | 显示全部楼层
回复 a170285 的帖子

cass没用过
 楼主| 发表于 2011-4-7 17:02:39 | 显示全部楼层
回复 snddd2000 的帖子

那如果不用那个命令..那如何可以做到我所说的呢??
请指点下..谢谢
发表于 2011-4-7 17:04:56 | 显示全部楼层
不知道为什么我这样写如果超过2个封闭的多段线..CAD就会说.出现致命错误
是因为你的"BIANCHANG"命令是注册的内部命令。没有解决之道
除非你知道"BIANCHANG"的函数,直接调用该函数,而不是用命令
 楼主| 发表于 2011-4-7 17:09:09 | 显示全部楼层
回复 snddd2000 的帖子

那如果我不用那个命令..那我改怎么做到注记自己框选的闭合线的边长吗?
能指点下吗?
发表于 2011-4-7 18:54:58 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-4-7 20:58 编辑

回复 a170285 的帖子

  1. (defun c:tt (/ obj pianju sHandle  pt np gx bj np xc  rr  cp n ang1 zjp ms AddText)
  2. ;;;构造text
  3.   (defun AddText (obj TextString  InsertionPoint  Height xz kb qx Alignment style / obj1 err)
  4.   (setq obj1 (vla-addtext obj TextString  (vlax-3d-point InsertionPoint)  Height))
  5.   (vla-put-Rotation obj1 xz)
  6.   (vla-put-ScaleFactor obj1 kb)
  7.   (vla-put-ObliqueAngle obj1 qx)
  8.   (vla-put-alignment obj1 Alignment)
  9.   (if (/= Alignment acAlignmentLeft)
  10.     (vla-put-TextAlignmentPoint obj1 (vlax-3d-point InsertionPoint))
  11.     (vla-put-InsertionPoint obj1 (vlax-3d-point InsertionPoint))
  12.    )
  13.    (VL-CATCH-ALL-APPLY 'vla-put-StyleName (list obj1 style))
  14.   obj1
  15.   )
  16. (setq pi2 (/ pi 2))
  17.   (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
  18. (while (setq pen (car (entsel "\n选择多段线:")))
  19.   (setq        bcHeight 0.28 ;_ 字高
  20.         kgb         0.8 ;_ 宽高比
  21.         Style         "standard" ;_ 字体
  22.         ZJWS         2 ;_ 注记位数
  23.         DimScale 1 ;_ 边长尺度,若单位为mm,该值为1000
  24.         flag         nil ;_ 标注在多段线走向的右侧,T 左侧
  25.   ) ;_ setq
  26.   (setq pianju (* bcHeight 0.7)) ;_ 边长离线距离
  27.   (setq obj (vlax-ename->vla-object pen)
  28.         n 0)
  29.   (while (and (setq pt (vlax-curve-getPointAtParam obj n))
  30.               (setq np (vlax-curve-getPointAtParam obj (1+ n)))
  31.          ) ;_ 结束and
  32.     (if        (/= 0.0 (setq bugle (vla-GetBulge obj n)))
  33.       (progn
  34.         (setq midpt (vlax-curve-getPointAtParam obj (+ 0.5 n))
  35.              bj (* (atan (abs bugle)) 4)
  36.             xc (* 0.5 (distance Pt np))
  37.             gg (abs (* bugle xc))
  38.             rr (/ (+ (* xc xc) (* gg gg)) (* 2 gg))
  39.             ang1 (angle pt np)
  40.             cp (polar Pt ang1 xc)
  41.             cp (polar midpt (angle midpt cp) rr)
  42.             bc (rtos (/ (- (vlax-curve-getDistAtParam obj (1+ n)) (vlax-curve-getDistAtParam obj n)) DimScale) 2 ZJWS)
  43.               )
  44.         (if flag
  45.             (setq zjp (polar midpt (cond ((> bugle 0)(angle midpt cp))(t (angle  cp midpt))) pianju))
  46.             (setq zjp  (polar midpt (cond ((> bugle 0)(angle  cp midpt))(t (angle midpt cp))) pianju))
  47.       )
  48.         (if (not (or (and (>= ang1 0) (< ang1 (* 0.666666 pi))) (and (> ang1 (* 1.666666 pi)) (< ang1 (* 2.0 pi)))))
  49.           (setq ang1 (- ang1 pi))
  50.           )
  51.         (AddText ms bc  zjp  bcHeight ang1 kgb 0 acAlignmentMiddle Style)
  52.       );progn
  53.       (progn
  54.         (setq midpt (vlax-curve-getPointAtParam obj (+ 0.5 n))
  55.               ang1 (angle pt np)
  56.               bc (rtos (/ (- (vlax-curve-getDistAtParam obj (1+ n)) (vlax-curve-getDistAtParam obj n)) DimScale)  2 ZJWS)
  57.               )
  58.         (if flag
  59.             (setq zjp (polar midpt (+ pi2 ang1) pianju))
  60.           (setq zjp (polar midpt (- ang1 pi2) pianju))
  61.                )
  62.         (if (not (or (and (>= ang1 0) (< ang1 (* 0.666666 pi))) (and (> ang1 (* 1.666666 pi)) (<= ang1 (* 2.0 pi)))))
  63.           (setq ang1 (- ang1 pi))
  64.           )
  65.         (AddText ms bc  zjp  bcHeight ang1 kgb 0 acAlignmentMiddle Style)
  66.       );progn
  67.     ) ;_ 结束if
  68.     (setq n (1+ n))
  69.   ) ;_ 结束while
  70. )
  71.   (princ)
  72.   )

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

本版积分规则

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

GMT+8, 2025-6-26 10:21 , Processed in 0.199605 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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