明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7764|回复: 31

求个文字的复制并平行直线的程序

  [复制链接]
发表于 2012-12-15 22:34:03 | 显示全部楼层 |阅读模式
本帖最后由 baiyier1112 于 2012-12-16 00:05 编辑


求个lisp程序:如图,将文字“皮带机中心线”连续复制到箭头所指位置,并让文字与直线平行。
注意:复制后原文字要保留


本帖子中包含更多资源

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

x
发表于 2012-12-17 03:19:12 | 显示全部楼层
改改还可以这样,完成一个文字的拷贝,右键,再选择另一个文字操作


  1. ;;;拷贝文字随线角度 by x_s_s_1@163.com
  2. (defun c:ctb (/ ent enl pt1 pt2 mid_pt ang)
  3.   (defun emk_t (layer pt1 pt2 text ang n72 n73 h w sty /)
  4.     (entmake (list '(0 . "text")
  5.      '(100 . "AcDbEntity")
  6.      (cons 8 layer)
  7.      '(100 . "AcDbText")
  8.      (cons 10 pt1)
  9.      (cons 1 text)
  10.      (cons 40 h)
  11.      (cons 41 w)
  12.      (cons 7 sty)
  13.      (cons 72 n72)
  14.      (cons 11 pt2)
  15.      (cons 50 ang)
  16.      (cons 73 n73)
  17.       )
  18.     )
  19.   )
  20.   (while
  21.   (setq ent (car (entsel "\n选择文字:")))
  22.   (if (= "TEXT" (cdr (assoc 0 (entget ent))))
  23.     (progn
  24.       (while (setq enl (car (entsel "\n选择对齐线:")))
  25. (if (= "LINE" (cdr (assoc 0 (entget enl))))
  26.    (progn
  27.      (setq pt1  (cdr (assoc 10 (entget enl)))
  28.     pt2  (cdr (assoc 11 (entget enl)))
  29.     mid_pt (mapcar '(lambda (x y) (/ (+ x y) 2)) pt2 pt1)
  30.     ang  (angle pt1 pt2)
  31.      )
  32.      (if (and (> ang (* 0.5 pi)) (<= ang (* pi 1.5)))
  33.        (setq ang (- ang pi))
  34.      )
  35.      (emk_t (cdr (assoc 8 (entget ent)))
  36.      '(0 0 0)
  37.      (polar mid_pt (+ ang (* 0.5 pi)) 100)
  38.      (cdr (assoc 1 (entget ent)))
  39.      ang
  40.      1
  41.      0
  42.      (cdr (assoc 40 (entget ent)))
  43.      (cdr (assoc 41 (entget ent)))
  44.      (cdr (assoc 7 (entget ent)))
  45.      )
  46.    )
  47. )
  48.       )
  49.     )
  50.   ))
  51.   (princ)
  52. )

本帖子中包含更多资源

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

x

点评

太棒了  发表于 2017-12-15 10:22
回复 支持 1 反对 0

使用道具 举报

发表于 2014-11-8 14:25:08 | 显示全部楼层
最好是框选,一下拷到线的中心,并支持自定义与线的距离
回复 支持 1 反对 0

使用道具 举报

发表于 2012-12-16 10:51:15 | 显示全部楼层
本帖最后由 x_s_s_1 于 2012-12-16 10:51 编辑

试试合用否

  1. ;;;拷贝文字随线角度 by x_s_s_1@163.com
  2. (defun c:ctb (/ ent enl pt1 pt2 mid_pt ang)
  3.   (defun emk_t (layer pt1 pt2 text ang n72 n73 h w sty /)
  4.     (entmake (list '(0 . "text")
  5.      '(100 . "AcDbEntity")
  6.      (cons 8 layer)
  7.      '(100 . "AcDbText")
  8.      (cons 10 pt1)
  9.      (cons 1 text)
  10.      (cons 40 h)
  11.      (cons 41 w)
  12.      (cons 7 sty)
  13.      (cons 72 n72)
  14.      (cons 11 pt2)
  15.      (cons 50 ang)
  16.      (cons 73 n73)
  17.       )
  18.     )
  19.   )
  20.   (setq ent (car (entsel "\n选择文字:")))
  21.   (if (= "TEXT" (cdr (assoc 0 (entget ent))))
  22.     (progn
  23.       (while (setq enl (car (entsel "\n选择对齐线:")))
  24. (if (= "LINE" (cdr (assoc 0 (entget enl))))
  25.    (progn
  26.      (setq pt1  (cdr (assoc 10 (entget enl)))
  27.     pt2  (cdr (assoc 11 (entget enl)))
  28.     mid_pt (mapcar '(lambda (x y) (/ (+ x y) 2)) pt2 pt1)
  29.     ang  (angle pt1 pt2)
  30.      )
  31.      (if (and (> ang (* 0.5 pi)) (<= ang (* pi 1.5)))
  32.        (setq ang (- ang pi))
  33.      )
  34.      (emk_t (cdr (assoc 8 (entget ent)))
  35.      '(0 0 0)
  36.      (polar mid_pt (+ ang (* 0.5 pi)) 100)
  37.      (cdr (assoc 1 (entget ent)))
  38.      ang
  39.      1
  40.      0
  41.      (cdr (assoc 40 (entget ent)))
  42.      (cdr (assoc 41 (entget ent)))
  43.      (cdr (assoc 7 (entget ent)))
  44.      )
  45.    )
  46. )
  47.       )
  48.     )
  49.   )
  50.   (princ)
  51. )

本帖子中包含更多资源

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

x

点评

兄台,64位的2010版怎么木有反应啊?  发表于 2012-12-21 12:09

评分

参与人数 2明经币 +1 金钱 +5 收起 理由
nfz + 5
baiyier1112 + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2012-12-15 22:45:07 | 显示全部楼层
tssd好像可以吧
 楼主| 发表于 2012-12-15 22:49:43 | 显示全部楼层
本帖最后由 baiyier1112 于 2012-12-15 22:50 编辑

用探索者实现,需要2步操作:
第一步,复制文字到一个位置
第二步:用探索者的文字平行命令。

我想要一个命令完成:即将以上的两步用一个命令完成
发表于 2012-12-15 23:01:34 | 显示全部楼层
搜索吧!记得G版帮人搞过一个!
发表于 2012-12-15 23:23:40 | 显示全部楼层
 楼主| 发表于 2012-12-15 23:26:54 | 显示全部楼层
yjr111 发表于 2012-12-15 23:23
http://bbs.mjtd.com/thread-89922-1-1.html

谢谢。这个程序很好,我希望达到的目的是复制并将复制出的文字与线平行。原有的字要留下。
 楼主| 发表于 2012-12-16 11:19:32 | 显示全部楼层
x_s_s_1 发表于 2012-12-16 10:51
试试合用否

非常合适,万分感谢。
有个小请求,不知大侠能否将程序改进一下,将复制后的文字放到指定位置,而不单纯是线段的中点处。
发表于 2012-12-17 02:58:58 | 显示全部楼层
baiyier1112 发表于 2012-12-16 11:19
非常合适,万分感谢。
有个小请求,不知大侠能否将程序改进一下,将复制后的文字放到指定位置,而不单纯 ...

我自己用倾向于放置于中心点,按照您的要求修改了一下,皮带一般都是用line线画的,所以没有对其它线条图元进行处理


  1. ;;;拷贝文字随线角度 by x_s_s_1@163.com
  2. (vl-load-com)
  3. (defun c:ctb (/ ent enl pt1 pt2 mid_pt ang)
  4.   (defun emk_t (layer pt1 pt2 text ang n72 n73 h w sty /)
  5.     (entmake (list '(0 . "text")
  6.      '(100 . "AcDbEntity")
  7.      (cons 8 layer)
  8.      '(100 . "AcDbText")
  9.      (cons 10 pt1)
  10.      (cons 1 text)
  11.      (cons 40 h)
  12.      (cons 41 w)
  13.      (cons 7 sty)
  14.      (cons 72 n72)
  15.      (cons 11 pt2)
  16.      (cons 50 ang)
  17.      (cons 73 n73)
  18.       )
  19.     )
  20.   )
  21.   (setq ent (car (entsel "\n选择文字:")))
  22.   (if (= "TEXT" (cdr (assoc 0 (entget ent))))
  23.     (progn
  24.       (while (setq enl (entsel "\n选择对齐线:"))
  25. (if (= "LINE" (cdr (assoc 0 (entget (car enl)))))
  26.    (progn
  27.      (setq pt1  (cdr (assoc 10 (entget (car enl))))
  28.     pt2  (cdr (assoc 11 (entget (car enl))))
  29.     mid_pt (vlax-curve-getClosestPointTo
  30.       (vlax-ename->vla-object (car enl))
  31.       (cadr enl)
  32.     )
  33.     ang  (angle pt1 pt2)
  34.      )
  35.      (if (and (> ang (* 0.5 pi)) (<= ang (* pi 1.5)))
  36.        (setq ang (- ang pi))
  37.      )
  38.      (emk_t (cdr (assoc 8 (entget ent)))
  39.      '(0 0 0)
  40.      (polar mid_pt (+ ang (* 0.5 pi)) 100)
  41.      (cdr (assoc 1 (entget ent)))
  42.      ang
  43.      1
  44.      0
  45.      (cdr (assoc 40 (entget ent)))
  46.      (cdr (assoc 41 (entget ent)))
  47.      (cdr (assoc 7 (entget ent)))
  48.      )
  49.    )
  50. )
  51.       )
  52.     )
  53.   )
  54.   (princ)
  55. )

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-25 05:02 , Processed in 0.178513 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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