明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1438|回复: 7

[已解答] 求在图中指定地方生成已有图层的图层名文字,且图层名即在对应的图层,文字上下顺...

[复制链接]
发表于 2014-3-22 20:46 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 品茗新秀 于 2014-3-23 20:27 编辑

求在图中指定地方生成已有图层的图层名文字,且图层名即在对应的图层,

最佳答案

查看完整内容

这下应该可以了.
发表于 2014-3-22 20:46 | 显示全部楼层
品茗新秀 发表于 2014-3-23 18:54
图层生成是这个样子,如果能排序就好了,如图圈圈的应在最后

  1. (defun c:lsa ( / layerdata layerlst layername pt textsize)
  2.   (defun maketext (locationpoint textheight text rowtype)
  3.     (entmake (list '(0 . "TEXT")
  4.                    '(100 . "AcDbText")
  5.                     (cons 40 textheight)
  6.                    '(41 . 0.8)
  7.                     (cons 1 text)
  8.                     (cons 72 rowtype)
  9.                    '(10 0.0 0.0 0.0)
  10.                     (cons 11 (trans locationpoint 1 0))
  11.                    '(73 . 2)
  12.              )
  13.     )
  14.   )
  15.   (setq textsize (* (getvar "dimscale") (getvar "textsize")))
  16.   (while (setq layerdata (tblnext "layer" (null layerdata)))
  17.     (setq layername (cdr (assoc 2 layerdata)))
  18.     (setq layerlst (cons layername layerlst))
  19.   )
  20.   (if (setq pt (getpoint "\n 指定插入点:"))
  21.     (foreach layername (acad_strlsort layerlst)
  22.       (setvar "clayer" layername)
  23.       (maketext pt textsize layername 0)
  24.       (setq pt (list (car pt) (- (cadr pt) (* 2 textsize))))
  25.     )
  26.   )
  27.   (princ)
  28. )


这下应该可以了.

点评

非常不错,太经典了,  发表于 2014-3-23 20:05
回复

使用道具 举报

发表于 2014-3-22 22:19 | 显示全部楼层
做类似的图例用?

点评

是的  发表于 2014-3-22 22:31
回复

使用道具 举报

 楼主| 发表于 2014-3-23 16:15 | 显示全部楼层
这个看样子难度较大,顶出高手
回复

使用道具 举报

发表于 2014-3-23 16:36 来自手机 | 显示全部楼层
我觉得院长应该出手了??
回复

使用道具 举报

发表于 2014-3-23 16:46 | 显示全部楼层
  1. (defun c:lsa ( / layerdata layername pt textsize)
  2.   (defun maketext (locationpoint textheight text rowtype)
  3.     (entmake (list '(0 . "TEXT")
  4.                    '(100 . "AcDbText")
  5.                     (cons 40 textheight)
  6.                    '(41 . 0.8)
  7.                     (cons 1 text)
  8.                     (cons 72 rowtype)
  9.                    '(10 0.0 0.0 0.0)
  10.                     (cons 11 (trans locationpoint 1 0))
  11.                    '(73 . 2)
  12.              )
  13.     )
  14.   )
  15.   (setq textsize (* (getvar "dimscale") (getvar "textsize")))
  16.   (if (setq pt (getpoint "\n 指定插入点:"))
  17.     (while (setq layerdata (tblnext "layer" (null layerdata)))
  18.       (setq layername (cdr (assoc 2 layerdata)))
  19.       (setvar "clayer" layername)
  20.       (maketext pt textsize layername 0)
  21.       (setq pt (list (car pt) (- (cadr pt) (* 2 textsize))))
  22.     )
  23.   )
  24.   (princ)
  25. )

不知道是不是这样的效果,试下.

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1 生成的图层应能排序

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-3-23 18:54 | 显示全部楼层
本帖最后由 品茗新秀 于 2014-3-23 18:55 编辑
SunSpring 发表于 2014-3-23 16:46
不知道是不是这样的效果,试下.

图层生成是这个样子,如果能排序就好了,如图圈圈的应在最后


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-3-24 15:19 | 显示全部楼层
品茗新秀 发表于 2014-3-23 18:54
图层生成是这个样子,如果能排序就好了,如图圈圈的应在最后

加一句就行...
(defun c:lsa ( / layerdata layerlst layername pt textsize)
  (defun maketext (locationpoint textheight text rowtype)
    (entmake (list '(0 . "TEXT")
                   '(100 . "AcDbText")
                    (cons 40 textheight)
                   '(41 . 0.8)
                    (cons 1 text)
                    (cons 72 rowtype)
                   '(10 0.0 0.0 0.0)
                    (cons 11 (trans locationpoint 1 0))
                   '(73 . 2)
             )
    )
  )
  (setq textsize (* (getvar "dimscale") (getvar "textsize")))
  (while (setq layerdata (tblnext "layer" (null layerdata)))
    (setq layername (cdr (assoc 2 layerdata)))
    (setq layerlst (cons layername layerlst))
  )
  (setq layerlst (vl-sort layerlst '<))
  (if (setq pt (getpoint "\n 指定插入点:"))
    (foreach layername (acad_strlsort layerlst)
      (setvar "clayer" layername)
      (maketext pt textsize layername 0)
      (setq pt (list (car pt) (- (cadr pt) (* 2 textsize))))
    )
  )
  (princ)
)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 19:01 , Processed in 0.330056 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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