明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 950|回复: 28

[提问] 请问用entmake在指定位置生成对应文字的代码怎么写?谢谢~

[复制链接]
发表于 2024-12-27 01:44:51 来自手机 | 显示全部楼层 |阅读模式
例如:文字1、文字6、文字8和坐标a、b、d,文字和坐标都是无规律的,我想指定在a生成文字1、c生成文字6、d生成文字8,现在只会一个entmake生成一段文字的写法,数量多的话太麻烦了,请问怎么写这个变量?谢谢~
回复

使用道具 举报

发表于 2024-12-30 15:02:02 | 显示全部楼层
本帖最后由 lee50310 于 2024-12-30 21:09 编辑
逗亦斗霸 发表于 2024-12-30 09:23
这段代码我已保存好,谢谢啦~另外请问一下entmake生成圆和填充可以用这种对应形式生成吗?

entmake填充代碼 論壇這裡有 ,請點選下面連結:
[源码] entmake填充


  1. ;;创建圆
  2. ;;例: (make:circle "0" '(0 0 0) 30 6)

  3. (defun make:circle(lay ipt rad col)
  4. (entmake (list (cons 0 "CIRCLE") ;
  5.                (cons 6 "BYLAYER")
  6.                (cons 8  lay)  ;圖層
  7.                (cons 10 ipt)  ;插入點
  8.                (cons 40 rad)  ;半徑
  9.                (cons 62 col)  ;顏色
  10.                (cons 210 (list 0.0 0.0 1.0))))
  11. )



回复 支持 反对

使用道具 举报

发表于 2024-12-29 17:01:17 | 显示全部楼层
本帖最后由 lee50310 于 2024-12-30 16:25 编辑
逗亦斗霸 发表于 2024-12-27 14:30
感谢版主指点!这种写法也是同样的疑问,对正方式'(71 . 1) '(72 . 1) '(73 . 2)要怎么添加进去啊?

  1. ;;--------------------------------------------------------- -------   
  2. (defun c:tt()
  3. (mapcar 'set '( a b d) (list '(634.061 61.7639 0.0) '(634.061 58.2639 0.0) '(612.788 52.4797 0.0)) )

  4. (setq lst-tx '("文字1" "文字6" "文字8")
  5.       lst-pt (list a b d)
  6.       data '(1 1 2) ;文字對齊方式
  7. )
  8. (mapcar'(lambda(x y)(make:txt "宋體" 2.5 0 6 data x y))lst-pt lst-tx)
  9. )
  10. ;;------------- -------------------------------------



回复 支持 反对

使用道具 举报

发表于 2024-12-27 08:34:38 | 显示全部楼层
(MAPCAR
                '(LAMBDA (X1 Y1)
                                            (entmake (list '(0 . "TEXT") (cons 10 X1) (cons 1 Y1)))
                 )
                PTN
                LST
              )
回复 支持 反对

使用道具 举报

发表于 2024-12-27 06:46:37 来自手机 | 显示全部楼层
加个循环函数不就可以了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-27 07:57:37 来自手机 | 显示全部楼层
ssyfeng 发表于 2024-12-27 06:46
加个循环函数不就可以了吗?

我目前只会写定距递增或递减类的函数,请问这种没有规律的怎么写啊?
回复 支持 反对

使用道具 举报

发表于 2024-12-27 08:11:21 | 显示全部楼层
(setq lst '((pta . 文字1) (ptc . 文字6) (ptd . 文字8)))
(foreach x lst (entmake (list '(0 . "TEXT") (cons 10 (car x)) (cons 1 (cdr x)))))
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-27 09:08:39 | 显示全部楼层
fangmin723 发表于 2024-12-27 08:11
(setq lst '((pta . 文字1) (ptc . 文字6) (ptd . 文字8)))
(foreach x lst (entmake (list '(0 . "TEXT") ...

好像不行呐,不能生成哦~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-27 09:23:47 | 显示全部楼层
hn10183051 发表于 2024-12-27 08:34
(MAPCAR
                '(LAMBDA (X1 Y1)
                                            (entmake (list '(0 . "TEXT") (cons 10 X1) (cons 1 Y1)))

请问怎么用啊?PTN和LST还设置一下吗?直接加上的话代码都不能使用了啊~
回复 支持 反对

使用道具 举报

发表于 2024-12-27 09:58:22 | 显示全部楼层
逗亦斗霸 发表于 2024-12-27 09:23
请问怎么用啊?PTN和LST还设置一下吗?直接加上的话代码都不能使用了啊~

ptn用你的点构成表,lst用你要写的文字内容构成表,到这一步相当于填写姓名、性别那么简单了
回复 支持 反对

使用道具 举报

发表于 2024-12-27 12:47:26 | 显示全部楼层
  1. (setq lst-tx '("文字1" "文字6" "文字8")
  2.       lst-pt (list a b d)
  3. )
  4. (mapcar'(lambda(x y)(entmake(list '(0 . "text")(cons 10 x)(cons 1 y))))lst-pt lst-tx)
回复 支持 反对

使用道具 举报

发表于 2024-12-27 12:59:20 | 显示全部楼层
逗亦斗霸 发表于 2024-12-27 09:08
好像不行呐,不能生成哦~

额,我这只是示意,具体的你自己改动下就行了
(setq lst (list (cons  (getpoint "拾取点a")  "文字1") (cons  (getpoint "拾取点c") "文字6") (cons  (getpoint "拾取点d") "文字8")))
(foreach x lst (entmake (list '(0 . "TEXT") (cons 1 (cdr x)) (cons 10 (car x)) (cons 40 5))))
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-31 10:26 , Processed in 0.195817 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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