乐筑天下

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

[编程交流] 尺寸线lisp!!帮助

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 06:11:00 | 显示全部楼层 |阅读模式
我试图完成这个Lisp程序,但我有一个小问题的规模。对于任何小刻度,文本大小都是相同的。我不知道问题出在哪里。有人能帮我吗!
这是我的密码
 
  1. ;;------------------------------------ LINEDIM.LSP ----------------------------------;;
  2. (defun C:LINEDIM(/ *error* acsp adoc ang curve deriv en mid mp ppt1 ppt2 prex sset txh txt txt1 txtpt1 scl ht)
  3. (command "layer" "m" "diast" "")
  4. (setq scl(/ (getreal  "\n GIVE SCALE (100,200,500,etc) : ") 100))
  5. (setq ht(* 0.175 scl))
  6. (command "style" "diast" "wgsimpl.shx" "" "" "" "" "")
  7.    (defun *error* (msg)
  8.      (vla-endundomark (vla-get-activedocument
  9.              (vlax-get-acad-object))
  10.       )
  11.    (cond ((or (not msg)
  12.        (member msg '("console break" "Function cancelled" "quit / exit abort"))
  13.        )
  14.    )
  15.   ((princ (strcat "\nError: " msg)))
  16.   )
  17.    (princ)
  18.    )
  19. (setq adoc (vla-get-activedocument
  20.              (vlax-get-acad-object))
  21.      acsp (vla-get-block(vla-get-activelayout adoc)))
  22. (vla-startundomark adoc )
  23. (setq txh (getvar "dimtxt")
  24.      
  25.      prex (getvar "dimdec")
  26.      )
  27. (while (not sset)
  28.    (setq sset (ssget '((0 . "*LINE")))
  29.   
  30.   )
  31. )
  32. (while (setq en (ssname sset 0))
  33. (setq curve (vlax-ename->vla-object en))
  34. (setq txt (if (= (getvar "measurement") 0)
  35.       
  36.       (rtos (vla-get-length curve) 2 2)
  37.       
  38.       (rtos (vla-get-length curve) 2 prex))
  39. )
  40. (setq mid (/ (abs (- (vlax-curve-getendparam curve)
  41.                           (vlax-curve-getstartparam curve))) 2.)
  42. mp (vlax-curve-getpointatparam curve mid)
  43. deriv  (vlax-curve-getfirstderiv
  44.          curve
  45.          (vlax-curve-getparamatpoint curve mp))
  46. )
  47. (if (zerop (cadr deriv))
  48.    (setq ang 0)
  49.    (setq ang (- (/ pi 2) (atan (/ (car deriv) (cadr deriv)))))
  50.    )
  51.    (if (< (/ pi 2) ang (* pi 1.5))
  52.    (setq ang (+ pi ang))
  53.    )
  54. ;;;  (setq ppt1 (polar mp (+ ang (/ pi 2)) (* txh 0.5))
  55. ;;;        )
  56. (setq ppt1 (polar mp (+ ang (/ pi 2)) 0.15)
  57. )
  58. (setq txtpt1  (vlax-3d-point (trans ppt1 1 0)))
  59. ;;;  (setq txt1 (vla-addtext acsp txt txtpt1 txh))
  60. (setq txt1 (vla-addtext acsp (strcat (strcat txt )) txtpt1 txh))
  61. (vla-put-alignment txt1 acalignmentbottomcenter)
  62. (vla-put-textalignmentpoint txt1 txtpt1)
  63. (vla-put-insertionpoint txt1 (vla-get-textalignmentpoint txt1))
  64. (vla-put-rotation txt1 ang)
  65. (ssdel en sset)
  66. )
  67. (*error* nil)
  68. (princ)
  69. )
  70. (princ)
  71. (or (vl-load-com)
  72.    (princ))
  73. ;;------------------------------------ code end ----------------------------------;;
回复

使用道具 举报

1

主题

80

帖子

79

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:17:56 | 显示全部楼层
 
这不是“你的”代码。通常,包括原始作者和代码来源的位置是合适的。
 
几周前你不是要求这样的东西吗?如果我没记错的话,答案就在那条线索里。
 
试着用LISP展示一下你会做什么,我会非常乐意帮你。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 06:28:56 | 显示全部楼层
 
它是两个lisp代码的混合。我没有说这是我的密码。我认为fixo或frixo是一个lisp的作者,我不知道另一个。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 06:36:41 | 显示全部楼层
有什么想法吗?
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 06:40:22 | 显示全部楼层
 
这句话来自你原来的帖子
. 所以你说这是你的密码。
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

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

铜币
243
发表于 2022-7-6 06:50:38 | 显示全部楼层
@OP:清除此行:
(可能您的窗口没有这种字体)并添加以下行:
行下方:
  1. (vla-put-rotation txt1 ang)

 
ht是文本高度,在代码中:
scl=给定量表(100200500等)/100
ht=0.175 x scl
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 06:52:46 | 显示全部楼层
谢谢你的建议,但我需要这两行代码
 
我修改了所有代码,然后写了这个
 
  1. (defun c:linedim(/ scl ht)
  2. (setq scl(/ (getreal  "\n GIVE SCALE (100,200,500,etc) : ") 100))
  3. (setq ht(* 0.175 scl))
  4. (command "style" "diast" "wgsimpl.shx" "" "" "" "" "")
  5. (setq point1 '(0,0,0))
  6. (while point1
  7. (setq point1 (getpoint "Pick the first point :"))
  8. (setq point2 (getpoint "Pick the second point :"))
  9. (setq point3 (getpoint "pick the possition of the text :"))
  10. (setq apost (distance point1 point2))
  11. (setq gon (angle point1 point2))
  12. (setq gon2 (atof (angtos gon 2 2)))
  13. (setq apost2 (rtos apost 2 2))
  14. (command "text" point3 ht gon2 apost2)
  15. )
  16. )

 
但我想改变它。。。。
 
我需要选一条线,在中心线的下面写下距离
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 07:01:45 | 显示全部楼层
有什么想法吗?
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:10:31 | 显示全部楼层
是的,他的话甚至在之前的帖子中被强调,但他仍然否认。但我想我已经向prodromosm指出,他在帖子中不够直率。从他的回答中,我得到的印象是,这对他来说真的意义不大。其他人也指出了类似的违规行为和对他的错误态度,但在这些情况下,他似乎也不太在意。显然,他已经达到了“用户”的定义。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:13:30 | 显示全部楼层
 
大量 
选择哪条线?要在下方居中,您可以尝试使用“顶部居中”对齐。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:34 , Processed in 0.401904 second(s), 72 queries .

© 2020-2025 乐筑天下

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