明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3056|回复: 13

石必强大神函数excel数字日期转cad

[复制链接]
发表于 2020-11-16 21:20:10 | 显示全部楼层 |阅读模式
  1. ;【管理员】石必强(1291500406) 2020/11/16 16:56:13
  2. (defun BB-USING-vbs ( str)
  3. (if(or
  4. ScriptControl
  5. (setq ScriptControl (vlax-create-object "{e8540e26-d20e-483f-9fd5-a5a3553a7556}"))
  6. (setq ScriptControl (vlax-create-object "{0e59f1d5-1fbe-11d0-8ff2-00a0d10038bc}"))
  7. )(progn
  8. (vl-catch-all-apply 'vlax-put (list ScriptControl "language" "vbscript"))
  9. (vl-catch-all-apply ' vlax-invoke (list ScriptControl "eval"  str )
  10. ))))

  11. ;【管理员】石必强(1291500406) 2020/11/16 16:56:18
  12. ;(BB-USING-vbs "Year(44024)")
  13. ;(BB-USING-vbs "Month(44024)")
  14. ;(BB-USING-vbs "Day(44024)")
  15. ;星期
  16. ;(BB-USING-vbs "Weekday(44024)")
  17. (setq sz(strcat "(" (getstring "\n请输入数字:")")"))
  18. (setq rq(strcat (rtos (BB-USING-vbs (strcat "Year" sz)) 2 0 ) "年" (rtos (BB-USING-vbs (strcat "Month" sz)) 2 0 )"月"(rtos (BB-USING-vbs (strcat "Day" sz)) 2 0 )"日"
  19.   ) )
  20. (print rq)

 楼主| 发表于 2021-1-28 15:55:31 | 显示全部楼层
收藏 替换字体 好多号函数
  1. ;split 函数的基本功能是用一个短字符串去分割一个长字符串,并返回分割后的数组
  2. ;例如: 用空格切割字符串 (split "i love you" " ") ,返回 ("i" "love" "you")
  3. (defun split (str delim / buff l2)
  4.   (setq str (vl-string->list str)
  5.   delim (vl-string->list delim)
  6.   )
  7.   (while str
  8.     (if (member (car str) delim)
  9.       (setq l2 (cons (vl-list->string (reverse buff)) l2)
  10.       buff nil
  11.       )
  12.       (setq buff (cons (car str) buff))
  13.     )
  14.     (setq str (cdr str))
  15.   )
  16.   (setq l2 (cons (vl-list->string (reverse buff)) l2))
  17.   (reverse l2)
  18. )
  19. ;;;;
  20. (defun StrParse        (String Seperator / Pos1 Pos2 NewStrList)
  21.                 ;|
  22.   Seperator a string (making a list of stings) at a given
  23.   string value
  24.   ie: (StrParse "1,1,0" ",")
  25.   returns: ("1" "1" "0")
  26.   Written when I couldn't find it on the web
  27.   By: Tim Willey 11/15/2004
  28. |;

  29.   (setq Pos2 1)
  30.   (while (setq Pos1 (vl-string-search Seperator String Pos1))
  31.     (if        (= Pos2 1)
  32.       (setq NewStrList (cons (substr String Pos2 Pos1) NewStrList))
  33.       (setq NewStrList
  34.              (cons (substr String Pos2 (- (1+ Pos1) Pos2))
  35.                    NewStrList
  36.              )
  37.       )
  38.     )
  39.     (setq Pos2 (1+ (+ (strlen Seperator) Pos1)))
  40.     (setq Pos1 (+ Pos1 (strlen Seperator)))
  41.   )
  42.   (reverse
  43.     (setq NewStrList (cons (substr String Pos2) NewStrList))
  44.   )
  45. )


  46. ;(StrParse (getenv "ACAD") ";")

  47. ;(vl-string->list (getenv "ACAD"))




  48. ;默认字体
  49. (defun C:tiehuan ( / iChange)
  50.   (EF:Style-DefuntFont "TSSDENG.SHX" "TSSDCHN.SHX")
  51.   (princ)
  52. )
  53. ;清除列表中连续重复元素
  54. ;'( 1 2 3 1 1 nil nil nil 4 4 5 6 nil nil) -> '( 1 2 3 1 nil 4 5 6 nil)
  55. (defun EFist-Fix (lst1 / e lst2 )
  56.   (if lst1
  57.     (progn
  58.       (setq lst2 (list (setq e (car lst1))))
  59.       (while (setq lst1 (cdr lst1))
  60.         (if (not (equal e (car lst1)))
  61.           (setq lst2 (cons (car lst1) lst2))
  62.         )
  63.         (setq e (car lst1))
  64.       )
  65.       (reverse lst2)
  66.     )
  67.   )
  68. )
  69. ;判断字体是否为大字体
  70. (defun EF:Acad-isBigFont (filename / fh BigFont)
  71.   (setq fh (open filename "r"))
  72.   (setq BigFont (substr (read-line fh) 12 7))
  73.   (close fh)
  74.   (if (= (strcase BigFont) "BIGFONT")
  75.     (setq BigFont T)
  76.     (setq BigFont nil)
  77.   )
  78.   BigFont
  79. )
  80. ;字体列表
  81. (defun EF:Acad-getFonts ( /
  82.                           e e1 e2
  83.                           lstPath
  84.                           fonts    ;所有字体列表
  85.                           bigfonts    ;大字体列表
  86.                           efonts    ;普通字体列表
  87.                           wfonts    ;Windows字体
  88.                         )
  89.   (setq lstPath (cdr(reverse (split (getenv "ACAD") ";"))) );取得所有系统搜索路径
  90.   (foreach e lstPath
  91.     (setq fonts (append fonts (vl-directory-files e "*.shx" 1)))
  92.   )
  93.   (setq fonts (vl-sort fonts '>))
  94.   (setq fonts (mapcar 'strcase fonts))
  95.   (setq fonts (EFist-Fix fonts))
  96.   (foreach e fonts
  97.     (if (EF:Acad-isBigFont (findfile e))
  98.       (setq bigFonts (cons e bigFonts))
  99.       (setq eFonts (cons e eFonts))
  100.     )
  101.   )
  102.   (setq wFonts (append (vl-directory-files (strcat (getenv "Windir") "\\FONTS\\") "*.TTC" 0)
  103.                  (vl-directory-files (strcat (getenv "Windir") "\\FONTS\\") "*.TTF" 0)
  104.                ))
  105.   (list eFonts bigFonts wFonts)
  106. )
  107. ;获取所有字体样式
  108. (defun EF:Style-getAllTextStyles (
  109.                                    /
  110.                                    TextStyles lstFonts
  111.                                    Typeface Bold Italic CharSet PitchAndFamily
  112.                                  )
  113.   (setq TextStyles (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'TextStyles))
  114.   (vlax-for TextStyle TextStyles
  115.     (vla-getFont TextStyle 'Typeface 'Bold 'Italic 'CharSet 'PitchAndFamily)
  116.     (setq lstFonts (cons
  117.                      (list
  118.                            (vla-get-Name TextStyle)
  119.                            (vla-get-FontFile TextStyle)
  120.                            (vla-get-BigFontFile TextStyle)
  121.                            Typeface
  122.                            (vla-get-Height TextStyle)
  123.                            (vla-get-Width TextStyle)
  124.                            (vla-get-ObliqueAngle TextStyle)
  125.                          )
  126.                      lstFonts
  127.                    )
  128.     )
  129.   )
  130.   (reverse lstFonts)
  131. )
  132. ;未知字体替换默认字体
  133. (defun EF:Style-DefuntFont (Font BigFont /
  134.                              Font BigFont iChange
  135.                              fonts bigfonts
  136.                              ext
  137.                            )
  138.   (setq lstStyle (EF:Style-getAllTextStyles))
  139.   (setq fonts (mapcar 'vl-filename-base $EF_Fonts))
  140.   (setq bigfonts (mapcar 'vl-filename-base $EF_BigFonts))
  141.   (mapcar '(lambda (e / edata eFont eBigFont bChange)
  142.              (cond ((/= (cadddr e) "")
  143.                    )
  144.                ((and (setq ext (vl-filename-extension (cadr e)))
  145.                   (/= (strcase ext) ".SHX")
  146.                 )
  147.                )
  148.                (T
  149.                  (setq edata (entget (tblobjname "Style" (car e))))
  150.                  (setq eFont (cdr (assoc 3 edata))
  151.                    eBigFont (cdr (assoc 4 edata))
  152.                  )
  153.                  (if (not (member (strcase (vl-filename-base eFont)) fonts))
  154.                    (setq edata (subst (cons 3 Font) (assoc 3 edata) edata)
  155.                      bChange T
  156.                    )
  157.                  )
  158.                  (if (not (member (strcase (vl-filename-base eBigFont)) bigfonts))
  159.                    (setq edata (subst (cons 4 BigFont) (assoc 4 edata) edata)
  160.                      bChange T
  161.                    )
  162.                  )
  163.                  (if bChange (entmod edata))
  164.                )
  165.              )
  166.            ) lstStyle
  167.   )
  168. )
  169. ;检索字体
  170. (setq $EF_Fonts (EF:Acad-getFonts))
  171. (setq $EF_BigFonts (mapcar 'strcase (cadr $EF_Fonts))
  172.   $EF_WinFonts (mapcar 'strcase (caddr $EF_Fonts))
  173.   $EF_Fonts (mapcar 'strcase (car $EF_Fonts))
  174. )

 楼主| 发表于 2020-12-23 20:31:33 | 显示全部楼层
  1. (defun LINE:Distance_LineToLine_2d_i (p1 p2 p3 p4)
  2.   ;;两直线间最小间距及相关点坐标的索引 (0 1 2 3 4) 对应 (nil p1 p2 p3 p4)
  3.   ;;返回list 类型 距离 [交点1] [交点2] [[点1 [点2]/[线1]] [点3 [点4]/[线2]]])
  4.   ;;距离0重合或点在线上 ,交点1是表是斜交点 ,垂距或平行间距
  5.   ;;线段长度不为0 p1/=p2 p3/=p4
  6.   ;;默认已做顺向处理x1 <= x2  x3<=x4
  7.   ;;以最左边的线变换坐标系.
  8.   (setq fuzz 1e-9 fuzz-jj 0.1)
  9.   (setq pts (list p1 p2 p3 p4))
  10.   (and (> (car p1) (car p3)) (setq jiaoHuan T) (mapcar 'set '(p1 p2 p3 p4) (list p3 p4 p1 p2)))
  11.   (setq m (MAT:Rotation p1 (ang p1 p2)))
  12.   (setq lst (mapcar (function (lambda (x) (MAT:mxp m x))) (list p1 p2 p3 p4)))
  13.   (mapcar 'set '(p1 p2 p3 p4) lst)
  14.   (setq line1 (list 1 2) line2 (list 3 4))
  15.   (mapcar 'set '(x1 y1 x2 y2 x3 y3 x4 y4) (apply 'append (list p1 p2 p3 p4)))
  16.   (setq k1 0)
  17.   (setq k2 (/ (- y3 y4) (if (equal x3 x4 fuzz) fuzz (- x3 x4))))
  18.   ;;用斜率分
  19.   (setq lst
  20.     (if (equal k1 k2 fuzz)
  21.       (progn
  22.         ;;斜率相同
  23.         ;;用两线的垂直距离分
  24.         (setq dd (- y3 y2))
  25.         (if (equal dd 0 fuzz)
  26.           (progn
  27.             ;;间距为0在同一条线上
  28.             (cond
  29.               ((equal x2 x3 fuzz) (list 6 0 2 nil (list 2 3) nil)) ;尾首相接
  30.               ((> x3 x2) (list 7 0 nil nil (list 2 3) nil)) ;离开
  31.               ((equal x1 x3 fuzz)
  32.                 (cond
  33.                   ((equal x2 x4 fuzz) (list 8 0 1 2 nil nil)) ;完全重合
  34.                   ((< x2 x4) (list 9 0 2 nil (list 2 line2) nil)) ;有一个端点相同部分重合
  35.                   ((> x2 x4) (list 9 0 4 nil (list 4 line1) nil)) ;有一个端点相同部分重合
  36.                   (T (alert "未考虑到的情况1"))               
  37.                 )
  38.               )
  39.               ((< x3 x2 x4) (list 10 0 3 2 (list 2 line2) (list 3 line1))) ;部分重合
  40.               (T (alert "未考虑到的情况2"))
  41.             )
  42.           )
  43.           (progn
  44.             ;;两平行线
  45.             (cond
  46.               ((> x3 x2) (list 11 dd nil nil (list 2 3) nil)) ;平行离开
  47.               ((and (< x1 x3 x2) (> x4 x2)) (list 12 dd nil nil (list 2 line2) (list 3 line1))) ;平行,部分垂足在线上
  48.               ((< x1 x3 x2) (list 13 dd  nil nil (list 2 line2) (list 3 line1))) ;平行,包含
  49.               ((equal x2 x3) (list 14 dd  nil nil (list 2 3) nil)) ;直拐平行
  50.               ((and (equal x1 x3 fuzz) (equal x2 x4 fuzz)) (list 15 dd  nil nil (list 1 3) (list 2 4))) ;完全平行
  51.               (T (alert "未考虑到的情况3"))
  52.             )
  53.           )
  54.         )
  55.       )
  56.       (progn
  57.         ;;斜率不同
  58.         ;;用交点分
  59.         (if (setq int-pt (LINE:Intersection p1 p2 p3 p4))
  60.           (progn
  61.             ;;有交点
  62.             (setq pt1 nil)
  63.             (if (equal int-pt p1 fuzz)
  64.               (setq pt1 1)
  65.               (if (equal int-pt p2 fuzz)
  66.                 (setq pt1 2)
  67.               )
  68.             )
  69.             (setq pt2 nil)
  70.             (if (equal int-pt p3 fuzz)
  71.               (setq pt2 3)
  72.               (if (equal int-pt p4 fuzz)
  73.                 (setq pt2 4)
  74.               )
  75.             )
  76.             (cond
  77.               ((and pt1 pt2) (list 3 0 pt1 nil (list pt1 pt2) nil)) ;两端点相接
  78.               (pt1 (list 4 0 pt1 nil (list pt1 line2) nil)) ;端点在2线上
  79.               (pt2 (list 4 0 pt2 nil (list pt2 line1) nil)) ;端点在1线上
  80.               ;;交点在两线中间.
  81.               (T (setq da (LINE:Perpendicular_Distance p3 p1 p2))
  82.                 (setq pt (LINE:Perpendicular_Foot_1 p2 p3 p4))
  83.                 (if (equal (distance p3 p4) (+ (distance pt p3) (distance pt p4)) fuzz)
  84.                   ;;p2到线2上有垂足
  85.                   (setq db (LINE:Perpendicular_Distance p2 p3 p4) tmp (list 2 line2))
  86.                   ;;p2到线2上无垂足
  87.                   (setq db (LINE:Perpendicular_Distance p4 p1 p2) tmp (list 4 line1))
  88.                 )
  89.                 (if (<= da db)
  90.                   (list 5 da (list 1 2 3 4) nil (list 3 line1) tmp)
  91.                   (list 5 db (list 1 2 3 4) nil tmp (list 3 line1))
  92.                 )
  93.               )
  94.             )
  95.           )
  96.           (progn
  97.             ;;无交点
  98.             (if (<= x4 x2)
  99.               ;;x方向线1包含线2,线1上有2个垂足
  100.               (if (< (abs (setq da (- y3 y1))) (abs (setq db (- y4 y1))))
  101.                 (list 2 da nil nil (list 3 line1) (if (< db fuzz-jj) (list 4 line1)))
  102.                 (list 2 db nil nil (list 4 line1) (if (< da fuzz-jj) (list 3 line1)))
  103.               )
  104.               (if (< x2 x3)
  105.                 ;;线2离开线1,线1上没有垂足
  106.                 (progn
  107.                   (setq pt (LINE:Perpendicular_Foot_1 p2 p3 p4))
  108.                   (if (equal (distance p3 p4) (+ (distance pt p3) (distance pt p4)) fuzz)
  109.                     ;;p2到线2上垂距最短,省略了p1的计算
  110.                     (list 2 (LINE:Perpendicular_Distance p2 p3 p4) nil nil (list p2 line2) nil)
  111.                     ;;两条线上均无垂足,比较斜距
  112.                     (if (< (setq da (distance p2 p3)) (setq db (distance p2 p4)))
  113.                       (list 1 da nil nil (list 2 3) (if (< db fuzz-jj) (list 2 4)))
  114.                       (list 1 db nil nil (list 2 4) (if (< da fuzz-jj) (list 2 3)))
  115.                     )
  116.                   )
  117.                 )
  118.                 ;;一个垂足在线1上,另一个在线2上
  119.                 (if (< (setq da (LINE:Perpendicular_Distance p2 p3 p4)) (setq db (LINE:Perpendicular_Distance p3 p1 p2)))
  120.                   (list 1 da nil nil (list 2 line2) (if (< db fuzz-jj) (list 3 line1)))
  121.                   (list 1 db nil nil (list 3 line1) (if (< da fuzz-jj) (list 2 line2)))
  122.                 )
  123.               )
  124.             )
  125.           )
  126.         )
  127.       )
  128.     )
  129.   )

 楼主| 发表于 2020-12-28 21:27:52 | 显示全部楼层
收藏@wkq004[地形图  程序 首尾连接的多段线生成路径试多段线

  1. (defun c:tt ()
  2.   (if (and (princ "\n选择起始线段")
  3.         (setq ss (ssget "+.:E:S" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 0))))
  4.         (setq e (ssname ss 0))
  5.         (setq el (entget e))
  6.         (setq pt (cadar (cdddr (car (ssnamex ss)))))
  7.         (setq pt (list (car pt) (cadr pt)))
  8.         (setq line (BF-curve-subsegment-picked-Points (vlax-ename->vla-object e) pt))
  9.         ;;靠近起点或终点,中间搜索两端
  10.         (setq
  11.           a (distance pt (car line))
  12.           b (distance pt (cadr line))
  13.         )
  14.         (setq start (cdr (assoc 10 el)) end (cdr (assoc 10 (reverse el))))
  15.         (if (< 0.5 (/ a b) 2)
  16.           (setq ab (list (list start end) (list end start)))
  17.           (if (> b a)
  18.             (setq ab (list (list end start) nil))
  19.             (setq ab (list (list start end) nil))
  20.           )
  21.         )
  22.         (setq pt (cdr (assoc 10 el)))
  23.         (princ "\n 选择范围")
  24.         (setq ss (ssget '((0 . "LWPOLYLINE"))))
  25.         (setq lst (bf-pickset->list ss))
  26.       )
  27.     (progn
  28.       (setq lst (apply 'append (mapcar (function (lambda (x) (setq pts (mapcar 'cdr (vl-remove-if-not (function (lambda (x) (= 10 (car x)))) (entget x)))) (mapcar 'list pts (cdr pts)))) lst)))
  29.       (setq **lines lst) ;全局变量
  30.       (setq line (car ab))
  31.       (setq p**lines (fun line (list line)))
  32.       (vl-every (function (lambda (x)(ybl-mkpline-1 (append (mapcar (function (lambda (x) (car x))) x) (cdr (last x)))))) p**lines)
  33.     )
  34.   )
  35. )

  36. (vl-load-com)
  37. (setq fuzz 1e-9)
  38. (defun fun (line pline / new lst)
  39.   (setq b (cadr line))
  40.   (while **lines
  41.     (setq a  (car **lines)
  42.       **lines  (cdr **lines)
  43.     )
  44.     (cond
  45.       ((equal b (car a) fuzz)
  46.         (setq lst (cons a lst))
  47.       )
  48.       ((equal b (cadr a) fuzz)
  49.         (setq a (list (cadr a) (car a)))
  50.         (setq lst (cons a lst))
  51.       )
  52.       (T (setq new (cons a new)))
  53.     )
  54.   )
  55.   (setq **lines new)
  56.   (if lst
  57.     (apply 'append (mapcar (function (lambda (x) (fun x (append pline (list x))))) lst))
  58.     (list pline)
  59.   )
  60. )

  61. ;(progn
  62. ;  (setq lst-lst '())
  63. ;  (setq  **lines
  64. ;   '(
  65. ;     ((3 4) (5 6)) ;_第一条线
  66. ;     ((3 4) (9 10))
  67. ;     ((7 8) (3 4))
  68. ;     ((5 6) (11 12))
  69. ;     ((99 100) (11 12))
  70. ;     ((99 100) (22 33))
  71. ;     ((99 100) (44 55))
  72. ;    )
  73. ;  )
  74. ;  (setq line '((1 2) (3 4)))
  75. ;  (setq aa (fun line (list line)))
  76. ;;((((1 2) (3 4)) ((3 4) (7 8)))
  77. ;;  (((1 2) (3 4)) ((3 4) (9 10)))
  78. ;;  (((1 2) (3 4))
  79. ;;    ((3 4) (5 6))
  80. ;;    ((5 6) (11 12))
  81. ;;    ((11 12) (99 100))
  82. ;;    ((99 100) (22 33))
  83. ;;  )
  84. ;;  (((1 2) (3 4))
  85. ;;    ((3 4) (5 6))
  86. ;;    ((5 6) (11 12))
  87. ;;    ((11 12) (99 100))
  88. ;;    ((99 100) (44 55))
  89. ;;  )
  90. ;;)
  91. ;
  92. ;)

  93. (defun ybl-mkpline-1 (pts)
  94.   (if (entmake (append (list '(0 . "LWPOLYLINE")
  95.            '(100 . "AcDbEntity")
  96.            '(100 . "AcDbPolyline")
  97.            (cons 90 (length pts))
  98.            )
  99.            (mapcar '(lambda (x) (cons 10 x)) pts)
  100.            '((210 0. 0. 1.))
  101.          )
  102.       )
  103.     (entlast)
  104.   )
  105. )





  106. ;;;======================================
  107. ;;;===========以下为内裤部分=============
  108. ;;;======================================
  109. (defun BF-curve-subsegment-picked-Points (obj p)
  110.   (BF-curve-subsegment-points
  111.     obj
  112.     (fix
  113.       (vlax-curve-getParamAtPoint
  114.         obj
  115.         (vlax-curve-getClosestPointTo obj (trans p 1 0))
  116.       )
  117.     )
  118.   )
  119. )
  120. (defun BF-pickset->list (ss)
  121.   (vl-remove-if-not 'BF-enamep (mapcar 'cadr (ssnamex ss))))
  122. (defun BF-curve-subsegment-points (curve n)
  123.   (list  (vlax-curve-getPointAtParam curve (fix n))
  124.     (vlax-curve-getPointAtParam curve (1+ (fix n)))
  125.   )
  126. )
  127. (defun BF-enamep (arg) (equal (type arg) 'ename))

发表于 2020-11-16 22:19:24 | 显示全部楼层
兄弟很久没出山了,最近在哪发财~
 楼主| 发表于 2020-11-17 15:31:04 | 显示全部楼层
czb203 发表于 2020-11-16 22:19
兄弟很久没出山了,最近在哪发财~

kubi苦逼打工中
发表于 2020-11-17 23:47:50 | 显示全部楼层
大神一般不轻易发言。。。。。。。。。。
发表于 2020-11-18 09:44:24 | 显示全部楼层
本帖最后由 crtrccrt 于 2020-11-18 09:49 编辑

       ;; 1900年日期系统,作为起始点使用1900年1月1日计算日期。;
       ;; 1904年日期系统,作为起始点使用1904年1月1日计算日期。;
(BB-USING-vbs "Year(1)")==1899
(BB-USING-vbs "Month(1)")=12
(BB-USING-vbs "Day(1)")===31
????
日期格式1900/1/1
常规格式1

 楼主| 发表于 2021-1-21 17:50:47 | 显示全部楼层
73ge哥程序 快速切换布局和模型空间
  1. (defun c:NM (/ *doc layouts i l ls)
  2.   (setq *doc(vla-get-ActiveDocument(vlax-get-acad-object)))
  3.   (setq layouts(vla-get-layouts *doc)l(vla-get-count layouts)i l)
  4.   (repeat l(setq ls(cons(vla-get-name(vla-item layouts(setq i(1- i))))ls)))
  5.   (setq i(VL-POSITION(vla-get-name(vla-get-ActiveLayout *doc))ls))
  6.   (while(getpoint)
  7.     (or(<(setq i(1+ i))l)(setq i 0))
  8.     (vla-put-ActiveLayout *doc(vla-item layouts i))
  9.     ))

 楼主| 发表于 2021-1-28 20:02:19 | 显示全部楼层
  1. (defun plinexy(e / p a b n ob q et d d1 en et)
  2.     (setq a(entget e)ob(vlax-ename->vla-object e)et(cdr(assoc 0 a))n 0 p nil d nil)
  3.     (cond((="LWPOLYLINE"et)
  4.     (repeat(length a)(setq b (nth n a) n (+ n 1))
  5.       (if (= 10 (car b))(progn
  6.         (setq q(list (cadr b) (caddr b))d1(vlax-curve-getDistAtPoint ob q))
  7.         (if p (if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))
  8.           (setq p (list q)))))))
  9.    ((="POLYLINE"et)
  10.     (SETQ EN (ENTGET (SETQ E (ENTNEXT E))))
  11.     (WHILE (/= (CDR (ASSOC 0 EN)) "SEQEND")
  12.       (SETQ q (CDR (ASSOC 10 EN))d1(vlax-curve-getDistAtPoint ob q)q(reverse(cdr(reverse q))))
  13.       (if p(if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))(setq p(list q)))
  14.       (SETQ EN (ENTGET (SETQ E (ENTNEXT E)))))
  15.     (setq p(reverse p))))P)

  16. (defun pt2v(pt n);;坐标点表转为坐标数组
  17.   (setq pt(apply'append(if(= n 2)(mapcar'(lambda(x)(mapcar'+'(0 0)x))pt)pt)))
  18.   (vlax-make-variant(vlax-safearray-fill(vlax-make-safearray vlax-vbDouble(cons 0(1-(length pt))))pt)))


  19. ;(pt2v (plinexy(car(entsel)))3)

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

本版积分规则

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

GMT+8, 2024-12-22 23:51 , Processed in 0.245393 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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