乐筑天下

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

[编程交流] 需要专业帮助

[复制链接]

2

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:04:50 | 显示全部楼层 |阅读模式
伙计们
 
我是autolisp的新手,有人能帮我编辑这段代码吗。我想将输出从多段线更改为样条线,并按50米进行标记。
 
  1. (defun timeini ()
  2. (setq s (getvar "DATE"))
  3. (setq seconds (* 86400.0 (- s (fix s))))
  4. )
  5. (defun timeend ()
  6. (setq s1 (getvar "DATE"))
  7. (setq seconds1 (* 86400.0 (- s1 (fix s1))))
  8. (setq seconds2 (fix (- seconds1 seconds)))
  9. (princ
  10.    (strcat "\nTime : "
  11.        (itoa seconds2)
  12.        " seconds"
  13.    )
  14. )
  15. )
  16. (defun inivar ()
  17. (setq    cmd_ini    (getvar "cmdecho")
  18.    fla_ini    (getvar "flatland")
  19.    osm_ini    (getvar "osmode")
  20.    ort_ini    (getvar "orthomode")
  21.    plt_ini    (getvar "plinetype")
  22.    aup_ini    (getvar "auprec")
  23.    uni_ini    (getvar "unitmode")
  24.    lun_ini    (getvar "lunits")
  25.    diz_ini    (getvar "dimzin")
  26.    edg_ini    (getvar "edgemode")
  27. )
  28. (setvar "CMDECHO" 0)
  29. (setvar "FLATLAND" 0)
  30. (setvar "OSMODE" 0)
  31. (setvar "ORTHOMODE" 0)
  32. (setvar "PLINETYPE" 2)
  33. (setvar "AUPREC" 0)
  34. (setvar "UNITMODE" 1)
  35. (setvar "LUNITS" 2)
  36. (setvar "DIMZIN" 0)
  37. (setvar "EDGEMODE" 1)
  38. )
  39. (defun recvar ()
  40. (setvar "CMDECHO" cmd_ini)
  41. (setvar "FLATLAND" fla_ini)
  42. (setvar "OSMODE" osm_ini)
  43. (setvar "ORTHOMODE" ort_ini)
  44. (setvar "PLINETYPE" plt_ini)
  45. (setvar "AUPREC" aup_ini)
  46. (setvar "UNITMODE" uni_ini)
  47. (setvar "LUNITS" lun_ini)
  48. (setvar "DIMZIN" diz_ini)
  49. (setvar "EDGEMODE" edg_ini)
  50. )
  51. (defun getlayname ()
  52. (setq contourstest nil)
  53. (setq    layername
  54.     (getstring
  55.       "\nPlease enter the layer name of the contours: "
  56.     )
  57. )
  58. (setq    contourstest
  59.     (ssget    "_x"
  60.        (list (cons -4 "<OR")
  61.              (cons -4 "<AND")
  62.              (cons 0 "lwpolyline")
  63.              (cons 8 layername)
  64.              (cons -4 "AND>")
  65.              (cons -4 "<AND")
  66.              (cons 0 "polyline")
  67.              (cons 8 layername)
  68.              (cons -4 "AND>")
  69.              (cons -4 "<AND")
  70.              (cons 0 "line")
  71.              (cons 8 layername)
  72.              (cons -4 "AND>")
  73.              (cons -4 "<AND")
  74.              (cons 0 "spline")
  75.              (cons 8 layername)
  76.              (cons -4 "AND>")
  77.              (cons -4 "OR>")
  78.        )
  79.     )
  80. )
  81. (while (= contourstest nil)
  82.    (princ "\nNo contours selected...")
  83.    (setq layername
  84.       (getstring
  85.         "\nPlease enter the layer name of the contours: "
  86.       )
  87.    )
  88.    (setq contourstest
  89.       (ssget "_x"
  90.          (list    (cons -4 "<OR")
  91.            (cons -4 "<AND")
  92.            (cons 0 "lwpolyline")
  93.            (cons 8 layername)
  94.            (cons -4 "AND>")
  95.            (cons -4 "<AND")
  96.            (cons 0 "polyline")
  97.            (cons 8 layername)
  98.            (cons -4 "AND>")
  99.            (cons -4 "<AND")
  100.            (cons 0 "line")
  101.            (cons 8 layername)
  102.            (cons -4 "AND>")
  103.            (cons -4 "<AND")
  104.            (cons 0 "spline")
  105.            (cons 8 layername)
  106.            (cons -4 "AND>")
  107.            (cons -4 "OR>")
  108.          )
  109.       )
  110.    )
  111. )
  112. )
  113. (defun activexsupport ()
  114. (vl-load-com)
  115. (setq    *modelspace*
  116.     (vla-get-modelspace
  117.       (vla-get-activedocument (vlax-get-acad-object))
  118.     )
  119. )
  120. )
  121. (defun esttexto    ()
  122. (vl-cmdf "._style" "PMSF-TEXT" "romans" 2.50 0.80 0 "n" "n" "n")
  123. )
  124. (defun getha ()
  125. ;; this entity must be a lwpolyline
  126. (activexsupport)
  127. (setq
  128.    ha (entsel "\nSelect the Horizontal alignment: ")
  129. )
  130. (while (= ha nil)
  131.    (progn
  132.      (princ "\nNothing selected...")
  133.      (setq ha
  134.         (entsel "\nSelect the Horizontal alignment: ")
  135.      )
  136.    )
  137. )
  138. (setq ha-type (cdr (assoc 0 (entget (car ha)))))
  139. (if (not (equal ha-type "LWPOLYLINE"))
  140.    (progn
  141.      (setq ha nil)
  142.      (princ "\n***Horizontal Alignment must be a LWPolyline***")
  143.    )
  144. )
  145. (while (= ha nil)
  146.    (progn
  147.      (princ "\nNothing selected...")
  148.      (setq ha
  149.         (entsel "\nSelect the Horizontal alignment: ")
  150.      )
  151.      (setq ha-type (cdr (assoc 0 (entget (car ha)))))
  152.      (if (not (equal ha-type "LWPOLYLINE"))
  153.    (progn
  154.      (setq ha nil)
  155.      (princ "\n***Horizontal Alignment must be a LWPolyline***")
  156.    )
  157.      )
  158.    )
  159. )
  160. (setq ha-ename (entget (car ha)))
  161. (setq ha-ename (cdr (assoc -1 ha-ename)))
  162. (setq ha-object (vlax-ename->vla-object ha-ename))
  163. (vl-cmdf "._text"
  164.       (vlax-curve-getstartpoint ha-object)
  165.       "0"
  166.       "A"
  167. )
  168. (vl-cmdf "._text"
  169.       (vlax-curve-getendpoint ha-object)
  170.       "0"
  171.       "B"
  172. )
  173. )
  174. (defun getexaggeration ()
  175. (initget 2)
  176. (setq ve (getreal "\nEnter the vertical exaggeration <1>: "))
  177. (if (= ve nil)
  178.    (setq ve 1)
  179. )
  180. )
  181. (defun listptintersect ()
  182. (setq listaxy nil)
  183. (setq hazvalue (caddr (vlax-curve-getStartPoint ha-object)))
  184. (setq curvas contourstest)
  185. (setq ncurvas (sslength curvas))
  186. (setq listaxy nil)
  187. (setq counter 0)
  188. (while (< counter ncurvas)
  189.    (progn
  190.      (setq cnivel-ename (ssname curvas counter))
  191.      (setq cnivel-object (vlax-ename->vla-object cnivel-ename))
  192.      (setq cnivelzvalue
  193.         (caddr (vlax-curve-getStartPoint cnivel-object))
  194.      )
  195.      (setq ha-ENTITY
  196.         (subst (cons 38 cnivelzvalue)
  197.            (assoc 38 (entget (car ha)))
  198.            (entget (car ha))
  199.         )
  200.      )
  201.      (entmod ha-ENTITY)
  202.      (setq intersectpt
  203.         (vlax-variant-value
  204.           (vlax-invoke-method
  205.         ha-object
  206.         "IntersectWith"
  207.         cnivel-object
  208.         acExtendNone
  209.           )
  210.         )
  211.      )
  212.      (setq test nil)
  213.      (setq
  214.    test (vl-catch-all-apply
  215.           'vlax-safearray->list
  216.           (list intersectpt)
  217.         )
  218.      )
  219.      (setq error (vl-catch-all-error-p test))
  220.      (if (/= error t)
  221.    (progn
  222.      (setq intersectpt (vlax-safearray->list intersectpt))
  223.      (setq interlength (length intersectpt))
  224.      (if (> interlength 3)
  225.        (progn
  226.          (setq dividelength (/ interlength 3))
  227.          (setq count 0)
  228.          (while (< count interlength)
  229.        (progn
  230.          (setq    newpt (list (nth count intersectpt)
  231.                    (nth (+ count 1) intersectpt)
  232.                    (nth (+ count 2) intersectpt)
  233.                  )
  234.          )
  235.          (setq x (vlax-curve-getdistatPoint ha-ename newpt))
  236.          (setq z (caddr intersectpt))
  237.          (setq xy (list x (* z ve)))
  238.          (setq
  239.            listaxy (append listaxy (list xy))
  240.          )
  241.          (setq count (+ count 3))
  242.        )
  243.          )
  244.        )
  245.        (progn
  246.          (setq x (vlax-curve-getdistatPoint ha-ename intersectpt))
  247.          (setq z (caddr intersectpt))
  248.          (setq xy (list x (* z ve)))
  249.          (setq
  250.        listaxy    (append listaxy (list xy))
  251.          )
  252.        )
  253.      )
  254.      (setq    ha-ENTITY
  255.         (subst    (cons 38 hazvalue)
  256.            (assoc 38 (entget (car ha)))
  257.            (entget (car ha))
  258.         )
  259.      )
  260.      (entmod ha-ENTITY)
  261.    )
  262.      )
  263.      (setq counter (1+ counter))
  264.    )
  265. )
  266. (setq    listaxy
  267.     (vl-sort listaxy
  268.          (function (lambda (e1 e2)
  269.                  (< (car e1) (car e2))
  270.                )
  271.          )
  272.     )
  273. )
  274. (setq    startdist (vlax-curve-getdistatPoint
  275.            ha-ename
  276.            (vlax-curve-getstartpoint ha-ename)
  277.          )
  278.    enddist      (vlax-curve-getdistatPoint
  279.            ha-ename
  280.            (vlax-curve-getendpoint ha-ename)
  281.          )
  282. )
  283. (setq    pt1 (car (car listaxy))
  284.    pt2 (car (last listaxy))
  285. )
  286. (if (/= startdist pt1)
  287.    (progn
  288.      (setq x startdist)
  289.      (setq y (+ (* (/ (- (cadr (car listaxy)) (cadr (cadr listaxy)))
  290.               (- (car (cadr listaxy)) (car (car listaxy)))
  291.            )
  292.            (- (car (car listaxy)) startdist)
  293.         )
  294.         (cadr (car listaxy))
  295.          )
  296.      )
  297.      (setq xy (list x y))
  298.      (setq
  299.    listaxy    (append listaxy (list xy))
  300.      )
  301.      (setq listaxy
  302.         (vl-sort listaxy
  303.              (function    (lambda    (e1 e2)
  304.                  (< (car e1) (car e2))
  305.                )
  306.              )
  307.         )
  308.      )
  309.    )
  310. )
  311. (if (/= enddist pt1)
  312.    (progn
  313.      (setq pos (1- (length listaxy)))
  314.      (setq x enddist)
  315.      (setq y
  316.         (+
  317.           (*
  318.         (/ (- (cadr (nth pos listaxy))
  319.               (cadr (nth (1- pos) listaxy))
  320.            )
  321.            (- (car (nth pos listaxy)) (car (nth (1- pos) listaxy)))
  322.         )
  323.         (- enddist (car (nth pos listaxy)))
  324.           )
  325.           (cadr (nth pos listaxy))
  326.         )
  327.      )
  328.      (setq xy (list x y))
  329.      (setq
  330.    listaxy    (append listaxy (list xy))
  331.      )
  332.      (setq listaxy
  333.         (vl-sort listaxy
  334.              (function    (lambda    (e1 e2)
  335.                  (< (car e1) (car e2))
  336.                )
  337.              )
  338.         )
  339.      )
  340.    )
  341. )
  342. )
  343. (defun createprofile ()
  344. (setq variante-listaxy (apply 'append listaxy))
  345. (setq    arraySpace
  346.     (vlax-make-safearray
  347.       vlax-vbdouble
  348.       (cons 0
  349.         (- (length variante-listaxy) 1)
  350.       )
  351.     )
  352. )
  353. (setq    variante-listaxy
  354.     (vlax-safearray-fill arraySpace variante-listaxy)
  355. )
  356. (vlax-make-variant variante-listaxy)
  357. (setq spline (vla-addLightweightPolyline
  358.        *ModelSpace*
  359.        variante-listaxy
  360.          )
  361. )
  362. (vl-cmdf "._text"
  363.       (vlax-curve-getstartpoint spline)
  364.       "0"
  365.       "A"
  366. )
  367. (vl-cmdf "._text"
  368.       (vlax-curve-getendpoint spline)
  369.       "0"
  370.       "B"
  371. )
  372. )
  373. (defun annotate    ()
  374. (setq    xini (car (vlax-curve-getstartpoint pline))
  375.    xend (car (vlax-curve-getendpoint pline))
  376.    y    (*    (fix
  377.          (/ (cadr (car    (vl-sort listaxy
  378.                     (function (lambda (e1 e2)
  379.                             (< (cadr e1) (cadr e2))
  380.                           )
  381.                     )
  382.                )
  383.               )
  384.             )
  385.             ve
  386.          )
  387.        )
  388.        ve
  389.         )
  390. )
  391. ;;end setq
  392. (if (< y 0)
  393.    (setq y (- y (* 1 ve)))
  394. )
  395. (setq var-xyini (apply 'append (list (list xini y 0))))
  396. (setq var-xyend (apply 'append (list (list xend y 0))))
  397. (createline)
  398. (setq yref (strcat "REFERENCE: " (rtos (/ y ve) 2 2)))
  399. (setq ptloc (list (- xini 30.0) y))
  400. (vl-cmdf "._text" ptloc "0" yref)
  401. (setq lengthlistaxy (length listaxy))
  402. (setq count 0)
  403. (while (< count lengthlistaxy)
  404.    (progn
  405.      (setq var-xyini (apply 'append
  406.                 (list (list (car (nth count listaxy))
  407.                     (cadr (nth count listaxy))
  408.                     0
  409.                   )
  410.                 )
  411.              )
  412.      )
  413.      (setq
  414.    var-xyend (apply 'append
  415.             (list (list (car (nth count listaxy)) y 0))
  416.          )
  417.      )
  418.      (createline)
  419.      (setq ytext (rtos (/ (cadr (nth count listaxy)) ve) 2 2))
  420.      (setq xpt (car (nth count listaxy)))
  421.      (setq xtext (rtos xpt 2 2));;CB 11/24/09
  422.      (setq ptloc (list xpt (- y 10.0)))
  423.      (setq ptloc2 (list xpt (- y 30.0)));;CB 11/24/09
  424.      (vl-cmdf "._text" ptloc "90" ytext)
  425.      (vl-cmdf "._text" ptloc2 "90" xtext);;CB 11/24/09
  426.      (setq count (1+ count))
  427.    )
  428. )
  429. )
  430. (defun createline ()
  431. (setq    arraySpace
  432.     (vlax-make-safearray
  433.       vlax-vbdouble
  434.       (cons 0
  435.         (- (length var-xyini) 1)
  436.       )
  437.     )
  438. )
  439. (setq    var-xyini
  440.     (vlax-safearray-fill arraySpace var-xyini)
  441. )
  442. (vlax-make-variant var-xyini)
  443. (setq    arraySpace
  444.     (vlax-make-safearray
  445.       vlax-vbdouble
  446.       (cons 0
  447.         (- (length var-xyend) 1)
  448.       )
  449.     )
  450. )
  451. (setq    var-xyend
  452.     (vlax-safearray-fill arraySpace var-xyend)
  453. )
  454. (vlax-make-variant var-xyend)
  455. (setq    line (vla-addline
  456.           *ModelSpace*
  457.           var-xyini
  458.           var-xyend
  459.         )
  460. )
  461. )
  462. ;;-----------------------------------------------------
  463. ;;print chainage and elevs to drawing CAB 11/20/09
  464. (defun print_table ()
  465. (initget 1)
  466. (setq TabInsPt (getpoint "\nPick upper left table location: "))
  467. (setq Tab_lbl1 "%HAINAGE")
  468. (command "._text" TabInsPt 0.0 Tab_lbl1)
  469. (setq TxtLen (caadr (textbox (entget (entlast)))))
  470. (setq Pt2 (list (+ (car TabInsPt) txtlen (cdr (assoc 40 (entget (entlast))))) (cadr TabInsPt)))
  471. (foreach ch_val listaxy
  472.     (setq sta (rtos (car ch_val) 2 2))
  473.     (command "._text" "" sta)
  474. )
  475. (command "._text" Pt2 0.0 "%LEVATION")
  476. (foreach ch_val listaxy
  477.     (setq elev (rtos (cadr ch_val) 2 2))
  478.     (command "._text" "" elev)
  479. )
  480. )
  481. ;;--------------------------------------------------
  482. (defun c:qp ()
  483. (timeini)
  484. (inivar)
  485. (getlayname)
  486. (esttexto)
  487. (getha)
  488. (getexaggeration)
  489. (listptintersect)
  490. (createprofile)
  491. (annotate)
  492. ;;;(print_table);;11/20/09
  493. (vl-cmdf "._zoom"
  494.       (vlax-curve-getstartpoint pline)
  495.       (vlax-curve-getendpoint pline)
  496. )
  497. (recvar)
  498. (timeend)
  499. (princ)
  500. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:56 , Processed in 0.376121 second(s), 54 queries .

© 2020-2025 乐筑天下

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