乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 90|回复: 19

[编程交流] 如何将文本居中放置在

[复制链接]

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-5 20:11:34 | 显示全部楼层 |阅读模式
大家好,
 
我在弄清楚如何在创建文本后将其居中放置在矩形的中间时遇到了一些问题。这是我到目前为止所拥有的,它可以工作,但它等待我放置它。我还做了很多大小相同的面板,所以我也想让lisp记住最后一个输入,这样我就可以继续使用它,直到我点击escape或return。
如果我能得到一些帮助,我将不胜感激。
 
  1. (defun C:CRP7()
  2. (setq cmdold (getvar "cmdecho"))
  3. (setvar "cmdecho" 0)
  4. (setq PL (getstring "Enter a Panel Label :"))
  5. (setq PA (getpoint "Select Panel Area :"))
  6. (command "-boundary" "Advanced" "Island" "No" "Nearest" "" pa "")
  7. (command "_.change" (entlast) "" "_p" "_la" "Router - Green - V groove" "")
  8. (setq ts(getvar "textsize"))
  9. (setq tsty(getvar "textstyle"))
  10. (if(= 0 (cdr(assoc 40(tblsearch "style" tsty))))
  11.        (progn
  12.    
  13. (command "text" "Justify" "Center" pa ts 0 PL)))
  14. (setvar "cmdecho" cmdold)
  15.    
  16. (princ)
  17. )

 
谢谢Brian
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:17:57 | 显示全部楼层
嗨,布莱恩,
 
如果未使用AutoCAD 2015,请尝试以下程序。
“bpoly”函数在AC2015中产生错误(不确定原因)。。。
将默认提示“123”更改为面板大小。
  1. (vl-load-com)
  2. (defun c:demo ( / adoc bp cen lays msp pa pl plo reg sfa txt)
  3. (setq adoc (vla-get-activedocument (vlax-get-acad-object))
  4.        msp (vla-get-modelspace adoc)
  5.        lays (vla-get-layers adoc)
  6.    )
  7. (vla-add lays "Router - Green - V groove")
  8. (while (and (setq pa (getpoint "\n Select Panel Area: "))
  9.              (setq pl (getstring (strcat "\nEnter a Panel Label <" (cond (*pl) ("123")) ">: "))
  10.                    *pl (cond ((/= pl "") (strcase pl)) (*pl) ("123"))
  11.                    )
  12.              (setq bp (bpoly pa))
  13.              )
  14.      (setq plo (vlax-ename->vla-object bp)
  15.            sfa (vlax-make-safearray vlax-vbObject '(0 . 0))
  16.      )
  17.      (vla-put-layer plo "Router - Green - V groove")
  18.      (vlax-safearray-put-element sfa 0 plo)
  19.      (setq reg (car (vlax-safearray->list (vlax-variant-value (vla-addregion msp sfa))))
  20.            cen (vlax-get reg 'centroid)
  21.            )
  22.      (vla-delete reg)
  23.      (setq txt (vla-AddText msp *pl (vlax-3D-point (trans cen 1 0)) (getvar 'TEXTSIZE)))
  24.      (vla-put-alignment txt 10)
  25.      (vla-put-textalignmentpoint txt (vlax-3D-point (trans cen 1 0)))
  26.      (vla-put-rotation txt (angle (list 0 0)(getvar 'UCSXDIR)))
  27.    )
  28. (princ)
  29. )

希望有帮助
亨里克
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:20:59 | 显示全部楼层
也许是另一种方法,如果你输入bpoly,然后得到坐标,那么第一个和第三个的中间是中心点。
 
  1. (defun getcoords (ent)
  2. (vlax-safearray->list
  3.    (vlax-variant-value
  4.      (vlax-get-property
  5.    (vlax-ename->vla-object ent)
  6.    "Coordinates"
  7.      )
  8.    )
  9. )
  10. )
  11. (defun co-ords2xy ()
  12. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  13. (setq numb (/ (length co-ords) 2))
  14. (setq I 0)
  15. (repeat numb
  16. (setq xy (list (nth (+ I 1) co-ords)(nth I co-ords) ))
  17. (setq coordsxy (cons xy coordsxy))
  18. (setq I (+ I 2))
  19. ) ; end repeat
  20. )
  21. (setq co-ords (getcoords (entlast)))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:24:09 | 显示全部楼层
@亨里克
 
你不觉得最好将函数移到一个单独的子函数中,以获得Activedocument、ModelSpace、Layers集合,然后从while函数的循环中添加一个新层吗?
 
当做
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:27:19 | 显示全部楼层
像Tharwat一样,你会在我的代码2 defuns中看到,因为我的库lisp中有1个用于我一直使用的std内容。我关于civ3d标签的帖子只在新代码中打开Aec数据库defun。输入相同的Getval nice dcl。到了这个阶段,我需要完成所有的代码和标准化。
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:30:26 | 显示全部楼层
嗨,塔瓦,
 
你当然是对的!
 
#3处的代码是用一个“if”函数编写的,发布时,我看到OP希望代码在一个循环中,我将其(快速且脏)修改为“while”。。。
 
我的主要目标是,尝试演示另一种方法,最重要的是,尝试传递这样的想法,即在将数据提交给另一个函数/命令之前,我们应该验证函数返回的数据。
 
修订了消息#3中的代码。
 
干杯
亨里克
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:30:48 | 显示全部楼层
 
毫无疑问,这很好
回复

使用道具 举报

10

主题

52

帖子

42

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2022-7-5 20:35:43 | 显示全部楼层
你好
 
请查找随附的lisp。
 
这是李的来信。
工作很好
 
谢谢
yathishkumar先生
文本居中。lsp
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:39:51 | 显示全部楼层
谢谢Tharwat!
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-5 20:42:29 | 显示全部楼层
亨里克,
 
我正在使用AutoCAD 2015,我只是没有机会在这里更新我的信息。那么我们如何解决这个问题呢?
 
谢谢
布瑞恩
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:16 , Processed in 0.665858 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表