明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 鱼与熊掌

[已解答] 求完善下代码.(画线并自动标注功能) (源码来自73.)

[复制链接]
 楼主| 发表于 2014-6-2 00:04:49 | 显示全部楼层
edata 发表于 2014-6-2 00:03
当前样式不要用替代。
替代需要更改扩展数据的组码。
或者通过vla方式更改标注数据。

嗯 OK.`````````````````````````
发表于 2014-6-2 00:11:08 | 显示全部楼层
  1. (defun c:ts (/ p q pt en obj)
  2. ;(setvar'osmode 16384)
  3.   (setq os_bak(getvar 'cmdecho))
  4.   (setvar 'cmdecho 0)
  5.   (setq p (getpoint "\n指定起点"))
  6.   (while p
  7.     (if        p
  8.       (progn
  9.         (command "pline" "_non" p)
  10.         (while (setq q        (getpoint p "下一点")
  11.                      pt        (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p q))
  12.                )
  13.           (command "_non" q)
  14.           (setq en (entmakex
  15.             (list '(0 . "DIMENSION")
  16.                   '(100 . "AcDbEntity")
  17.                   '(100 . "AcDbDimension")
  18.                   (cons        10
  19.                         (polar p
  20.                                (+ (* 0.5 pi) (if (and        (< (/ Pi 2) (angle p q))
  21.                                         (> (* 1.5 pi) (angle p q))
  22.                                    )
  23.                                  (angle q p)
  24.                                  (angle p q)
  25.                                ))
  26.                                (* 6 (getvar "dimscale"))
  27.                         )
  28.                   )
  29.                   '(70 . 33)
  30.                   '(1 . "")
  31.                   '(100 . "AcDbAlignedDimension")
  32.                   (cons 13 (polar q
  33.                                 (+ (* 0.5 pi) (if (and        (< (/ Pi 2) (angle p q))
  34.                                         (> (* 1.5 pi) (angle p q))
  35.                                    )
  36.                                  (angle q p)
  37.                                  (angle p q)
  38.                                ))
  39.                                (* 3 (getvar "dimscale"))
  40.                         ))
  41.                   (cons 14 (polar p
  42.                                (+ (* 0.5 pi) (if (and        (< (/ Pi 2) (angle p q))
  43.                                         (> (* 1.5 pi) (angle p q))
  44.                                    )
  45.                                  (angle q p)
  46.                                  (angle p q)
  47.                                ))
  48.                                (* 3 (getvar "dimscale"))
  49.                         ))
  50.             )
  51.           )
  52.                 obj(vlax-ename->vla-object en))
  53.           (vla-put-ScaleFactor obj (getvar "dimscale"))
  54.           (entmake (list '(0 . "TEXT")
  55.                          (cons 10 pt)
  56.                          (cons 40 1)
  57.                          (cons 1 (rtos (distance p q) 2 2))
  58.                          (cons 50
  59.                                (if (and        (< (/ Pi 2) (angle p q))
  60.                                         (> (* 1.5 pi) (angle p q))
  61.                                    )
  62.                                  (angle q p)
  63.                                  (angle p q)
  64.                                )
  65.                          )
  66.                          ;(cons 7 "city")
  67.                          (cons 72 1)
  68.                          (cons 73 1)
  69.                          (cons 40 (* 2 (getvar "dimscale")))
  70.                          (cons 11 pt)
  71.                    )
  72.           )
  73.           (setq p q)
  74.         )
  75.         (if (>(getvar 'CMDACTIVE) 0) (command ""))
  76.         (setq p (getpoint "\n指定起点"))
  77.       )
  78.       ;(setvar 'osmode (- (getvar osmode) 16384))
  79.     )
  80.   )
  81.   (if (>(getvar 'CMDACTIVE) 0) (command ""))
  82.   (if os_bak(setvar 'cmdecho os_bak))
  83.   (princ)
  84. )
发表于 2014-6-2 00:17:53 | 显示全部楼层
(defun c:tts(/ p q pt)
          ;(setvar'osmode 16384)
          (setq  p (getpoint"指定起点"))
          (while p
            (if p
                    (progn
                                   (command "pline" p)
                                  (while (setq q (getpoint p"下一点") pt (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p q)) pt (polar pt (+ (angle p q)1.5708) (* 3 (getvar "dimscale"))))
                                    (command q)
                                    (entmake
                                            (list
                                                    '(0 . "TEXT")
                                                    '(100 . "AcDbEntity")
                                                    '(100 . "AcDbText")
                                                    (cons 10 pt)
                                                    (cons 40 (* 2 (getvar "dimscale")))
                                                    (cons 1 (rtos (distance p q) 2 2))
                                                          (cons 50 (if (and (<(/ Pi 2)(angle p q))(>(* 1.5 pi)(angle p q)))(angle q p)(angle p q)))
                                                          (cons 7 "HZTXT");改了文字样式,自己改回去。
                                                          (cons 72 1)
                                                          (cons 73 1)
                                                          ;(cons 40 (* 2 (getvar "dimscale")))
                                                          (cons 11 pt)
                                                  )
                                          )
                                    (setq p q)
                            )
                                  (command "")
                                  (setq p(getpoint"指定起点"))
                          )
                      (setvar'osmode(-(getvar osmode)16384))
              )
    )
          (princ)
)
不知这是不是你所想要的。
 楼主| 发表于 2014-6-2 00:22:05 | 显示全部楼层
edata 发表于 2014-6-2 00:11

Perfect 端午节快乐  dal标注命令的第三个点命令参数哪里调的   
 楼主| 发表于 2014-6-2 00:23:19 | 显示全部楼层
reyun 发表于 2014-6-2 00:17
(defun c:tts(/ p q pt)
          ;(setvar'osmode 16384)
          (setq  p (getpoint"指定起点"))

不错 谢谢帮忙
 楼主| 发表于 2014-6-2 00:49:47 | 显示全部楼层
edata 发表于 2014-6-2 00:11

我已经知道了`.`~ 谢谢帮忙
发表于 2014-6-2 10:44:14 | 显示全部楼层
edata 发表于 2014-6-1 23:32
仅供参考,

程序不错,可是标注有2个,如果只要其中一个,就是带箭头那组数据不要显示,如何修改,请您告诉我,谢谢!
 楼主| 发表于 2014-6-2 13:46:06 | 显示全部楼层
香田里浪人 发表于 2014-6-2 10:44
程序不错,可是标注有2个,如果只要其中一个,就是带箭头那组数据不要显示,如何修改,请您告诉我,谢谢! ...
  1. (defun c:`d (/ p q pt en obj)
  2. ;(setvar'osmode 16384)
  3. ;by e版主
  4.   (setq os_bak(getvar 'cmdecho))
  5.   (setvar 'cmdecho 0)
  6.   (setq p (getpoint "\n指定起点"))
  7.   (while p
  8.     (if        p
  9.       (progn
  10.         (command "pline" "_non" p)
  11.         (while (setq q        (getpoint p "下一点")
  12.                      pt        (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p q))
  13.                )
  14.           (command "_non" q)
  15.           (entmake (list '(0 . "TEXT")
  16.                          (cons 10 pt)
  17.                          (cons 40 1)
  18.                          (cons 1 (rtos (distance p q) 2 2))
  19.                          (cons 50
  20.                                (if (and        (< (/ Pi 2) (angle p q))
  21.                                         (> (* 1.5 pi) (angle p q))
  22.                                    )
  23.                                  (angle q p)
  24.                                  (angle p q)
  25.                                )
  26.                          )
  27.                          (cons 7 "city")
  28.                          (cons 72 1)
  29.                          (cons 73 1)
  30.                          (cons 40 (* 2 (getvar "dimscale")))
  31.                          (cons 11 pt)
  32.                    )
  33.           )
  34.           (setq p q)
  35.         )
  36.         (if (>(getvar 'CMDACTIVE) 0) (command ""))
  37.         (setq p (getpoint "\n指定起点"))
  38.       )
  39.       ;(setvar 'osmode (- (getvar osmode) 16384))
  40.     )
  41.   )
  42.   (if (>(getvar 'CMDACTIVE) 0) (command ""))
  43.   (if os_bak(setvar 'cmdecho os_bak))
  44.   (princ)
  45. )

发表于 2014-6-2 14:36:33 | 显示全部楼层
鱼与熊掌君,谢谢你答复,
 楼主| 发表于 2014-6-2 17:42:17 | 显示全部楼层
香田里浪人 发表于 2014-6-2 14:36
鱼与熊掌君,谢谢你答复,

不客气`~~~~~~~~~
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 01:11 , Processed in 0.212998 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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