明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: sscylh

(entget (car (entsel)))小疑惑求解

[复制链接]
发表于 2015-7-23 17:23:36 | 显示全部楼层
dingtiedt 发表于 2015-7-23 12:54
这个非常好!如果现在要修改第二个10的组码值,怎么修改,就是怎么用新的值替换掉第二个10的组码,谢谢! ...

现在想要修改多重引线里第二个10的组码值,如果是第一个10或最后一个10,用subst或cons,能替换修改,但是对第二个或第三个,就不知道怎么办了,还得请教请教你
发表于 2015-7-23 18:56:06 | 显示全部楼层
dingtiedt 发表于 2015-7-23 17:23
现在想要修改多重引线里第二个10的组码值,如果是第一个10或最后一个10,用subst或cons,能替换修改,但是 ...

引用E 大的话, 无码无真相.
发表于 2015-7-23 19:34:50 | 显示全部楼层
lucas_3333 发表于 2015-7-23 18:56
引用E 大的话, 无码无真相.

谢谢你的回复。
要做多重引线的水平对齐,用“2多重引线”的B‘点的y坐标值,替代“1多重引线”的B点的y坐标值。
B’和B点的y坐标是第四个10组码值,请问怎么修改。谢谢!

实体DXF群组码如下:
(-1 . <Entity name: 7eecc740>)
(0 . "MULTILEADER")
(330 . <Entity name: 7eecacf8>)
(5 . "268")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbMLeader")
(270 . 2)
(300 . "CONTEXT_DATA{")
(40 . 1.0)
(10 2959.75 8283.58 0.0)-------第一个,文字基点
(41 . 100.0)
(140 . 4.0)
(145 . 2.0)
(174 . 1)
(175 . 1)
(176 . 0)
(177 . 0)
(290 . 1)
(304 . "1{\\fSimSun|b0|i0|c134|p2;多重引线}")
(11 0.0 0.0 1.0)
(340 . <Entity name: 7eecac88>)
(12 2961.75 8341.08 0.0)
(13 1.0 0.0 0.0)
(42 . 0.0)
(43 . 0.0)
(44 . 0.0)
(45 . 1.0)
(170 . 1)
(90 . -1073741824)
(171 . 1)
(172 . 5)
(91 . -1073741824)
(141 . 0.0)
(92 . 0)
(291 . 0)
(292 . 0)
(173 . 0)
(293 . 0)
(142 . 0.0)
(143 . 0.0)
(294 . 0)
(295 . 0)
(296 . 0)
(110 1712.98 6739.81 0.0)
(111 1.0 0.0 0.0)
(112 0.0 1.0 0.0)
(297 . 0)
(302 . "LEADER{")
(290 . 1)
(291 . 1)
(10 2951.75 8283.58 0.0)--------第二个
(11 1.0 0.0 0.0)
(90 . 0)
(40 . 8.0)
(304 . "LEADER_LINE{")
(10 1712.98 6371.4 0.0)-------第三个对应A点
(10 1712.98 8283.58 0.0)------第四个对应B点,就要要修改的
(91 . 0)
(170 . 1)
(92 . -1056964608)
(340 . <Entity name: 0>)
(171 . -2)
(40 . 0.0)
(341 . <Entity name: 0>)
(93 . 0)
(305 . "}")
(271 . 0)
(303 . "}")
(272 . 9)
(273 . 9)
(301 . "}")
(340 . <Entity name: 7eecc0b0>)
(90 . 345088)
(170 . 1)
(91 . -1056964608)
(341 . <Entity name: 7eecaca0>)
(171 . -2)
(290 . 1)
(291 . 1)
(41 . 8.0)
(42 . 4.0)
(172 . 2)
(343 . <Entity name: 7eecac88>)
(173 . 1)
(95 . 1)
(174 . 1)
(175 . 0)
(92 . -1056964608)
(292 . 0)
(93 . -1056964608)
(10 1.0 1.0 1.0)----------第五个或更多
(43 . 0.0)
(176 . 0)
(293 . 0)
(294 . 0)
(178 . 0)
(179 . 1)
(45 . 1.0)
(271 . 0)
(272 . 9)
(273 . 9)

本帖子中包含更多资源

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

x
发表于 2015-7-23 19:43:55 | 显示全部楼层
dingtiedt 发表于 2015-7-23 19:34
谢谢你的回复。
要做多重引线的水平对齐,用“2多重引线”的B‘点的y坐标值,替代“1多重引线”的B点的y ...

你写的码呢? 你不是说第一点和最后一点可以替代吗? 你是怎么替代的?
发表于 2015-7-23 19:44:34 | 显示全部楼层
lucas_3333 发表于 2015-7-23 18:56
引用E 大的话, 无码无真相.

