明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 406|回复: 2

[提问] 自己拼凑的代码,运行不了,烦请老师们调整下,谢谢!

[复制链接]
发表于 2020-5-15 17:54 | 显示全部楼层 |阅读模式
5明经币
代码也是咱们论坛上下载的,原作者忘记了,抱歉!我自己组合拼凑了下,搞不定~~~
代码如下:
(defun c:TY(/ e1 e13 e14 e2 e2list en en0 p1 p2 sk_dxf code)

    (setq old_lay (getvar "clayer"))
    (setq vv (getvar "osmode"))
    (setq layer "___S-Dims")
    (COMMAND "clayer" layer)  
    (setvar "osmode" 37)


  (defun sk_dxf(en code)(cdr(assoc code(entget en))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (setq key T)

  (initget "S ")

  (while(and key(= (setq p1

  (getpoint "\n指定第一条尺寸界线原点[样式(S)]:"))

      "S")
(if P1(setq key nil))
(if (command "-DIMSTYLE" "R" "ModelsDrawing-1-100")


    (key T)


  (initget "S ")
     )
       (setq p2(getpoint p1 "\n指定第二条尺寸界线原点:"))  )
    (setq en0(entlast))
    (if(= (getvar "orthomode") 0)
      (progn
      (command "_.DIMALIGNED" p1 p2 pause )      
    (setq en(entlast))
    (if (and en0 en (= (sk_dxf en0 5)(sk_dxf en 5)))
      (princ)  
      (progn
      (setq e1(entget en)
      e2(entget en '("*"))
      e2list(assoc -3 e2)
      e1(subst(cons 70 32)(assoc 70 e1)e1)
      e13(cdr(assoc 13 e1))
      e14(cdr(assoc 14 e1))
      e1(subst(cons 50 (angle e13 e14))(assoc 50 e1)e1)
      e1(reverse(cons '(100 . "AcDbRotatedDimension")(reverse e1))))
      ;(entmake (list(cons 0 "line")(cons 10 e13)(cons 11 e14)))
      (entdel en)
      (if e2list(setq e1(cons e2list e1)))
      (entmake  e1)      
      )
      )
    )
      (command "_.DIMLINEAR" p1 p2 pause )
    )
    )
    (setvar "osmode" vv)
    (setvar "clayer" old_lay)
  (princ))

发表于 2020-5-16 16:52 | 显示全部楼层
你直接说要实现什么功能,否则要看半天
回复

使用道具 举报

发表于 2020-5-16 17:20 | 显示全部楼层
不知道是不是这个意思,反正改了一下,至少程序能跑了

  1. (defun c:TY (/ e1 e13 e14 e2 e2list en en0 p1 p2 sk_dxf code)
  2.   (setq old_lay (getvar "clayer"))
  3.   (setq vv (getvar "osmode"))
  4.   (setq layer "06文字")  ;;;;;;;;;;;这个图层你自己改回去
  5.   (COMMAND "clayer" layer)
  6.   (setvar "osmode" 37)
  7.   (defun sk_dxf (en code) (cdr (assoc code (entget en))))
  8. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  9.   (setq key T)

  10.   (initget "S ")

  11.   (while
  12.     (and key
  13. (IF
  14.    (= (setq p1 (getpoint "\n指定第一条尺寸界线原点[样式(S)]:"))
  15.        "S "
  16.    )
  17.    (if P1
  18.      (setq key nil)
  19.    )
  20.    (PROGN
  21.            (command "-DIMSTYLE" "R" "02标注")  ;;;;;;;;;;;这个图层你自己改回去
  22.      (initget "S ")
  23.      (setq key T)
  24.    )
  25. )
  26.    (setq p2 (getpoint p1 "\n指定第二条尺寸界线原点:"))
  27.     )
  28.      (setq en0 (entlast))
  29.      (if (= (getvar "orthomode") 0)
  30.        (progn
  31.    (command "_.DIMALIGNED" p1 p2 pause)
  32.    (setq en (entlast))
  33.    (if (and en0 en (= (sk_dxf en0 5) (sk_dxf en 5)))
  34.      (princ)
  35.      (progn
  36.        (setq e1    (entget en)
  37.        e2    (entget en '("*"))
  38.        e2list (assoc -3 e2)
  39.        e1    (subst (cons 70 32) (assoc 70 e1) e1)
  40.        e13    (cdr (assoc 13 e1))
  41.        e14    (cdr (assoc 14 e1))
  42.        e1    (subst (cons 50 (angle e13 e14)) (assoc 50 e1) e1)
  43.        e1    (reverse
  44.           (cons '(100 . "AcDbRotatedDimension") (reverse e1))
  45.         )
  46.        )
  47.           ;(entmake (list(cons 0 "line")(cons 10 e13)(cons 11 e14)))
  48.        (entdel en)
  49.        (if e2list
  50.          (setq e1 (cons e2list e1))
  51.        )
  52.        (entmake e1)
  53.      )
  54.    )
  55.        )
  56.        (command "_.DIMLINEAR" p1 p2 pause)
  57.      )
  58.   )
  59.   (setvar "osmode" vv)
  60.   (setvar "clayer" old_lay)
  61.   (princ)
  62. )

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-8 14:07 , Processed in 0.332014 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表