乐筑天下

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

[编程交流] 带文字的自定义多段线

[复制链接]

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:20:46 | 显示全部楼层
谢谢FIXO。
很抱歉,我表现得很急切。
正如你们在一开始所看到的,我们正在努力学习。
祝你一切顺利。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 09:22:51 | 显示全部楼层
很乐意帮忙
干杯
回复

使用道具 举报

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:26:13 | 显示全部楼层
Fixo先生,
我试着完成你的Lisp程序。
我失败了。
看来学习编程语言我需要一些时间和对系统变量的完美理解。
如果你能完成(请),我将不胜感激。
真诚地
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 09:31:15 | 显示全部楼层
 
我明天会尽力完成这段代码,不确定我的空闲时间
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 09:32:40 | 显示全部楼层
再试一次
  1. ;; local defuns
  2. (vl-load-com)
  3. (defun run-dialog  (leng /)
  4. (setq fn (strcat (getvar "dwgprefix")
  5.     (getvar "dwgname")
  6.     "waterparams.dcl")
  7. fd (open fn "w"))
  8. (mapcar
  9.    (function
  10.      (lambda (x)
  11. (princ x fd)
  12. (princ "\n" fd)
  13. )
  14.      )
  15.    (list
  16.      "water : dialog {label="Parameters";"
  17.      "fixed_width_font=true;"
  18.      ": edit_box{label="Street";"
  19.      "fixed_width_font=true;"
  20.      "key = "street";}"
  21.      ": edit_box{label="Length";"
  22.      "fixed_width_font=true;"
  23.      (strcat "value=" (rtos leng 2 3) ";")
  24.      "key = "leng";}"
  25.      ": list_box {label="Math";"
  26.      "fixed_width_font=true;"
  27.      "key = "math";"
  28.      "multiple_select = false;"
  29.      "height = 3.6;"
  30.      "allow_accept = true;"
  31.      "}"
  32.      ": list_box {label="Dia.";"
  33.      "fixed_width_font=true;"
  34.      "key = "dia";"
  35.      "multiple_select = false;"
  36.      "height = 3.6;"
  37.      "allow_accept = true;"
  38.      "}"
  39.      "ok_cancel;"
  40.      "}"
  41.      )
  42.    )
  43. (close fd)
  44. (princ)
  45. )
  46. ;; convert radians to degrees
  47. (defun rtd (rad)
  48. (/ (* rad 180) pi)
  49. )
  50. ;; main part
  51. (defun C:PPW  (/ *error* ang cl cr curve dcl_id dia dia_list dia_val
  52. en ent fn fst info leng leng_val lpt lpt1 lpt2 mat math_list
  53. math_val mat_val osm pick pt snd str_val txh txst upt)
  54. (vl-load-com)
  55.   (defun *error*  (msg)
  56.     (if msg(princ msg))
  57.     ;; stop any command
  58.     (while (/= (getvar "cmdactive") 0) (command))
  59.     ;;restore variables
  60.     (if osm
  61.       (setvar "osmode" osm))
  62.     (if cl
  63.       (setvar "clayer" cl))
  64.     (if cr
  65.       (setvar "cecolor" cr))
  66.     (if txst
  67.       (setvar "textstyle" txst))
  68.     (if txh
  69.       (setvar "textsize" txh))
  70.     (command "._undo" "E")
  71. )
  72. (setq osm (getvar "osmode"))
  73. (setq cl (getvar "clayer"))
  74. (setq cr (getvar "cecolor"))
  75. (setq txst (getvar "textstyle"))
  76. (setq txh(getvar "textsize"))
  77. (command "._undo" "BE")
  78. (setvar "osmode" 0)
  79. (setvar "textsize" 50.0)
  80. (while (setq ent (entsel "\nSelect pipe-line (or hit Enter to Exit): "))
  81.    (if
  82.      (member (strcase (cdr (assoc 0 (entget (car ent)))))
  83.       (list "LWPOLYLINE" "SPLINE"))
  84.       (progn
  85. (setq en (car ent))
  86. (setq curve (vlax-ename->vla-object en))
  87. (setq pt (vlax-curve-getclosestpointto en (cadr ent)))
  88. (setq leng (vlax-curve-getdistatparam en (vlax-curve-getendparam en)))
  89. (run-dialog leng )
  90. (if (not (setq dcl_id (load_dialog fn)))
  91.    (exit))
  92. (if (not (new_dialog "water" dcl_id))
  93.    (exit))
  94. (start_list "math")
  95. (mapcar 'add_list
  96.   (mapcar 'vl-princ-to-string
  97.    (setq math_list
  98.    (list "AB" "CD" "EF" "GH"))))
  99. (end_list)
  100. (start_list "dia")
  101. (mapcar 'add_list
  102.   (mapcar 'vl-princ-to-string
  103.    (setq dia_list
  104.    (list 100 200 300 400 500))))
  105. (end_list)
  106. (action_tile
  107.    "accept"
  108.    (strcat "(progn "
  109.     "(setq str_val (get_tile "street"))"
  110.     "(setq leng_val (get_tile "leng"))"
  111.     "(setq math_val (atoi (get_tile "math")))"
  112.     "(setq dia_val (atoi (get_tile "dia")))"
  113.     "(done_dialog 1))")
  114.    )
  115. (action_tile "cancel" "(done_dialog 0)")
  116. (setq pick (start_dialog))
  117. (unload_dialog dcl_id)
  118. (vl-file-delete fn)
  119. (if (and (= 1 pick) str_val leng_val math_val dia_val)
  120.    (progn
  121.         (setq fst (vl-princ-to-string str_val))
  122.         (setq snd (rtos (atof leng_val)2 3))
  123.         (setq mat (vl-princ-to-string (setq mat_val (nth math_val math_list))))
  124.         (setq dia(vl-princ-to-string (setq dia_val (nth dia_val dia_list))))
  125. (setq  ang (angle
  126.      '(0 0 0)
  127.      (trans
  128.        (vlax-curve-getfirstderiv
  129.          curve
  130.          (vlax-curve-getparamatpoint curve pt)
  131.        )
  132.        0 1 t
  133.      )
  134.    )
  135. )
  136. (setq label
  137. (strcat
  138.    "%<[url="file://\\AcObjProp"]\\AcObjProp[/url] Object(%<[url="file://\\_ObjId"]\\_ObjId[/url] "
  139.    (itoa (vla-get-objectid curve))
  140.    ">%).Length [url="file://\\f"]\\f[/url] "%lu2%pr3">%"
  141. )
  142. )
  143. ;;set text rotation angle to more readable:
  144. (if (< (/ pi 2) ang (* pi 1.5))
  145. (setq ang (+ ang pi))
  146. )
  147. (setq upt (polar pt (+ ang (/ pi 2)) (* (getvar "textsize") 1.5)))
  148. (setq lpt (polar pt (- ang (/ pi 2)) (* (getvar "textsize") 1.5)))
  149. (setq lpt1 (polar lpt (+ ang pi) (getvar "textsize")))
  150. (setq lpt2 (polar lpt ang (getvar "textsize")))
  151. (setq ang (rtd ang))
  152. (setvar "cecolor" "bylayer")
  153. (setvar "clayer" "1 Street")
  154. (command "-mtext" "_non" upt "J" "MC" "H" 50.0 "R" ang "w" 0  fst "")      
  155. (setvar "clayer" "2 Length")
  156. (command "-mtext" "_non" pt "J" "MC" "H" 50.0 "R" ang "w" 0  label "")      
  157. (setvar "clayer" "3 Mat")
  158.   (command "-mtext" "_non" lpt1 "J" "MR" "H" 50.0 "R" ang "w" 0  mat "")   
  159. (setvar "clayer" "4 Dia")
  160.      (command "-mtext" "_non" lpt2 "J" "ML" "H" 50.0 "R" ang "w" 0  (strcat "%%c" dia) "")
  161.    )
  162. )
  163.      )
  164.    )
  165.    )
  166.    (*error* nil)
  167. (princ)
  168. )
  169. (princ "\n Start command with PPW")
  170. (prin1)
回复

使用道具 举报

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:37:37 | 显示全部楼层
谢谢。
我克服了这个问题。
我不理解VL-,VLA-。。。。,VlAX-。。。。。,
谢谢你,你是一位真正的大师。
恭敬地
 
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 09:40:25 | 显示全部楼层
嘿,伙计
不要强迫我变红,
我只是一个普通的黑客
不过,不客气,
如果这个例行公事能对你的工作有所帮助,我很高兴
 
~'J'~
回复

使用道具 举报

15

主题

335

帖子

322

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 09:42:49 | 显示全部楼层
也许不完全是你想要的,但可能会有所帮助。
LTFly指令。拉链
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:24 , Processed in 0.419005 second(s), 67 queries .

© 2020-2025 乐筑天下

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