乐筑天下

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

[编程交流] 将文本放置在直线或柱脚上

[复制链接]

5

主题

19

帖子

14

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:42:30 | 显示全部楼层 |阅读模式
大家好,我需要在Visual Lisp中编写一个函数,将文本放置在一行或多行上。
文本在大小或长度上与所选行相对(这不是强制性的,但很好)
 
我知道这里有很多函数,可以将文本与不同角度的曲线或直线对齐,但我只需要一个简单的函数,并与任何长度的基本水平线对齐。
 
基本上就是这样。
 
此处为文本
 
用户选择行,然后用户键入文本,然后将文本放置在行上。
 
谢谢
拉夫
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:53:55 | 显示全部楼层
你已经开始做这件事了,还是只是在找施舍?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:00:27 | 显示全部楼层
 
您是否尝试过多行文字中的下划线按钮或文字命令中的%%u?
 
这会很有帮助。
 
塔瓦特
回复

使用道具 举报

5

主题

19

帖子

14

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 11:16:10 | 显示全部楼层
 
是的,我已经开始,也许应该把文件放在我有它。
 
 
(defun c:textline(/insertpoint textinput)
(setq insertpoint(getpoint“\n选择文本位置:”);等待用户输入
(命令“text”插入点2 0(strcat(princ textinput)))
(普林斯)
)
 
 
不,我想选择一行,文本放在上面。上面的工作,但需要调整文字略高于行和文字是相对于行的大小。另一个问题是,它需要一个点来插入文本,我想选择行并将文本放置在行上。
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:21:34 | 显示全部楼层
如果你愿意,可以把它拆开
  1. ;;;Label storm pipe size  LPS 2010-02-04   
  2. (defun c:lblstsize (/ ent midpt entname obj mid-param beg-pt end-pt ang ins-pt)
  3. (vl-load-com)
  4. (setq temperr *error*            
  5.        *error* errortrap
  6.        varlst '("cmdecho")
  7.        oldvar (mapcar 'getvar varlst)
  8.    )
  9. (setvar "cmdecho" 0)
  10. (defun dtr (a) (* pi (/ a 180.0)))
  11. (command "UCS" "W")
  12. (setq ent (entsel "\nSelect pipe: ")
  13.    midpt (osnap (cadr ent) "mid")
  14.        entname (car ent)
  15.    obj (vlax-ename->vla-object entname)
  16.    mid-param (vlax-curve-getParamAtPoint obj midpt)
  17.    beg-pt (vlax-curve-getPointAtParam obj (fix mid-param))
  18.    end-pt (vlax-curve-getPointAtParam  obj (1+ (fix mid-param)))
  19.    ang (angle beg-pt end-pt))
  20.    (if
  21.      (and (> ang 1.74533) (< ang 4.53786))
  22.      (setq ang (angle end-pt beg-pt))
  23.           )
  24.    
  25.    (setq ins-pt (polar midpt (+ ang (/ pi 2)) (* (getvar "dimscale")0.125)))
  26.    (if (not (tblsearch "layer" "st-txt"))
  27.    (command "-layer" "m" "ST-TXT" "C" "130" "ST-TXT" ""))
  28.   (entmakex
  29.    (list
  30.      (cons 0   "MTEXT")         
  31.      (cons 100 "AcDbEntity")         
  32.      (cons 100 "AcDbMText")
  33.      (cons 8 "ST-TXT")
  34.      (cons 10 ins-pt)        
  35.      (cons 1 (getstring T "\nEnter Pipe size: "))
  36.      (cons 71 5)
  37.      (cons 50 ang)
  38.      (cons 7 "Simplex")
  39.      (cons 40 (* (getvar "dimscale") 0.1))
  40.      )
  41.    )
  42. (setvar "cmdecho" 1)
  43. (command "UCS" "P")
  44. (princ)
  45.    );defun
  46. (defun errortrap (msg)
  47. (if oldvar (mapcar 'setvar varlst oldvar))
  48.    (setq *error* temperr)
  49. (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  50.        (princ (strcat "\n<< Error: " msg " >>"))
  51.      )
  52. (princ)
  53. )
回复

使用道具 举报

5

主题

19

帖子

14

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 11:28:34 | 显示全部楼层
列表中的缺点是什么?
 
我对Lisp了解不多。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:37:32 | 显示全部楼层
创建点对。
 
阅读关于cons的VLIDE中的Dev帮助。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 11:46:04 | 显示全部楼层
也试试这个
[code];;实验室lsp;;标记线/多段线(vl load com)(defun C:LAB(/acsp ang deriv dist dist1 dist2 ent mpt obj para pickpt txt txtpt)(setq acsp(vla get block(vla get activelayout(vla get activedocument(vlax get acad object)))(而(setq ent(entsel“\n选择线/pline:”)(setq obj(vlax ename->vla object(car ent))pickpt(vlax curve getclosestpointto obj(cadr ent))para(vlax curve getparamatpoint obj pickpt)mpt(vlax curve getpointatparam obj(+0.5(fix para)))txtpt(vlax-3d-point mpt)deriv(vlax curve getfirstderiv obj(vlax curve getparamatpoint obj pickpt))(if(zerop(cadr deriv))(setq ang 0)(setq ang((/pi 2)(atan(/(car deriv)(cadr deriv)))))(if(eq“AcDbLine”(vla get objectname obj))(setq dist(vla get length obj)(progn(setq dist1(vlax curve getdistatparam obj(fix para))dist2(vlax curve getdistatparam obj(1+(fix para)))dist(abs(-dist2 dist1 k)а))(setq txt(vla addtext acsp(rtos dist 3 2)txtpt 15.0));
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:19 , Processed in 0.627070 second(s), 68 queries .

© 2020-2025 乐筑天下

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