或者更简单的,直接修改最后一条“多重引线”的长度。就象是直接修改基线的长度,基线的长度已经有前辈提供的vla-put-dogleglength。
发表于 2015-7-23 19:58:28 | 显示全部楼层
lucas_3333 发表于 2015-7-23 19:43
你写的码呢? 你不是说第一点和最后一点可以替代吗? 你是怎么替代的?


就是先组织了一下

(defun c:tmp ()
  (vl-load-com)
  (princ "\n选择引线标注")
  (if (setq ss (ssget "w" '((o . *leader))));选择引线标注,支持框选
  (repeat (setq n (sslength ss))
    (setq ent (ssname ss (setq n (setq n (1- n)))))
    (setq obj (vlax-ename->vla-object ent))        ;取对象名,为取引线长度做准备
    (setq objn (vla-get-ObjectName obj)                ;取图元名,为取坐标做准备
    (setq pt1 (getpoint "\指定对齐第一点" ))
    (setq pt2 (getpoint "\指定对齐第二点" ))
         (setq dx (car (cdr (assoc 10 objn))) dy (car (cddr (assoc 10 objn))))                ;引线图元

的x,y坐标值
         (setq sx1 (car (cdr (assoc 10 pt1))) sy1 (car (cddr (assoc 10 pt1))))        ;第一对齐点图元的

x,y坐标值
         (setq sx2 (car (cdr (assoc 10 pt2))) sy2 (car (cddr (assoc 10 pt2))))        ;第二对齐点图元的

x,y坐标值
           
    (cond
      (= sx1 sx2)        ; 说明垂直对齐,那么要对导线做增减处理
       (setq distx (- dx sx1))                        ;求得对齐点到引线末点的距离
       (setq dlh (vla-get-DoglegLength obj))        ;取得着陆距离
       (vla-put-DoglegLength obj (+ dlh distx))        ;着陆距离的增减


      (= sy1 sy2)        ; 说明水平对齐,那么要对最后一条引线做增减处理
       (setq disty (- dy sy1))                        ;求得对齐点到引线末点的距离??从这里就不行
       (setq llh (vla-get-leaderlength obj))        ;取得引线的长度??
       (vla-put-leaderlength obj (+ dlh distx))        ;引线长度的增减??


      
    );cond
    );repeat
   );if
发表于 2015-7-23 20:46:38 | 显示全部楼层
dingtiedt 发表于 2015-7-23 19:58
就是先组织了一下

(defun c:tmp ()

给个例子你参考下
  1. (defun c:tt (/ al alpt cnt dif dll doc el obj ss vs xpt xpt2)
  2.   (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  3.   (princ "\n选择需要对齐的多重引线")
  4.   (if (and (setq ss (ssget ":L" '((0 . "MULTILEADER"))))
  5.            (setq al (car (entsel "\n选择保持不变的多重引线: ")))
  6.            (setq alpt (cdr (assoc 12 (entget al))))
  7.            (setq xpt (car alpt))
  8.            (setq vs (getvar 'viewsize))
  9.       )
  10.     (progn (vla-endundomark doc)
  11.            (vla-startundomark doc)
  12.            (grdraw (polar alpt (angtof "90") vs) (polar alpt (angtof "270") vs) 1)
  13.            (foreach ml (vl-remove al (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  14.              (setq el        (entget ml)
  15.                    obj        (vlax-ename->vla-object ml)
  16.                    xpt2        (cadr (assoc 12 el))
  17.                    dif (* (abs (- xpt xpt2)) (getvar "CANNOSCALEVALUE"))
  18.                    cnt        -1
  19.              )
  20.              (if (minusp (vlax-get obj 'doglegged))
  21.                (progn (setq dll (vla-get-dogleglength obj))
  22.                       (while (and (not (equal xpt xpt2 0.01)) (< (setq cnt (1+ cnt)) 2))
  23.                         (vla-put-dogleglength obj (+ dll (setq dif (- dif))))
  24.                         (setq xpt2 (cadr (assoc 12 (entget ml))))
  25.                       )
  26.                )
  27.              )
  28.              (vla-update obj)
  29.            )
  30.            (vla-endundomark doc)
  31.     )
  32.   )
  33.   (princ)
  34. )
发表于 2015-7-23 20:53:33 | 显示全部楼层
lucas_3333 发表于 2015-7-23 20:46
给个例子你参考下

谢谢谢谢,我要好好看看的
发表于 2015-7-23 21:20:01 | 显示全部楼层
lucas_3333 发表于 2015-7-23 20:46
给个例子你参考下

这个构思得非常好,比cad本身提供mla的垂直对齐好用。这样,水平对齐时就用cad本身,垂直对齐就用这个。
发表于 2015-7-24 12:33:01 | 显示全部楼层
dingtiedt 发表于 2015-7-23 19:58
就是先组织了一下

(defun c:tmp ()


这个是个草稿,有很多问题,改好的在
多重引线(mld)对齐
http://bbs.mjtd.com/forum.php?mo ... 655&fromuid=7309019
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 14:48 , Processed in 0.191819 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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