明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1159|回复: 6

[提问] 哪位高手可以帮忙修改一下呢 ,增加指定精度的功能

[复制链接]
发表于 2014-12-26 14:03:02 | 显示全部楼层 |阅读模式
本帖最后由 ZZXXQQ 于 2014-12-27 10:32 编辑

以前在网上下载了一个运算器的代码很好用,就不是不能指定小数精度。哪位高手可以帮忙修改一下呢 ,增加指定精度的功能、代码如下呢
  1. ;;;运算器(缺省输入)
  2. ;;;       作者: langjs
  3. ;;;________________________________________________________________
  4. (defun c:js ( / uu txt3 ent)  
  5. (if (/= fuh "+"  fuh "-"  fuh "*" fuh "/"  )(setq fuh "*"  ))
  6. (if (/= mos "a" mos "b")(setq  mos "a" ))
  7. (setq txt1  (getstring (strcat "\n请输入运算符号[加(+)/减(-)/乘(*)/除(/)] <"  fuh ">:"   ) ))
  8. (if (/= txt1 "+"  txt1 "-"  txt1 "*" txt1 "/" txt1 "" )(exit ))
  9. (setq zz  (getstring (strcat "\n请输入模式[单步(A)/连续(B)] <" (strcase mos) ">:"   ) ))
  10. (setq zz (strcase zz T))
  11. (if (/= zz "a"  zz "b" zz "" )(exit ))
  12. ( if (= txt1 "") (setq  txt1 fuh ) (setq   fuh txt1)  )
  13. ( if (= zz "") (setq  zz mos ) (setq  mos zz )  )

  14. (setq uu (strcat txt1 zz))
  15. (cond
  16. ((= uu "+a") (h01 ))
  17. ((= uu "+b") (h02 ))
  18. ((= uu "*a") (h03 ))
  19. ((= uu "*b") (h04 ))
  20. ((= uu "-a") (h05 ))
  21. ((= uu "-b") (h06 ))
  22. ((= uu "/a") (h07 ))
  23. ((= uu "/b") (h08 ))

  24. )        
  25. (princ )
  26. )

  27. (defun h01 ( )
  28. (princ "\n 单步加法运算:"  )
  29. (princ "\n")
  30. (setq ent (car (entsel "\n选择第一个加数:")))
  31.         (setq txt2 (entget ent))
  32.         (setq txt2 (atof (cdr (assoc 1 txt2)) ))
  33.         (princ (rtos txt2)  )
  34. (setq ent (car (entsel "\n选择第二个加数:")))
  35.         (setq txt3 (entget ent))
  36.         (setq txt3 (atof (cdr (assoc 1 txt3)) ))
  37.         (princ (rtos txt3)  )
  38.         (setq sum(+ txt2 txt3 ))
  39.         (princ (strcat "\n两数的和为:" (rtos sum)  ))
  40.         (setq ent (car (entsel "\n选择和数的位置:")))
  41.        (princ "完成"  )
  42.         (setq ent (entget ent))
  43.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  44.       (entmod ent)
  45. (princ)
  46. )

  47. (defun h02 (/ LEN MODELTXT SSTEXT TXTENT)
  48.   (princ "\n 连续加法运算:"  )
  49.   (prompt "\n请选择加数:")
  50.   (setq sstext (ssget '((0 . "text,MTEXT"))))
  51.   (if sstext
  52.     (progn
  53.       (setq sum  0.0 )
  54.       (setq mm  0 )
  55.      (princ "选择的加数:")
  56.       (repeat
  57.         (setq len (sslength sstext)   )
  58.         (setq txtent (ssname sstext (setq len (1- len))))
  59.      
  60.         (setq modeltxt (cdr (assoc 1 (entget txtent))))

  61.        (setq sum (+ sum  (atof modeltxt) ) )
  62.         (setq mm (+ mm 1)   )  
  63.        (princ  (strcat "\n   第" (itoa mm)  "加数:"  ))
  64.        (princ modeltxt)   
  65.       )
  66.     )
  67.   )
  68.        (princ "\n累计的和为:"  )
  69.       (princ (rtos sum ))
  70.        (setq ent (car (entsel "\n选择和数的位置:")))
  71.         (princ "\n完成"  )
  72.          (setq ent (entget ent))
  73.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  74.       (entmod ent)
  75.   (princ)
  76. )


  77. (defun h03 ( )
  78. (princ "\n 单步乘法运算:"  )
  79. (princ "\n")
  80. (setq ent (car (entsel "\n选择第一个因子:")))
  81.         (setq txt2 (entget ent))
  82.         (setq txt2 (atof (cdr (assoc 1 txt2)) ))
  83.         (princ (rtos txt2)  )
  84. (setq ent (car (entsel "\n选择第二个因子:")))
  85.         (setq txt3 (entget ent))
  86.         (setq txt3 (atof (cdr (assoc 1 txt3)) ))
  87.         (princ (rtos txt3)  )
  88.         (setq sum(* txt2 txt3 ))
  89.         (princ (strcat "\n两数的积为:" (rtos sum)  ))
  90.         (setq ent (car (entsel "\n选择积的位置:")))
  91.        (princ "完成"  )
  92.         (setq ent (entget ent))
  93.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  94.       (entmod ent)
  95. (princ)
  96. )

  97. (defun h04 (/ LEN MODELTXT SSTEXT TXTENT)
  98.   (princ "\n 连续乘法运算:"  )
  99.   (prompt "\n请选择因子:")
  100.   (setq sstext (ssget '((0 . "text,MTEXT"))))
  101.   (if sstext
  102.     (progn
  103.       (setq sum  1 )
  104.       (setq mm  0 )
  105.      (princ "选择的因子:")
  106.       (repeat
  107.         (setq len (sslength sstext)   )
  108.         (setq txtent (ssname sstext (setq len (1- len))))
  109.      
  110.         (setq modeltxt (cdr (assoc 1 (entget txtent))))

  111.        (setq sum (* sum  (atof modeltxt) ) )
  112.         (setq mm (+ mm 1)   )  
  113.        (princ  (strcat "\n  第" (itoa mm)  "因子:"  ))
  114.        (princ modeltxt)   
  115.       )
  116.     )
  117.   )
  118.        (princ "\n累计的积为:"  )
  119.       (princ (rtos sum ))
  120.        (setq ent (car (entsel "\n选择积的位置:")))
  121.         (princ "\n完成"  )
  122.          (setq ent (entget ent))
  123.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  124.       (entmod ent)
  125.   (princ)
  126. )

  127. (defun h05 ( )
  128. (princ "\n 单步减法运算:"  )
  129. (princ "\n")
  130. (setq ent (car (entsel "\n选择被减数:")))
  131.         (setq txt2 (entget ent))
  132.         (setq txt2 (atof (cdr (assoc 1 txt2)) ))
  133.         (princ (rtos txt2)  )
  134. (setq ent (car (entsel "\n选择减数:")))
  135.         (setq txt3 (entget ent))
  136.         (setq txt3 (atof (cdr (assoc 1 txt3)) ))
  137.         (princ (rtos txt3)  )
  138.         (setq sum(- txt2 txt3 ))
  139.         (princ (strcat "\n两数的差为:" (rtos sum)  ))
  140.         (setq ent (car (entsel "\n选择差数的位置:")))
  141.        (princ "完成"  )
  142.         (setq ent (entget ent))
  143.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  144.       (entmod ent)
  145. (princ)
  146. )

  147. (defun h06 (/ LEN MODELTXT SSTEXT TXTENT txt2 )
  148.   (princ "\n 连续减法运算:"  )
  149. (setq ent (car (entsel "\n选择被减数:")))
  150.         (setq txt2 (entget ent))
  151.         (setq txt2 (atof (cdr (assoc 1 txt2)) ))
  152.         (princ (rtos txt2)  )
  153.   (setq sstext (ssget '((0 . "text,MTEXT"))))
  154.   (if sstext
  155.     (progn
  156.       (setq sum  0.0 )
  157.       (setq mm  0 )
  158.      (princ "选择减数:")
  159.       (repeat
  160.         (setq len (sslength sstext)   )
  161.         (setq txtent (ssname sstext (setq len (1- len))))
  162.      
  163.         (setq modeltxt (cdr (assoc 1 (entget txtent))))

  164.        (setq sum (- sum  (atof modeltxt) ) )
  165.         (setq mm (+ mm 1)   )  
  166.        (princ  (strcat "\n   第" (itoa  mm )  "减数:"  ))
  167.        (princ modeltxt)   
  168.       )
  169.     )
  170.   )
  171.        (princ "\n累计的差为:"  )

  172. (setq sum (+ txt2 sum ) )
  173.       (princ (rtos  sum  ))
  174.        (setq ent (car (entsel "\n选择差的位置:")))
  175.         (princ "\n完成"  )
  176.          (setq ent (entget ent))
  177.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  178.       (entmod ent)
  179.   (princ)
  180. )


  181. (defun h07 ( )
  182. (princ "\n 单步除法运算:"  )
  183. (princ "\n")
  184. (setq ent (car (entsel "\n选择被除数:")))
  185.         (setq txt2 (entget ent))
  186.         (setq txt2 (atof (cdr (assoc 1 txt2)) ))
  187.         (princ (rtos txt2)  )
  188. (setq ent (car (entsel "\n选择除数:")))
  189.         (setq txt3 (entget ent))
  190.         (setq txt3 (atof (cdr (assoc 1 txt3)) ))
  191.         (princ (rtos txt3)  )
  192.         (setq sum(/ txt2 txt3 ))
  193.         (princ (strcat "\n两数的商为:" (rtos sum)  ))
  194.         (setq ent (car (entsel "\n选择商数的位置:")))
  195.        (princ "完成"  )
  196.         (setq ent (entget ent))
  197.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  198.       (entmod ent)
  199. (princ)
  200. )

  201. (defun h08(/ LEN MODELTXT SSTEXT TXTENT txt2 )
  202.   (princ "\n 连续除法运算:"  )
  203. (setq ent (car (entsel "\n选择被除数:")))
  204.         (setq txt2 (entget ent))
  205.         (setq txt2 (atof (cdr (assoc 1 txt2)) ))
  206.         (princ (rtos txt2)  )
  207.   (setq sstext (ssget '((0 . "text,MTEXT"))))
  208. (if sstext
  209.     (progn
  210.       (setq sum  1 )
  211.       (setq mm  0 )
  212.      (princ "选择的除数:")
  213.       (repeat
  214.         (setq len (sslength sstext)   )
  215.         (setq txtent (ssname sstext (setq len (1- len))))
  216.      
  217.         (setq modeltxt (cdr (assoc 1 (entget txtent))))

  218.        (setq sum (* sum  (atof modeltxt) ) )
  219.         (setq mm (+ mm 1)   )  
  220.        (princ  (strcat "\n  第" (itoa mm)  "除数:"  ))
  221.        (princ modeltxt)  
  222.       )
  223.     )
  224.   )
  225.        (princ "\n累计的商为:"  )

  226. (setq sum (/ txt2 sum ) )
  227.       (princ (rtos  sum  ))
  228.        (setq ent (car (entsel "\n选择商的位置:")))
  229.         (princ "\n完成"  )
  230.          (setq ent (entget ent))
  231.          (setq ent  (subst (cons 1 (rtos sum  2 2) ) (assoc 1 ent) ent) )
  232.       (entmod ent)
  233.   (princ)
  234. )






  235. ;;;同变刷,将文本数字或者尺寸数值内容刷成源数值加上或减去同一个数值(缺省输入)
  236. ;;;________________________________________________________________
  237. (defun c:tb ( / uu txt3 ent)  
  238. (if (= chanshu001 nil )(setq chanshu001 -500.0  ))
  239. (if (>= chanshu001 0.0 )(setq uu "+") (setq uu "")  )
  240. (setq txt3 (atof (getstring (strcat "\n 同变刷:输入变化的值 <" uu (rtos chanshu001) ">:"   ) )))
  241. (cond
  242. ((null txt3) (setq chanshu001 chanshu001))
  243. ((= txt3 0.0 ) (setq chanshu001 chanshu001))
  244. (t (setq chanshu001 txt3)))        

  245.     (while t
  246.         (setq ent (car (entsel "\n选择目标文字或尺寸:")))
  247.         (setq ent (entget ent))
  248.        (cond
  249.        ((= (cdr (assoc 1 ent)) "<>{}{}")    (setq txt2  (cdr (assoc 42 ent))) )
  250.        ((= (cdr (assoc 1 ent)) "" )    (setq txt2  (cdr (assoc 42 ent)))    )
  251.        (t     (setq txt2  (atof (cdr (assoc 1 ent)))))
  252.        )     

  253.         (if (>= chanshu001 0.0 )
  254.         (setq ent  (subst (cons 1 (rtos  (+ txt2  (abs chanshu001)) 2 1) ) (assoc 1 ent) ent) )
  255.         )  
  256.         (if (< chanshu001 0.0 )
  257.         (setq ent  (subst (cons 1 (rtos  (- txt2  (abs chanshu001)) 2 1 ) ) (assoc 1 ent) ent) )
  258.         )  
  259.         (entmod ent)
  260.         )
  261. )




  262. ;;;__________________________________________
  263. ;;; 相同刷,将文字或者尺寸内容改成源内容
  264. ;;;__________________________________________
  265. (defun c:xt (/ LEN MODELTXT SSTEXT TXTENT)
  266.   (prompt "\n 相同刷:请选择样本文字:")
  267.   (setq sstext (ssget '((0 . "text,MTEXT"))))
  268.   (if sstext
  269.     (progn
  270.       (setq modeltxt (cdr (assoc 1 (entget (ssname sstext 0)))))
  271.       (repeat (setq len (sslength sstext))
  272. (setq txtent (ssname sstext (setq len (1- len))))
  273. (entmod
  274.    (subst (cons 1 modeltxt)
  275.    (assoc 1 (entget txtent))
  276.    (entget (ssname sstext len))
  277.    )
  278. )
  279. (entupd txtent)
  280.       )
  281.     )
  282.   )

  283.   (princ)
  284. )


  285. ;;; 加一刷 将文本末尾的数字递增加1
  286. ;;;__________________________________________

  287. (defun c:jy( )
  288. (setq ent (car (entsel "\n 加一刷:选起始文字:")))
  289.         (setq txt1 (entget ent))
  290.         (setq txt1 (cdr (assoc 1 txt1)))


  291. (setq  aa (atoi txt1))

  292. (if (and (> aa 0 ) (= (itoa aa) txt1  )  )  (tj2 )  (tj1 )   )
  293. (princ)
  294. )

  295. (defun tj1( / mm zz  pp txt2 ent kk txt3)
  296. (setq  mm (strlen txt1))
  297. (setq zz mm )
  298. (while  (or (> (atoi (substr txt1 zz )) 0)  (=  (substr txt1 zz zz ) "0" ))  
  299. (setq zz (- zz 1))
  300. )
  301. (setq pp  (substr txt1 (+ zz 1) ))
  302. (setq txt2  (substr txt1 1  zz  ))
  303. (setq kk (atoi pp) )
  304. (while t
  305.   (setq ent (car (entsel "\n选择目标文字:")))
  306. (setq kk (+ kk 1 ))
  307. (setq  txt3 (strcat txt2 (itoa kk)))
  308.       (setq ent (entget ent))
  309.        (setq ent  (subst (cons 1 txt3) (assoc 1 ent) ent)    )
  310.       (entmod ent)
  311. )
  312. (princ)
  313. )


  314. (defun tj2 ( /  txt2 num txt3)
  315. (setq num 0 )
  316. (setq txt2 (atoi txt1))
  317. (while t
  318. (setq num (+ num 1  ))
  319. (setq txt3 ( + txt2 num)  )
  320.         (setq ent (car (entsel "\n选择目标文字或尺寸:")))
  321.         (setq ent (entget ent))
  322.         (setq ent  (subst (cons 1 (itoa txt3) ) (assoc 1 ent) ent) )
  323.         (entmod ent)
  324.         )
  325. (princ)
  326. )



  327. ;;; 线宽刷
  328. ;;;__________________________________________


  329. (princ "\n**工具刷合集,自由软件,作者:国电南自 郎建山。**" )

  330. (defun sz_s()
  331.   (setq wd1 "\n当前匹配属性:" wd0 "不匹配属性:")
  332.   (if (= sz_color 1) (setq wd1 (strcat wd1 " 颜色")) (setq wd0 (strcat wd0 " 颜色")))
  333.   (if (= sz_layer 1) (setq wd1 (strcat wd1 " 图层")) (setq wd0 (strcat wd0 " 图层")))
  334.   (if (= sz_ltype 1) (setq wd1 (strcat wd1 " 线形")) (setq wd0 (strcat wd0 " 线形")))
  335.   (if (= sz_ltsca 1) (setq wd1 (strcat wd1 " 线形比例")) (setq wd0 (strcat wd0 " 线形比例")))
  336.   (if (= sz_asywh 1) (setq wd1 (strcat wd1 " 变宽线形")) (setq wd0 (strcat wd0 " 变宽线形")))
  337.   (if (= wd1 "\n当前匹配属性:") (setq wd1 "\n当前匹配属性:宽度")(setq wd1 (strcat wd1 "。")))
  338.   (if (= wd0 "不匹配属性:") (setq wd0 "") (setq wd0 (strcat wd0 "。")))
  339.   (princ (strcat "\n***" wd1 wd0))
  340.   (initget "1 2 3 4 5")
  341.   (setq setk(getkword "\n改变:颜色1/图层2/线形3/线形比例4/变宽线形5/<确认>:"))
  342.   (cond
  343.     ((= setk "1") (if (= sz_color 1) (setq sz_color 0) (setq sz_color 1)) (sz_s))
  344.     ((= setk "2") (if (= sz_layer 1) (setq sz_layer 0) (setq sz_layer 1)) (sz_s))
  345.     ((= setk "3") (if (= sz_ltype 1) (setq sz_ltype 0) (setq sz_ltype 1)) (sz_s))
  346.     ((= setk "4") (if (= sz_ltsca 1) (setq sz_ltsca 0) (setq sz_ltsca 1)) (sz_s))
  347.     ((= setk "5") (if (= sz_asywh 1) (setq sz_asywh 0) (setq sz_asywh 1)) (sz_s))
  348.     (t nil)
  349.   )
  350. )

  351. (defun sz_b(num enum um / j b0 bj)
  352.   (if (and (assoc num ei) enum)
  353.     (setq ei (subst enum (assoc num ei) ei))
  354.     (if enum
  355.       (setq ei (reverse (cons enum (reverse ei))))
  356.       (if (assoc num ei)
  357.         (progn
  358.           (setq j -1
  359.                 b0 nil
  360.           )
  361.           (repeat (length ei)
  362.             (setq j (1+ j)
  363.                   bj(nth j ei)
  364.             )
  365.             (if (/= bj (assoc num ei))
  366.           (setq b0 (cons bj b0))
  367.           (if um (setq b0 (cons (cons num um) b0)))
  368.             )
  369.           )
  370.       (setq ei (reverse b0))
  371.         )
  372.       )
  373.     )
  374.   )
  375. )

  376. (defun sz_main()
  377.   (setq len (sslength ss1)
  378.     i   -1
  379.     ent0(entget (car ent1))
  380.     e62 (assoc 62 ent0)
  381.     e8  (assoc 8 ent0)
  382.     e6  (assoc 6 ent0)
  383.     e48 (assoc 48 ent0)
  384.     e43 (assoc 43 ent0)
  385.     e90 (cdr (assoc 90 ent0))
  386.   )
  387.   (if (>= e90 3)
  388.     (progn
  389.       (repeat 3 (setq ent0 (subst (cons 11 (cdr (assoc 10 ent0))) (assoc 10 ent0) ent0)))
  390.       (setq ent0 (reverse ent0)
  391.             ent0 (reverse (cons (car ent0) (cdr (member (assoc 11 ent0) ent0))))
  392.         ent0 (subst '(90 . 2) (assoc 90 ent0) ent0)
  393.       )
  394.       (repeat 2 (setq ent0 (subst (cons 10 (cdr (assoc 11 ent0))) (assoc 11 ent0) ent0)))
  395.     )
  396.   )
  397.   (repeat len
  398.     (setq i (1+ i)
  399.       eni (ssname ss1 i)
  400.       ei  (entget eni)
  401.     )
  402.     (cond
  403.       ((= (cdr (assoc 0 ei)) "LWPOLYLINE")
  404.        (sz_lwp)
  405.       )
  406.       ((= (cdr (assoc 0 ei)) "LINE")
  407.        (sz_line)
  408.       )
  409.       ((= (cdr (assoc 0 ei)) "ARC")
  410.        (sz_arc)
  411.       )
  412.       ((= (cdr (assoc 0 ei)) "CIRCLE")
  413.        (sz_circle)
  414.       )
  415.       (t nil)
  416.     )
  417.   )
  418. )

  419. (defun sz_lwp()
  420.   (if (= sz_color 1) (sz_b 62 e62 256))
  421.   (if (= sz_layer 1) (setq ei (subst e8 (assoc 8 ei) ei)))
  422.   (if (= sz_ltype 1) (sz_b 6 e6 "BYLAYER"))
  423.   (if (= sz_ltsca 1) (sz_b 48 e48 1.0))
  424.   (if (assoc 43 ei)
  425.     (setq ei (subst e43 (assoc 43 ei) ei))
  426.     (if (= sz_asywh 1)
  427.       (setq ei (reverse (cons e43 (reverse ei))))
  428.     )
  429.   )
  430.   (entmod ei)
  431.   (entupd eni)
  432. )

  433. (defun sz_line(/ ei62 ei8 ei6 ei48 ei10 ei11)
  434.   (setq ei62 (assoc 62 ei)
  435.         ei8  (assoc 8 ei)
  436.         ei6  (assoc 6 ei)
  437.         ei48 (assoc 48 ei)
  438.         ei10 (assoc 10 ei)
  439.         ei11 (assoc 11 ei)
  440.   )
  441.   (setq ei (subst (assoc 5 ei) (assoc 5 ent0) ent0)
  442.     ei (subst (cons 70 0) (assoc 70 ei) ei)
  443.   )
  444.   (if (= sz_color 0) (sz_b 62 ei62 256))
  445.   (if (= sz_layer 0) (setq ei (subst ei8 (assoc 8 ei) ei)))
  446.   (if (= sz_ltype 0) (sz_b 6 ei6 "BYLAYER"))
  447.   (if (= sz_ltsca 0) (sz_b 48 ei48 1.0))
  448.   (setq ei (subst (cons 12 (cdr ei10)) (assoc 10 ei) ei)
  449.     ei (subst (cons 10 (cdr ei11)) (assoc 10 ei) ei)
  450.     ei (subst ei10 (assoc 12 ei) ei)
  451.   )
  452.   (repeat 2 (setq ei (subst (cons 42 0.0) (assoc 42 ei) ei)))
  453.   (entdel eni)
  454.   (entmake ei)
  455. )

  456. (defun sz_circle(/ ei62 ei8 ei6 ei48 ei10 ei40 pt1 pt2)
  457.   (setq ei62 (assoc 62 ei)
  458.         ei8  (assoc 8 ei)
  459.         ei6  (assoc 6 ei)
  460.         ei48 (assoc 48 ei)
  461.         ei10 (cdr (assoc 10 ei))
  462.         ei40 (cdr (assoc 40 ei))
  463.     pt1  (cons (- (car ei10) ei40) (cdr ei10))
  464.     pt2  (cons (+ (car ei10) ei40) (cdr ei10))
  465.   )
  466.   (setq ei (subst (assoc 5 ei) (assoc 5 ent0) ent0)
  467.     ei (subst (cons 70 1) (assoc 70 ei) ei)
  468.   )
  469.   (if (= sz_color 0) (sz_b 62 ei62 256))
  470.   (if (= sz_layer 0) (setq ei (subst ei8 (assoc 8 ei) ei)))
  471.   (if (= sz_ltype 0) (sz_b 6 ei6 "BYLAYER"))
  472.   (if (= sz_ltsca 0) (sz_b 48 ei48 1.0))
  473.   (setq ei (subst (cons 12 pt1) (assoc 10 ei) ei)
  474.     ei (subst (cons 10 pt2) (assoc 10 ei) ei)
  475.     ei (subst (cons 10 pt1) (assoc 12 ei) ei)
  476.   )
  477.   (repeat 2 (setq ei (subst (cons 42 1.0) (assoc 42 ei) ei)))
  478.   (entdel eni)
  479.   (entmake ei)
  480. )

  481. (defun sz_arc(/ ei62 ei8 ei6 ei10 ei48 ei40 ei50 ei51 pt1 pt2 lpt alf e42)
  482.   (setq ei62 (assoc 62 ei)
  483.         ei8  (assoc 8 ei)
  484.         ei6  (assoc 6 ei)
  485.         ei48 (assoc 48 ei)
  486.         ei10 (cdr (assoc 10 ei))
  487.         ei40 (cdr (assoc 40 ei))
  488.         ei50 (cdr (assoc 50 ei))
  489.         ei51 (cdr (assoc 51 ei))
  490.     pt1  (list (+ (car ei10) (* ei40 (cos ei50)))
  491.            (+ (cadr ei10) (* ei40 (sin ei50))) (caddr ei10))
  492.     pt2  (list (+ (car ei10) (* ei40 (cos ei51)))
  493.            (+ (cadr ei10) (* ei40 (sin ei51))) (caddr ei10))
  494.     lpt  (/ (distance pt1 pt2) 2.0)
  495.     alf  (- ei51 ei50)
  496.   )
  497.   (setq ei (subst (assoc 5 ei) (assoc 5 ent0) ent0)
  498.     ei (subst (cons 70 0) (assoc 70 ei) ei)
  499.   )
  500.   (if (= sz_color 0) (sz_b 62 ei62 256))
  501.   (if (= sz_layer 0) (setq ei (subst ei8 (assoc 8 ei) ei)))
  502.   (if (= sz_ltype 0) (sz_b 6 ei6 "BYLAYER"))
  503.   (if (= sz_ltsca 0) (sz_b 48 ei48 1.0))
  504.   (setq ei (subst (cons 12 pt1) (assoc 10 ei) ei)
  505.     ei (subst (cons 10 pt2) (assoc 10 ei) ei)
  506.     ei (subst (cons 10 pt1) (assoc 12 ei) ei)
  507.   )
  508.   (if (or (> alf pi) (and (< alf 0) (> alf (- pi))))
  509.     (setq e42 (/ (+ ei40 (sqrt (- (* ei40 ei40) (* lpt lpt)))) lpt)
  510.       ei  (subst (cons 42 e42) (assoc 42 ei) ei)
  511.     )
  512.     (setq e42 (/ (- ei40 (sqrt (- (* ei40 ei40) (* lpt lpt)))) lpt)
  513.       ei  (subst (cons 42 e42) (assoc 42 ei) ei)
  514.     )
  515.   )
  516.   (entdel eni)
  517.   (entmake ei)
  518. )

  519. (defun sz_ss()
  520.   (setq wd1 "\n当前匹配属性:" wd0 "不匹配属性:")
  521.   (if (= sz_color 1) (setq wd1 (strcat wd1 " 颜色")) (setq wd0 (strcat wd0 " 颜色")))
  522.   (if (= sz_layer 1) (setq wd1 (strcat wd1 " 图层")) (setq wd0 (strcat wd0 " 图层")))
  523.   (if (= sz_ltype 1) (setq wd1 (strcat wd1 " 线形")) (setq wd0 (strcat wd0 " 线形")))
  524.   (if (= sz_ltsca 1) (setq wd1 (strcat wd1 " 线形比例")) (setq wd0 (strcat wd0 " 线形比例")))
  525.   (if (= sz_asywh 1) (setq wd1 (strcat wd1 " 变宽线形")) (setq wd0 (strcat wd0 " 变宽线形")))
  526.   (if (= wd1 "\n当前匹配属性:") (setq wd1 "\n当前匹配属性:宽度")(setq wd1 (strcat wd1 "。")))
  527.   (if (= wd0 "不匹配属性:") (setq wd0 "") (setq wd0 (strcat wd0 "。")))
  528.   (princ (strcat "\n***" wd1 wd0))
  529.   (initget "Setting  ")
  530.   (setq ent1(entsel "\n设置匹配属性S/<拾取参考宽度多义线:>"))
  531.   (if (= ent1 "Setting")
  532.     (progn
  533.       (sz_s)
  534.       (sz_ss)
  535.     )
  536.     (progn
  537.       (if ent1
  538.         (if (/= (type ent1) 'STR)
  539.           (progn
  540.             (if (/= (cdr (assoc 0 (entget (car ent1)))) "LWPOLYLINE") (sz_ss))
  541.             (if (not (assoc 43 (entget (car ent1)))) (sz_ss))
  542.           )
  543.         )
  544.         (sz_ss)
  545.       )
  546.     )
  547.   )
  548. )

  549. (defun c:xk(/ ent1 ent0 wd0 wd1 setk ss1 len i e62 e8 e6 e48 e90 e43 ei eni)
  550.   (command "color" (getvar "cecolor"))
  551.   (if (not sz_color) (setq sz_color 1))
  552.   (if (not sz_layer) (setq sz_layer 1))
  553.   (if (not sz_ltype) (setq sz_ltype 1))
  554.   (if (not sz_ltsca) (setq sz_ltsca 1))
  555.   (if (not sz_asywh) (setq sz_asywh 0))
  556.   (sz_ss)
  557.   (if (/= (type ent1) 'STR)
  558.     (progn
  559.       (princ "\n拾取欲变宽度的线实体:")
  560.       (setq ss1 (ssget '((-4 . "<OR")(0 . "CIRCLE")(0 . "LINE")(0 . "ARC")(0 . "LWPOLYLINE")(-4 . "OR>"))))   
  561.       (if ss1
  562.         (sz_main)
  563.       )
  564.     )
  565.   )
  566.   (princ)
  567. )

  568. (defun c:jg()
  569. (alert "  《工具刷合集》\n    版本:V1.1 \n 自由软件,欢迎转载\n作者:国电南自 郎建山\n")
  570. )
 楼主| 发表于 2014-12-26 14:04:32 | 显示全部楼层
重新发了一次 ,刚刚那个操作失误
发表于 2014-12-26 16:26:48 | 显示全部楼层
那么长,问作者
 楼主| 发表于 2014-12-27 11:30:26 | 显示全部楼层
觉得 后面好长的是别的命令了
发表于 2014-12-27 12:34:00 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-12-27 13:02 编辑
  1. (defun c:js (/ uu txt3 ent)
  2. (if (not(wcmatch fuh "+,-,*,/")) (setq fuh "*"))
  3. (if (not(wcmatch mos "a,b")) (setq mos "a"))
  4. (setq txt1 (getstring (strcat "\n请输入运算符号[加(+)/减(-)/乘(*)/除(/)] <" fuh ">:")))
  5. (if (apply 'and (mapcar '(lambda (x) (/= txt1 x)) '("+" "-" "*" "/" ""))) (exit))
  6. (if (= txt1 "") (setq txt1 fuh) (setq fuh txt1))
  7. (setq zz (getstring (strcat "\n请输入模式[单步(A)/连续(B)] <" (strcase mos)">:")))
  8. (if (apply 'and (mapcar '(lambda (x) (/= zz x)) '("a" "b" ""))) (exit))
  9. (if (= zz "") (setq zz mos) (setq mos zz))
  10. (setq zz (strcase zz T))
  11. (setq uu (strcat txt1 zz))
  12. (jisuan txt1 zz)
  13. (princ)
  14. )
  15. (defun jisuan (fun ab)
  16.   (setq yslst '(("+" . "加") ("-" . "减") ("*" . "乘") ("/" . "除")))
  17.   (setq tmp (cdr(assoc fun yslst)))
  18.   (setq lx (cdr(assoc ab '(("a" . "单步") ("b" . "连续")))))
  19.   (princ (strcat "\n " lx tmp "法运算: "))
  20.   (if (= ab "a") (progn
  21.     (setq ent (car(entsel (strcat "\n选择第一个" tmp "数: "))))
  22.     (setq txt2 (entget ent))
  23.     (setq txt2 (atof (cdr (assoc 1 txt2))))
  24.     (princ (rtos txt2))
  25.     (setq ent (car(entsel (strcat "\n选择第二个" tmp "数: "))))
  26.     (setq txt3 (entget ent))
  27.     (setq txt3 (atof (cdr (assoc 1 txt3))))
  28.     (princ (rtos txt3))
  29.     (setq sum ((read fun) txt2 txt3))
  30.     (princ (strcat "\n两数的" tmp "法运算为: " (rtos sum 2)))
  31.   ) (progn
  32.     (setq ent (car (entsel "\n选择第一个数: ")))
  33.     (setq sum (atof (cdr (assoc 1 (entget ent))))
  34.     (princ (rtos sum))
  35.     (prompt (strcat "\n请选择" tmp "数: "))
  36.     (if (setq sstext (ssget '((0 . "*TEXT")))) (progn
  37.      (setq mm 0)
  38.      (princ (strcat "选择的" tmp "数: "))
  39.      (repeat (setq len (sslength sstext))
  40.        (setq txtent (ssname sstext (setq len (1- len))))
  41.        (setq modeltxt (cdr (assoc 1 (entget txtent))))
  42.        (setq sum ((read fun) sum (atof modeltxt)))
  43.        (setq mm (1+ mm))
  44.        (princ (strcat "\n   第" (itoa mm) tmp "数:"))
  45.        (princ modeltxt)
  46.      )
  47.    ))
  48.    (princ (strcat "\n计算的结果为:" (rtos sum 2)))
  49.   ))
  50.   (setq ent (car (entsel "\n选择结果的位置: ")))
  51.   (princ "完成")
  52.   (setq ent (entget ent))
  53.   (entmod (subst (cons 1 (rtos sum 2 2)) (assoc 1 ent) ent))
  54. )
发表于 2014-12-27 15:53:35 | 显示全部楼层
到我的网络U盘下载一个ce.lsp试试。
 楼主| 发表于 2014-12-27 18:01:39 | 显示全部楼层
ll_j 发表于 2014-12-27 15:53
到我的网络U盘下载一个ce.lsp试试。

好的 多谢 我去试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 15:42 , Processed in 0.205716 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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