Thư viện xây dựng: Tiêu chuẩn xây dựng- Văn bản- File mẫu- Sơ đồ- Quy trình- Phần mềm xây dựng

Tiêu đề: Bộ AutoLISP Do kts. Trần Ngọc Thắng TỰ BIÊN SOẠN + SƯU TẦM [In trang]

Tác giả: TranNgocThang76    Thời gian: 12/5/2025 18:11
Tiêu đề: Bộ AutoLISP Do kts. Trần Ngọc Thắng TỰ BIÊN SOẠN + SƯU TẦM
  1. ********************************************************************************
    ( V+ `! T% ~; g# W
  2. *             ACADLISP FOR AUTOCAD R.14 -> AUTOCAD R.2012                      *2 F" s! x. H8 l5 Y; m
  3. *         Tran Ngoc Thang DHXD-HaNoi41 from years 1999 -> 2015                 *
    ) A& E3 F5 p( [5 V
  4. *                         Suu tam & Soan                                       *+ ^7 o: q4 T& y! O! T; i' I- B. [
  5. ********************************************************************************
    4 Y, Y& n& N! U6 M: n' e( K
  6. 9 @) ]' w0 h2 d6 V
  7. ; Next available MSG number is  104
    4 u+ \* `# q4 Y) C8 m
  8. ; MODULE_ID ACAD2000doc_LSP_
    5 p7 u. x' C" ^" i
  9. ;;;    ACAD2000DOC.LSP Version 1.0 for AutoCAD 2000
    ! ]2 |9 [- `4 T0 P, e; Q' N
  10. ;;;  h: F, J2 I; d% A& l  R7 T% o
  11. ;;;    Copyright (C) 1994 - 1999 by Autodesk, Inc.
    4 J# f' Z  }! c) E' F; C
  12. ;;;4 C+ y1 Z; U8 ?# A) ^* V; G
  13. ;;;    Permission to use, copy, modify, and distribute this software
    . b  S) @. R, \* e  q. p3 X
  14. ;;;    for any purpose and without fee is hereby granted, provided- o& t1 @; i( i+ z( R
  15. ;;;    that the above copyright notice appears in all copies and
    2 N  h1 X$ n) z& i
  16. ;;;    that both that copyright notice and the limited warranty and6 `% n2 d9 i. i
  17. ;;;    restricted rights notice below appear in all supporting
    1 E; K) \* C% `& B# H" Y! Y4 S+ E
  18. ;;;    documentation.1 C5 @6 f; g5 [6 F
  19. ;;;
    + n7 `8 h0 W2 v$ d, I
  20. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.2 j* k' U# t- ~
  21. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    5 O3 B; c' Z% U8 k" H4 l
  22. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.6 Q! y; D" W% q+ _+ l
  23. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    / v7 u3 R' W  N& o3 _5 }
  24. ;;;    UNINTERRUPTED OR ERROR FREE.
    + K1 Y2 C, |! u) h7 l
  25. ;;;, T4 U6 \/ t5 w. \( b4 @
  26. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to+ |4 a9 G8 F, H: M0 f" v
  27. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    + v6 T$ O( ~4 L. E
  28. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    6 c6 ?) Z. I0 l& G  a$ T) I* ^. M
  29. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    $ u, ~5 u3 Q2 w
  30. ;;;  q# N: w: @$ ?& a7 h) L
  31. ;;;.
    3 E" {5 t9 N" c8 }+ i( }
  32. ;;;" [6 n4 H) A8 c
  33. ;;;    Note:
    " J3 D* w0 I0 i9 R0 {' P
  34. ;;;            This file is loaded automatically by AutoCAD every time
    2 _% u9 k, N. H  c4 l
  35. ;;;            a drawing is opened.  It establishes an autoloader and
    8 F& L) N' k) T
  36. ;;;            other utility functions.1 g1 w+ G" e: _
  37. ;;;
    6 J" ]+ p1 t% v6 N  }9 x6 _, _1 e  P
  38. ;;;    Globalization Note:   6 U/ E1 r" y+ C% J( {2 T
  39. ;;;            We do not support autoloading applications by the native 3 Y2 h2 d' v: ]
  40. ;;;            language command call (e.g. with the leading underscore
    5 d7 t2 a7 v, S( @* K" B8 `
  41. ;;;            mechanism.)/ |: Z/ h( ^- n" J9 ^

  42. - j: x  N! E7 c, o* p. q

  43. + V" x, d5 \/ I2 {  z& S( I/ m
  44. ;;;===== Raster Image Support for Clipboard Paste Special =====
    - I% `- P$ g+ t7 n. M; h
  45. ;;
    * a0 |7 N, G& p% s  L
  46. ;; IMAGEFILE* X+ V7 K9 g2 r! J; i
  47. ;;" A7 \/ d; L) }6 d
  48. ;; Allow the IMAGE command to accept an image file name without' {3 }" c' M; b' [
  49. ;; presenting the file dialog, even if filedia is on., N' X2 Q" E0 R. P- O; E  b. u
  50. ;; Example: (imagefile "c:/images/house.bmp")
    3 b8 E. J( }7 [; x: _1 ^
  51. ;;. l1 K  w; F/ q) b* _9 o
  52. (defun imagefile (filename / filedia-save cmdecho-save)
    ! i9 ]  S5 `) i6 Z* Q* k
  53.   (setq filedia-save (getvar "FILEDIA"))) n/ |7 Q1 V& H9 e$ G7 G
  54.   (setq cmdecho-save (getvar "CMDECHO"))
    $ u, D% K, }" v2 X' x
  55.   (setvar "FILEDIA" 0)* {8 V1 G7 F! o. p
  56.   (setvar "CMDECHO" 0)
    ; i' T; I! g8 ]9 c: d
  57.   (command "_.-image" "_attach" filename)
    ; M) W# g7 L6 x3 @0 z
  58.   (setvar "FILEDIA" filedia-save)
    1 E- z' s( D6 `, w6 X$ T# F
  59.   (setvar "CMDECHO" cmdecho-save)
    % p- n6 r9 U2 X3 c! v
  60.   (princ)! d1 \& _) k! a5 \
  61. )
    ) ]4 h/ u* z. @0 C# Y% o
  62. ' M+ c+ L7 a7 d3 o
  63. (defun c:zx () (command "zoom" ".5x"))
    6 u0 K& f5 r6 C& q
  64. (defun c:zz () (command "zoom" "p"))5 X7 n4 o; ]  u7 R
  65. (defun c:za () (command "zoom" "a"))- D+ n4 U5 `% G7 W& |0 ^
  66. (defun c:zd () (command "zoom" "d"))) W0 @! z6 W( v" S+ w
  67. (defun c:ze () (command "zoom" "e"))& v/ c1 b8 R7 h0 f% \6 w4 M
  68. (defun c:zr () (command "zoom" "" ""))3 ~) A; r1 j1 Q1 {) c+ g. d
  69. (defun c:vv () (command "ucs" "v"))8 ^+ @8 ^* F, b8 b/ M
  70. (defun c:co () (ssget) (command "copy" "p" "" "m"))" X2 F) k! F% v/ T
  71. (defun c:c () (command "circle"))3 I& D1 o- J) z( g/ _) D1 J1 x4 ?
  72. (defun c:rt () (command "rotate"))
    ) f" s8 o9 j. h
  73. (defun c:3q () (ssget) (command "_rotate3d" "ANGDIR" "value" pause (princ))); o4 o# r/ [" n9 G
  74. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))# P  m9 ~! ~( [$ ?( z/ g; }
  75. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))
    2 @# c. i" t5 h' w9 B. _
  76. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))
    0 I5 p2 ]$ K7 r0 G8 }) n
  77. (defun c:r5 () (ssget) (command "rotate" "p" "" pause "5"))9 X4 [  I. g) Q" M) Y# m& u# \' G+ @+ _* J
  78. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))
    8 z% @6 f$ L5 E
  79. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))6 |5 ]. m* B6 N
  80. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))
    % z. |( y6 q& i7 }; X
  81. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))
    0 E3 v2 n8 Z( S, |0 y
  82. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))
      n* ]/ X  w/ `& V) b
  83. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    4 M- B; }9 {  f, @
  84. (defun c:md () (ssget) (command "mirror" "p" "" pause pause "y"))- a, Q9 K# s$ u
  85. (defun c:fd () (command "find" "p" "" )(princ))(princ)
    4 o7 B8 M( E0 T7 d! x; Q

  86. ' d- `0 @2 J; o
  87. (defun c:romantdim () (command "-style" "ROMANT-DIM" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)/ L% P8 ?- C7 C7 U& t( Y
  88. (defun c:romantext () (command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200""1""0""n""n""n"))(princ). v; u% o' [; }8 G
  89. (defun c:vnhelvthuong () (command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1""0""n""n""n"))(princ)2 G# D; G' d1 _$ O: P: B. X: P
  90. (defun c:vnhelvhoa () (command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500""1""0""n""n""n"))(princ)5 |$ l. [; n! Z% m
  91. (defun c:truc () (command "-style" "TRUC" "impact" "0""1""0""n""n""n"))/ E5 O4 X. O& Q/ c0 I9 s
  92. (defun c:chu () (command "-style" "VERDANA" "verdana" "200""1""0""n""n"))+ K: P8 M: C- d2 I9 I
  93. (defun c:cot () (command "-style" "COTES" "verdana" """1""0""n""n"))
    : g( Y2 V1 q3 f% u/ m. U. d: H5 T

  94. . i, s. c, J- I: r. f! b
  95. (defun c:an () (command "-style" ".AVANT" ".vnavant" "200""1""0""n""n"))
    " A9 X4 J3 X$ i! h
  96. (defun c:ah () (command "-style" ".AVANTH" ".vnavanth" "200""1""0""n""n"))
    2 l/ i& y: q  W; u' t0 c. H: d
  97. (defun c:ha () (command "-style" ".ARIALH" ".vnarialh" "200""1""0""n""n"))* S) p! |) }. I& F- n- d
  98. (defun c:na () (command "-style" ".ARIALNARROWH" ".vnarial narrowh""1200""1""0""n""n"))
    ! |- H6 d1 [& P- l  C$ ]
  99. (defun c:vn () (command "-style" ".VNTIME" ".vntime" "200""1""0""n""n"))
    . \* F! d) y  A7 x1 O7 j
  100. (defun c:vh () (command "-style" ".VNTIMEH" ".vntimeh" "200""1""0""n""n"))
      L' t1 s+ T! }! h# v
  101. 3 R$ }+ Q1 o# \& f+ N/ Z% d
  102. (defun c:ps () (command "PSOUT" "CorelDraw-import-Photoshop" "W"))(princ);export the current view of a drawing as an EPS file% w. ?! N7 C+ k4 O+ ?; A

  103. , Z- M# Q, z( E" U7 K" N9 _- ?4 w
  104. ;free lisp by cadviet,cd2k44
    ) A4 P+ i% g9 H6 M! Z& w! u& Y
  105. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    - v, f, B( A2 R- f4 U  Z; P
  106. (defun c:FTEXT (/ ent tstyle )
    : G) Y5 @$ k4 I5 ]
  107. (command "undo" "be")1 U/ M* R" }/ d* Q8 {& B6 Z
  108. (setq ent (entsel "\n Pick text :"))7 W6 @9 }' f7 I* |! g2 @; P, y( E, e
  109. (setq TSTYLE (cdr (assoc 7 (entget (car ent))))); y7 N" i. {' I6 ~' \
  110. (command "STYLE" TSTYLE "romant.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    2 P; y$ u5 H6 g6 a! q- z
  111. (setvar "TEXTSTYLE" Tstyle)* x0 o7 j6 b: j0 k# m9 V9 y& x
  112. (command "undo" "end")
    & f+ k* X: E$ t1 @
  113. )
    8 _/ E1 ], S. L' T
  114. ;Cam on cadviet nhieu 27-11-2023 04h15p36s (thanks cadviet)
    ' o' L! M0 g' X3 X

  115. ) u* j- c8 Y, ^( j- @: \
  116. ;free lisp by cadviet,cd2k44
    ( b( T4 k3 P: h9 e% l- G
  117. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=538308 [, u2 @# V* x$ _
  118. (defun c:Fvnh (/ ent tstyle )
    0 r8 ?" J& y' u
  119. (command "undo" "be")! u! p9 p4 k( {% z) Q
  120. (setq ent (entsel "\n Pick text :"))
      R* L9 {( [. b) \* T! z: w# d
  121. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))& Q; [7 i; E" L# K0 z
  122. (command "STYLE" TSTYLE "vnhelvh.shx,vnh.shx" "0" "1" "0" "N" "N" "n")# D6 a* @; K+ H% q2 _
  123. (setvar "TEXTSTYLE" Tstyle)) O, A5 a, N4 v' u
  124. (command "undo" "end")
    7 L. J, x7 F! C4 u  _7 l
  125. )
    $ F7 Y/ S2 f9 x3 `4 a
  126. , c) k9 H! U1 @
  127. ;free lisp by cadviet,cd2k448 z: W$ z" n7 W$ Q0 F3 o
  128. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    / N: R/ h# e. \3 q( S+ A. i& I
  129. (defun c:Chbg (/ ent tstyle )) Z5 r# w2 c1 X* a6 L: ~) r* t2 ?
  130. (command "undo" "be")
    ; m4 F( r# u7 r2 k" c4 B/ f
  131. (setq ent (entsel "\n Pick text :"))
    & c; `! p* M" e$ M7 m& {  R, `
  132. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))! I, {0 S: |% w
  133. (command "STYLE" TSTYLE "chhbg.shx,vnh.shx" "0" "1" "0" "N" "N" "n")) B  h% i* `1 S1 g' ^$ r( E
  134. (setvar "TEXTSTYLE" Tstyle)  ~$ {8 [7 a  ]
  135. (command "undo" "end")
    6 n3 Q1 z" e: V+ B7 `/ ^
  136. )
    / F/ B' a4 }* F& Q  j7 X% Q

  137. 4 p( C$ B3 {8 ~; _' X4 y0 J; v
  138. ;free lisp by cadviet,cd2k449 O) M! x4 O- }: z
  139. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    , C! |9 d* i4 n' d1 ^5 J- c
  140. (defun c:Chsm (/ ent tstyle )
    6 B, |6 c2 x% Q, l& v4 d/ {9 h
  141. (command "undo" "be")
    : n. \$ ?8 ?+ V6 }+ {2 h& B( R
  142. (setq ent (entsel "\n Pick text :")): u, r& o: X; [* u' z6 ]/ ^. k
  143. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))6 P/ B( Q  U* x8 v
  144. (command "STYLE" TSTYLE "chhsml.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    8 f  d4 k0 ~: N& ?9 k
  145. (setvar "TEXTSTYLE" Tstyle)* K  j6 L. ?0 Q7 s
  146. (command "undo" "end")8 ?, p! [* [6 C3 U# P
  147. )' a- }1 K# G, Z. F) J, p/ F* U

  148. 4 K3 l$ a* U7 o* ~
  149. ;free lisp by cadviet,cd2k44
    % Y/ Z' u* j, R+ ?7 m
  150. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    8 x; y1 B6 ^8 w
  151. (defun c:Fttf (/ ent tstyle )
    - @$ ]: D/ r- g# m) P
  152. (command "undo" "be")  t/ g( k: v0 D& o! ]) I2 T
  153. (setq ent (entsel "\n Pick text :"))  G5 }1 F9 ]$ _5 m- W2 G8 |( C0 \
  154. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))' E' R: r4 [" i
  155. (command "STYLE" TSTYLE "verdana.ttf" "0" "1" "0" "N" "N" "n")" {4 s- f4 K4 z0 x4 r
  156. (setvar "TEXTSTYLE" Tstyle)' g. [( |) P3 Q4 H
  157. (command "undo" "end")
    ; m3 P/ @' E1 A7 E
  158. )
    3 G0 U+ l3 A( k

  159. . k0 B6 q5 B, v
  160. ;;; ============================================! |9 C# i3 Q. m* G! j
  161. ;;;3 p5 R+ I1 Z$ n+ Q" c9 x, ~4 R
  162. ;;;   LISP Creater Tao Duong Dan AUTOCAD2000
    ; `& t6 \  C7 n* w2 R
  163. ;;;
      G' T+ T1 N  G4 L9 a5 i+ ^' a
  164. ;;; ============================================
    ; M0 x3 M4 A6 r9 U

  165.   J2 j5 `. V% Z$ c/ \: J
  166. ;;; ============================================
    1 J! b9 r# ~0 `: @& M: E* W
  167. ;;;! ~, E; v' R# {8 j
  168. ;;;          CREATING FROM AUTOCAD2000/ g+ g8 T/ _3 u
  169. ;;;
    : V% D  X7 @* A2 F: G: S0 \* P
  170. ;;; ============================================
    - O7 [6 l- K0 X- G/ S1 G! ^

  171. 6 G/ X1 E' Q9 `7 N# y% [7 ^
  172. (setvar "INSUNITS"4)
    : r9 T( l* _8 i) G
  173. (setvar "ANGBASE"0)" l* l( M9 B# M7 ]: m( n
  174. (setvar "ANGDIR"0); K2 k- G9 K- F( D/ P. b- x; N
  175. (setvar "AUNITS"0)
    ; R. A; d; ~# n
  176. (setvar "AUPREC"8)
    & U* g9 V2 y* L9 e6 {; N* Y: B- ?
  177. (setvar "LUNITS"2)+ ^1 B/ L" T& s! @
  178. (setvar "LUPREC"8)- S2 E2 |( R8 ~7 K0 {
  179. (setvar "ACADLSPASDOC"1) 5 O/ R4 {: P9 `: v$ V7 R# I. _/ P
  180. (setvar "pickbox"5)
    , {, o/ j/ d" f" F! V, T: ^/ o
  181. (setvar "blipmode"0)
    2 P8 n3 I, P; Z" X0 X
  182. (setvar "mirrtext"0)
    $ g% v6 M/ q' X/ N* e
  183. (setvar "cursorsize"100)
    , M! I) L5 b; }* c
  184. (setvar "ZOOMFACTOR"75)6 E& ^  V. Y, v- O1 p2 }- _" _
  185. (setvar "LTSCALE" 10)
    3 q! v9 w" q6 x  n. f( g* E3 M& g, e
  186. (setvar "lwunits"1)2 S( ^3 r2 o2 q
  187. (setvar "DIMBLK" "Closed")( }* k) Q9 Z4 j: C) ^' S
  188. (setvar "DIMGAP"0.0693)0 G4 ~1 C$ Y. m. h/ B' d/ {
  189. (setvar "DIMASZ"0.20)' c& y8 y( v, r6 g
  190. (setvar "DIMCEN"0.2)6 B" C. }: P6 {  F, S
  191. (setvar "DIMDLI"0.1)- _) W/ W/ l' d5 e$ A& _+ S
  192. (setvar "DIMEXE"0.0693)
    2 e) R/ l' b- E% K0 [3 W8 Y: V' E
  193. (setvar "DIMEXO"0.25)( x1 P7 c* R7 x& R* z
  194. (setvar "DIMDEC"0)( Z5 v4 U/ x8 D  N; O- G5 ?. w
  195. (setvar "DIMTIX" 1)
    9 W' z+ V$ F9 }/ Q. t6 M+ `# D
  196. (setvar "DIMTXT" 0.099)
    : R/ I: K/ i8 [8 Z$ K, t) _% G
  197. (setvar "DIMCLRT" 7)5 [+ t2 y7 [! j$ E
  198. (setvar "DIMTVP" 1)
    9 Y  B' j5 l+ u9 x* y. a
  199. (setvar "DIMJUST" 0)
    + R! r$ ?# N5 y
  200. (setvar "DIMTIH" 0)
      q1 E, {2 q5 s* t4 m: b& z5 n
  201. (setvar "DIMTOFL" 1)) U9 T, Y- o& v" _' n  `
  202. (setvar "DIMSCALE" 1111.1111), Q) O$ o! i  \/ k# n" Z* r( J: ?

  203. : w) Y& ]$ W- [: w, [. Q
  204. * }( P0 t3 P7 w+ h- t+ R& w% l

  205. 5 M+ T) {5 F4 z
  206. (defun c:zp ()  (command "'.zoom" "p"))
    $ T% |! Q( R" t& L; ]
  207. (defun c:zz ()  (command "'.zoom" "p"))
    5 J" ]2 C* e( j' [3 H. ]* H
  208. (defun c:ze ()  (command "'.zoom" "e"))  r5 M* g# H6 l8 R! c% [
  209. (defun c:za ()  (command "'.zoom" "a"))
    . o9 Q7 q4 G6 T8 u
  210. (defun c:zd ()  (command "'.zoom" "d"))( D0 _! k* d  b0 {9 x& G/ o
  211. (DEFUN C:ZZZ () (COMMAND "ZOOM" ".25X"))2 l2 [/ A0 o1 [) k/ V8 J9 a7 C2 ?
  212. (DEFUN C:ZX  () (COMMAND "ZOOM" "2X"))9 N" [0 A: M: k! l
  213. (defun c:de () (command "ddedit")(princ))
    1 l7 b" ~% u( Q6 b2 ]5 o
  214. (defun c:dda () (command "Dimaligned"))
    . o+ H# h9 [- D: T9 D& h  Z
  215. (defun c:ddb () (command "Dimabaseline"))
    ' Q$ \& r6 Z6 S: H
  216. (defun c:ddc () (command "Dimcontinue"))
    ' d  F4 l) ^( G3 |
  217. (defun c:dde () (command "Dimtedit"))6 H8 L, s% x" W0 h4 W: G% g
  218. (defun c:ddf () (command "Ddattdef"))
    0 n  F6 A) \3 Y' ~6 X
  219. (defun c:ddi () (command "Dimdiameter")), x$ D/ C; o: H
  220. (defun c:ddl () (command "Dimlinear"))3 U8 N, V; D1 F9 s( D6 q/ _6 `
  221. (defun c:ddn () (command "Dimangular"))
    2 C) L% j0 {# S' H/ S& T- m
  222. (defun c:ddo () (command "Dimordinate"))5 `8 i1 Y0 e; E7 N+ w; c, O
  223. (defun c:ddr () (command "Dimradius")), ^. w; d$ N2 e. E. G) r
  224. (defun c:dds () (command "Dimstyle"))
    * N0 o$ o, @( Z: h
  225.   _$ m1 e8 n9 h& W
  226. (defun c:DU () (command "dim1" "up" "select" "exit" pause ))(princ)
    1 I5 o+ ~* b& \% P# U
  227. (defun c:DH () (command "Dim1" "home" "select" "exit" pause))(princ)0 h' X3 m* q/ S* D1 `8 B
  228. (defun c:UU () (command "dim1""update""all"))' N; m% @0 q' B) s
  229. (defun c:ded() (command "dim1""tedit"))
    : y  x1 W9 z! P9 f# @% y( _- G9 V7 N
  230. (defun c:da () (command "dim1""ali"))6 L6 O$ ]3 q  R6 v2 W
  231. (defun c:dll() (command "dim1""l"))
    3 j" _' k5 A/ f. j; I6 ]4 e' a7 x3 v
  232. (defun c:dan() (command "dim1""an"))8 ]9 m; S, _5 Y7 Y. I. ^6 A
  233. (defun c:d1 () (command "dim1""ra"))& ^4 F1 Y! A  {* \
  234. (defun c:n  () (command "dim1""new"))
    & X- R( C; c( s* q7 W9 {

  235. ) {, U8 ~! P5 I& `
  236. (DEFUN C:PE  () (COMMAND "PEDIT"))
    - f4 _! |5 |7 n3 |
  237. (DEFUN C:PL  () (COMMAND "PLINE"))
    $ t2 n7 h: d* T& z1 ?  c
  238. (defun c:dd () (command "dist")(princ))
    ) c  k, V6 b( ~) c- k) a
  239. (defun c:w () (command "pedit" pause "w" "au")(princ))
    8 c  ^+ E( _0 @- D: b9 u
  240. (defun c:pg  () (command "polygon" "polygon")), V+ U- \6 D8 c7 `* k2 o$ R3 K/ E
  241. (defun c:el  () (command "ellipse"))- C/ B- a) {  Z: k' i8 ]1 ~) n
  242. (defun c:xe  () (command "explode"))
    ; i+ K" L& N7 @  r
  243. (defun c:eex  () (command "extrude"))
    5 C( C+ ^# q  ^* j) r
  244. (defun c:xg  () (command "xline""a"))
    - c3 q8 m) s4 Y" R1 ]
  245. (defun c:xh  () (command "xline""h"))
    5 J* i( d) k5 \4 I
  246. (defun c:xv  () (command "xline""v"))
    1 {8 T, N2 G5 Q8 H1 p7 D; T4 G1 A" y
  247. ; w, s! S) H- d
  248. (defun c:oc () (command "osnap""cen"))
    0 Z) k/ S0 H' y9 S9 D
  249. (defun c:od () (command "osnap""nod"))2 G" L' k! ], a" A
  250. (defun c:oe () (command "osnap""end"))
    ' a" H9 P9 M8 M& k& ~# q, f
  251. (defun c:oi () (command "osnap""int"))( J' ]1 Y2 X# l) \# ^) V
  252. (defun c:or () (command "osnap""per"))
    0 E3 R# V! `) \" B' T1 w: P
  253. (defun c:on () (command "osnap""none"))+ q0 S& J2 S% z7 S' e) z0 b
  254. (defun c:oq () (command "osnap""qua"))
    6 [8 a  p- E0 A. t
  255. (defun c:om () (command "osnap""mid"))4 B6 w  P1 I) n2 L) ^( o* V8 @
  256. (defun c:ot () (command "osnap""tan"))
    9 G  D& b% Z8 S7 F6 E4 D
  257. (defun c:oin () (command "osnap""ins"))6 x, F# h9 i& x" r4 y1 D
  258. (defun c:oa () (command "osnap""nea"))9 n- A3 w8 ^3 c3 F6 L$ x6 g) X- g
  259. (defun c:ol () (command "osnap" "End,Mid,Cen,Node,Nea,Int,Perp,Qua")(princ))
    $ q) k. A! L; I0 k
  260. ;(defun c:du () (command "dim1" "up" "s" "pick" "other"))( B2 w. G  W# m4 p8 U: M5 ]% j" @7 T! b
  261. ;(defun c:nn () (command "new" "y" ))
    , \. [7 {8 C1 s' _
  262. 9 B* B4 |" S# w' J% o# `& ~4 I3 u& D
  263. (defun c:/ () (command "limits")). f+ E1 Q: G# ^) `% ~7 N3 k$ R
  264. (defun c:`1 () (command "region"))
    * P0 u* \5 E$ l. D
  265. (defun c:`2 () (command "subtract")): U4 R) b8 \' q# x; F8 P+ u/ X  _
  266. (defun c:`3 () (command "union"))
    * m; J+ A3 C; b' x# N) s. q6 E
  267. (defun c:`4 () (command "intersect"))8 d, |; p  z' s2 {) a. R( u  ^( F
  268. (defun c:`c () (command "cal"))
    + k7 l) u/ I0 s! Q% T
  269. (defun c:`g () (command "Polygon"))
    5 D5 i1 N: G5 t1 r3 k

  270. 0 ]6 S( Q! q3 V+ [  g: S( f
  271. (defun c:lmi() (command "LIMMAX" pause "" "zoom" "all" )(princ))0 L1 G) X0 T) B0 a2 v
  272. (defun c:drt () (command "DRAWORDERCTL" pause "Integer" "" "" )(princ))
    . z3 |: ]5 k  S
  273. (defun c:ip () (ssget) (command "print,_plot" ))(princ)
    . f- o9 p: r# \# B

  274. ! q, a9 ~; f# @/ u1 U
  275. (defun c:ddm () (command "ddlmodes" pause))
    ; p- U+ N4 L: u# D5 Q, H

  276. $ w$ T7 j& G) T+ v1 i3 r0 ]9 ~4 f6 W
  277. (defun c:sha () (command "shade" pause))" m5 x* r$ D. _
  278. , ]5 \) l/ I& N7 g
  279. (defun c:sr1 () (command "surftab1" "p" "" pause))
    1 Q9 W) j- k8 d% o, v& Y2 X" |1 l% ~
  280. (defun c:sr2 () (command "surftab2" "p" "" pause))1 ^) e9 c, i8 A
  281. ' j) o; B8 [) c0 }, J% a. E6 E; Z
  282. (defun c:ad () (command "audit""y"))6 E. J- i* l7 b8 T" n+ o0 P! W
  283. (defun c:q () (command "quit"))
    - o0 Z# [% J0 k0 O
  284. # u. r; ^( \/ w! C% O5 F
  285. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30")): y0 T' `6 G( s% L# j: F0 J: c5 r
  286. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))9 t7 j" P5 L+ B7 z9 j# p* H. K
  287. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))
    2 ]4 s; s6 [/ h) b' }: X+ f  r
  288. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))
    9 l$ P5 r5 ^& r7 _
  289. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))$ g' B: y9 V8 V* I4 @3 M
  290. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))
    + O" I$ M! ^1 A% \3 v
  291. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))# t! U8 }4 H/ a' T- b
  292. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    * U! h! u* I  Y; p+ c' @7 ^
  293. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))+ U' N# h2 h* K  T& Y$ k, t0 D
  294. . n% ~5 b! H0 b6 d4 Y
  295. (defun c:u3 () (command "ucs""3"))
    / M6 Y5 _5 v8 B4 n, X3 H7 U9 Z5 r
  296. (defun c:ue () (command "ucs""o""end"))5 @' F, V- `4 I: v0 Y6 c
  297. (defun c:ui () (command "ucs""o""int"))
    5 q1 Z( i- y8 d5 |4 ]  J
  298. (defun c:um () (command "ucs""o""mid"))
    & S0 F# n) g  j/ o9 J! F
  299. (defun c:uc () (command "ucs""o""cen"))
    & K: c0 D% {  a4 P3 P0 R
  300. (defun c:uq () (command "ucs""o""qua"))
    ) @! e( Y$ i/ ~  z' m, g
  301. (defun c:3s () (command "ucs""3"))+ z- N5 g2 _5 z2 n1 O
  302. (defun c:sx () (command "ucs""s"))
    9 r% n  ~2 b% h7 D
  303. (defun c:sf () (command "ucs""o"))1 o; ^9 ]! d2 n  l% Y& h# z. I
  304. (defun c:sz () (command "ucs""p"))) d7 E& r2 F9 o
  305. (defun c:sr () (command "ucs""r"))
    # U# y! W! u0 X5 Z0 y
  306. (defun c:sw () (command "ucs""w"))
    5 A( J$ V7 _) ?$ u7 S
  307. (defun c:fv () (command "ucs""v"))
    ) E1 ]5 X% A, u, x
  308. (defun c:ux () (command "ucs""x"))
    7 S' O+ u$ U1 h; m# W$ c5 z6 e. |
  309. (defun c:uux () (command "ucs""x""90"))
    # g" n: N  P0 O) U6 N* H. y" a9 Y
  310. (defun c:xxu () (command "ucs""x""-90"))* |8 F% c: y2 u1 [" |) Q; t
  311. (defun c:uy () (command "ucs""y"))
    % b& w& Y! r3 K1 Z3 z
  312. (defun c:uuy () (command "ucs""y""90"))
    7 T* o- r: q9 }# M8 r+ D
  313. (defun c:yyu () (command "ucs""y""-90"))
    ) @. O6 u! i! Q1 X9 T3 r# z
  314. (defun c:uz () (command "ucs""z"))7 N/ Y% w1 [5 ?! o
  315. (defun c:uuz () (command "ucs""z""90"))
    9 u$ X# K; }1 |; M
  316. (defun c:zzu () (command "ucs""z""-90"))% C8 |( h+ y& G4 b# C
  317. (defun c:uci () (command "ucsicon" "Properties" ))(princ)& ~" x' A! H# S5 n2 j+ E; J
  318. (defun c:ucm () (command "ucsman" ))(princ)' G; N% j- N" e  x! j% J& O4 ]

  319. 5 t1 d$ g: V5 i7 e& s
  320. (defun c:sa () (command "vpoint""_non""-1,-1,1"))
    " U9 l  e+ ]# G
  321. (defun c:sd () (command "vpoint""_non""1,-1,1"))
    % J; q2 z! R1 i! B5 U( o
  322. (defun c:se () (command "vpoint""_non""1,1,1"))5 M5 c  u; P: K  [/ y! _
  323. (defun c:sq () (command "vpoint""_non""-1,1,1"))
    3 b0 t: s3 N6 |0 C8 g- G
  324. (defun c:vc () (command "plan"""))
    ! a0 V1 }- `: A6 x# S6 W8 @
  325. (defun c:vd () (command "dview""all"))
    2 ]/ {. n0 k  {& |+ I: H

  326. + L2 Y2 x% ]  @5 f
  327. (defun c:TT0 () (command "tilemode""0"))
    $ R: ?) e# ^  E! k& F2 F7 Z* d
  328. (defun c:TT1 () (command "tilemode""1"))" y. u, o/ v! Q9 M4 u& R
  329. ( F/ x& E- l8 I
  330. (defun c:vt () (command "vpoint""_non""0,0,1"))
    ; L$ S0 u: W1 |% n6 Y, O' {
  331. (defun c:vb () (command "vpoint""_non""0,0,-1"))) i2 S/ }+ N2 E; X# b
  332. (defun c:vl () (command "vpoint""_non""-1,0,0"))
    0 [( y6 o* ^9 o2 C
  333. (defun c:vr () (command "vpoint""_non""1,0,0"))) v- o8 y) w1 e) ?
  334. (defun c:vf () (command "vpoint""_non""0,-1,0"))
    " F! C7 J# V, j$ g* w1 @. Z# M0 {
  335. (defun c:vk () (command "vpoint""_non""0,1,0"))3 I% ~+ c1 g' r/ ]  B2 D
  336. 9 C) l. X$ d. n/ r4 U( `
  337. (DEFUN C:MM  () (COMMAND "MIRROR"))
    9 P' R7 N- ?8 C7 O
  338. (DEFUN C:MP  () (COMMAND "MOVE" "P"))
    * x3 m7 {' w- K# ?7 R0 k+ L: Q
  339. : ^6 |6 {; N" J5 ]$ p
  340. (defun c:mee (/ a)
      g! M) M* t7 B0 C
  341.   (setq a (ssget))(command "move"a"""end"pause"end"))
    1 ^0 \6 o$ T/ a/ m
  342. (defun c:mc (/ a)
    5 I7 R7 |. ^4 x4 c9 B: k5 J
  343.   (setq a (ssget))(command "move"a"""cen"pause"cen"))
    . W( \8 r  Z+ ]9 _& n
  344. (defun c:cc (/ a)
    ) U2 Q; t" I1 N
  345.   (setq a (ssget))(command "copy"a"""m"))
    8 C, @* M* U* a* x& }( B. Z6 k' K
  346. (defun c:ce (/ a)% B0 J0 n, a( U9 B) e2 L+ {4 A0 s
  347.   (setq a (ssget))(command "copy"a"""m""end"pause"end"))
    5 j: X; ~1 Y9 i: i- k# t: _
  348. (defun c:cn (/ a)
    6 C) O: d% L. g! @7 f1 ?: |" i
  349.   (setq a (ssget))(command "copy"a"""m""cen"pause"cen"))6 w6 C* h+ B- @
  350. (defun c:tl ()(command "trim""l"""))6 X7 k, R: M" x) T( ~/ r1 h
  351. (defun c:tf (/ a)( R4 x0 I9 b' ^9 E" u- ~" g# ?
  352. (setq a (ssget))(command "trim"a"""f"))$ O' @. n: s6 T, C5 h
  353. (defun c:el ()(command "extend""l"""))" y1 ]' s- {5 O; \  d8 x+ t8 t
  354. (defun c:ef (/ a)& T( P4 K3 r" ]! Q- @3 A+ r' n9 V
  355.   (setq a (ssget))(command "extend"a"""f"))( Z; f1 \* ^9 w( H5 L

  356. 4 @+ `$ t2 I3 h: D; m
  357. 0 g% T9 J- S( A# d( `
  358. (DEFUN C:110   ()(princ "\nChon doi tuong can offset ra 110.......") (COMMAND "offset" "110"))
    0 x3 H3 w1 a2 H
  359. (DEFUN C:220   ()(princ "\nChon doi tuong can offset ra 220.......")(COMMAND "offset" "220"))% t. F  T: U; x4 U$ h0 ~
  360. (DEFUN C:330   ()(princ "\nChon doi tuong can offset ra 330.......")(COMMAND "offset" "330"))+ M! p5 I3 C; ?! W1 e' e9 Z
  361. (DEFUN C:400   ()(princ "\nChon doi tuong can offset ra 400.......")(COMMAND "offset" "400")); w9 D+ Z5 ^8 @6 [, l
  362. (DEFUN C:55   ()(princ "\nChon doi tuong can offset ra 55.......") (COMMAND "offset" "55"))9 D5 a7 O  Y7 D9 X& ?! \
  363. (DEFUN C:600   ()(princ "\nChon doi tuong can offset ra 600.......") (COMMAND "offset" "600"))
    $ p4 A: Y2 \2 j1 t8 F
  364. (DEFUN C:700   ()(princ "\nChon doi tuong can offset ra 700.......") (COMMAND "offset" "700"))& `& Z2 L% p4 q1 B
  365. (DEFUN C:800   ()(princ "\nChon doi tuong can offset ra 800.......") (COMMAND "offset" "800"))
    . x8 B: A' e2 ?/ B( \) n  \9 u
  366. (DEFUN C:900   ()(princ "\nChon doi tuong can offset ra 900.......") (COMMAND "offset" "900"))1 B" S. L6 g  T: j& X' C
  367. (DEFUN C:1200   ()(princ "\nChon doi tuong can offset ra 1200.......") (COMMAND "offset" "1200"))
    - m  O  y% t( _$ T# F
  368. (DEFUN C:1500   ()(princ "\nChon doi tuong can offset ra 1500.......") (COMMAND "offset" "1500"))2 E" d: A5 q  k- u% a
  369. (DEFUN C:1800   ()(princ "\nChon doi tuong can offset ra 1800.......") (COMMAND "offset" "1800"))
    ' W; [- B2 h8 s8 v( }; i
  370. (DEFUN C:2400   ()(princ "\nChon doi tuong can offset ra 2400.......") (COMMAND "offset" "2400")). Z# s/ L' E* v$ C5 q0 M( a
  371. (DEFUN C:3000   ()(princ "\nChon doi tuong can offset ra 3000.......") (COMMAND "offset" "3000")), V: v* U" d+ N- h6 {9 b# K
  372. (DEFUN C:3600   ()(princ "\nChon doi tuong can offset ra 3600.......") (COMMAND "offset" "3600"))- t4 ?7 L/ r- K1 a$ `( L& G% i
  373. (DEFUN C:4200   ()(princ "\nChon doi tuong can offset ra 4200.......") (COMMAND "offset" "4200"))
    ; E' `/ c' n* F- j3 j
  374. (DEFUN C:5000   ()(princ "\nChon doi tuong can offset ra 5000.......") (COMMAND "offset" "5000"))
    - ^4 g; Y' P$ h& U( b( w9 `, Q
  375. # A' [$ d+ ~5 a. g
  376. (defun c:mla () (command "-mledit""av"))" R4 P, @3 e7 V9 D
  377. (defun c:mlc () (command "-mledit""mc"))
    , F( ^1 L' ^2 C1 r3 p7 }. G
  378. (defun c:mld () (command "-mledit""dv"))# i% V4 Z6 i7 D
  379. (defun c:mle () (command "mline""end"pause"end"))
    ! g; T/ `7 h% s8 x' o
  380. (defun c:mli () (command "-mledit""ca""int"pause"int"))
    * T# z* g" V: t+ V
  381. (defun c:mlj () (command "-mledit""cj"))
    9 H( X. j1 q; c* h
  382. (defun c:mlt () (command "-mledit""mt"))* g' a  r: H- ~5 Z% i9 D" w, o
  383. (defun c:mlk () (command "-mledit""ca""end"pause"end"))
    ; b3 [. d; G3 l/ J' s8 W
  384. (defun c:mlw () (command "-mledit""wa"))$ A# g# @( p( J5 O, m: `

  385. & C9 x! W5 n$ C" }# d  T$ p
  386. (DEFUN C:DCA () (COMMAND "DVIEW" "all" "" "CA"))
    1 l" {, ]% Y( x# Y
  387. (DEFUN C:DPA () (COMMAND "DVIEW" "all" "" "PA"))& Q" |1 m4 R8 H7 n" d
  388. (DEFUN C:DPO () (COMMAND "DVIEW" "all" "" "PO"))
    : s% s9 G; B6 n& D
  389. (DEFUN C:DDD () (COMMAND "DVIEW" "all" "" "D"))
    $ \5 m2 i2 J  E6 _" i9 }7 p' F1 O
  390. (DEFUN C:DZ  () (COMMAND "DVIEW" "all" "" "Z"))
    - P) ^" l& V* V

  391. + ?" t7 S4 b3 N& u1 M% {6 f( w
  392. (defun c:p0 () (command "pline""""w""0""0"))' j1 Y& y" X5 n! Y9 [- `  ^
  393. (defun c:ot  () (command "offset""t"))5 j8 J: a4 T. n9 x* O  K
  394. (defun c:t  () (command "mtext"pause"j""bl""h"pause))% k1 S7 [$ y% M: }  i! Q
  395. (defun c:uo () (command "ucs""ob"pause))* |' D2 P1 r( D# ^! h
  396. (defun c:f0 () (command "fillet""r""0"))/ p5 ]( @* o8 p1 T
  397. (defun c:fr () (command "fillet""r"))% X. Y9 F" j( l( t2 S
  398. + P  g' O; `. ?2 _0 ?
  399. ;CHAMFER, K/ u1 P' Q# G$ O0 S2 F: G. P
  400. (defun c:cf () (command "chamfer"))
    ' o! ^# X' Q5 Q( E# s/ y
  401. (defun c:cfd () (command "chamfer" "d"))  d- U1 i3 @2 ^$ O: I
  402. (defun c:cf0 () (command "chamfer" "d" "0" ""))
    ! `/ K! |* F, [7 L1 _8 g6 _' h

  403. # q0 L5 H0 u0 F, d# `; b! a4 C
  404. ;FILLET
    6 t/ e+ R9 f' ?& c' g/ P; d
  405. (defun c:f () (command "fillet"))5 e1 h0 j+ q3 U
  406. (defun c:fr () (command "fillet" "r"))  t# Q( S8 B: l' Y
  407. (defun c:f0 () (command "fillet" "r" "0"))) W) B! D$ q  b, b
  408. 9 R6 }( l  o9 w
  409. (defun c:OO  () (command "oops"))
    ) H6 I2 g1 T& o) X2 B4 x
  410. (defun c:dln  () (command "dimlinear"))7 w1 P- A3 e- T: @
  411. (defun c:dan  () (command "dimaligned"))
    8 r7 T: Z, W% _) q
  412. (defun c:ddc  () (command "dimcontinue"))  y& b( t- g* b
  413. 1 O/ r: \; z' j6 e" a' l' W
  414. (defun c:sc () (command "scale" "auto"))5 u& X# H% z2 f4 c" G7 l
  415. (DEFUN C:XO  () (COMMAND "snapang"))
    2 W) Q; z/ w- ~" k+ s
  416. (defun c:cc (/ a)
    4 n& W$ F/ T, C) @( q9 ^2 a
  417.   (setq a (ssget))(command "copy"a"""m"))
    1 P8 D/ a2 s. M  B
  418. 4 k7 j8 I' b6 p/ X2 a/ x' _
  419. (defun c:PJ (/ a)' A& t( D: y! o$ O$ A" p: j& O- z
  420.   (setq a (ssget))(command "pedit"a"""j""all""y"))* ~& F4 K& e  s5 W
  421. (defun c:JJ (/ a)
    & T* O6 ], I  I  m
  422.   (setq a (ssget))(command "pedit"a"""j""y"))
    * h! p- N$ `) W' W% {5 B
  423. (defun c:TN (/ a)1 ?  p; I* n9 Z6 A' s( R2 s
  424.   (setq a (ssget))(command "change"a"""p""T"))5 m! K  {) F8 f( L
  425. 6 v4 c) Z/ Q; }4 e' Q: ?

  426. , d# A4 g$ ~0 h" {3 N
  427. ;=======================Tran Ngoc Thang - Tu nam 2000 - Hoc nam cuoi KTS . DHXD=========================7 Z0 R/ q1 l% ^0 U) U( M
  428. & q: U0 h. K' ~  X2 B: p1 L
  429. (defun C:IB ()(setvar"cmdecho"1)( N9 _, _" ^  H6 ?
  430.   (setq pt(cadr(entsel"\nSelect Block:")))8 M7 I% I. m- b4 W; ?
  431.   (setq e1(ssget pt)) 6 Y; y% ]- X' \! L: v3 z
  432.   (setq e2 (entget (ssname e1 0)))6 {' m4 k) [+ \# A" i. W  T- q
  433.   (setq blname (cdr(assoc 2 e2)))
    - |; w( ?9 p% g8 C- e" X+ ~
  434.   (setq oer *error* *error* err2)(command ".insert" blname))3 o7 _. b6 P; @, w

  435. 7 e- j( e$ R7 T$ |7 F
  436. (defun c:II ()
    0 b0 D$ W5 F7 r3 u  W" b) j
  437.     (setvar "cmdecho" 0)3 y% n; P! M: G/ B( f/ Y* C
  438.     (setq olderr *error* *error* myerror)/ j* X0 @4 t. w6 j
  439.     (prompt "\nSelect objects: ")/ @6 z5 o9 D: R
  440.     (command "select" "au" pause). |& H' A, g, p! e
  441.     (setq sstxt (ssget "p")( \) Q0 M3 ~+ f( @  o
  442.           sslen (sslength sstxt)2 L5 R2 `9 z4 p+ D# _
  443.           ctr 0
      o/ I8 n; ]% s0 `+ Q/ @8 M
  444.     )
    1 C% z4 k: X9 Z8 C, y* U" N& D
  445.     (command ".undo" "mark")
    . l2 t7 E8 I+ l2 y
  446.     (while (< ctr sslen)" E- R( B! A" n5 L- i( E% y
  447.            (setq listxt (entget (ssname sstxt ctr))
    2 L3 ]  U$ D2 T0 o$ U5 \
  448.                  txttxt (cdr (assoc 1 listxt))
    " ^+ I4 K- N  B( g4 V
  449.                  enttxt (cdr (assoc 0 listxt))
    ' l. W3 @5 N& E+ ~! t$ C
  450.            )
    1 Z8 X% Y( I1 T/ E
  451.            (if (= enttxt "TEXT")
    + @% n3 a' S' @. \
  452.                (progn
    7 R& N) ~4 B( k9 R
  453.                    (setq testxt (substr txttxt 1 3))* P0 {- [; S+ s( }, [
  454.                    (if (or (= testxt "%%C") (= testxt "%%C"))
    : q9 M! \0 j4 H$ \7 @% |! p$ S  z/ V) e" b
  455.                        (setq newtxt (substr txttxt 4))8 P, d+ B$ p' C' k  |
  456.                        (setq newtxt (strcat "%%C" txttxt))
    . v' U. t6 a4 E( G& Y5 h, W
  457.                    )
    3 E8 O7 H$ N/ j
  458.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    % W/ I' n! E7 t2 s
  459.                    (entmod listxt)
    : G# l- a  ]) V7 O
  460.                 )" E) _' R9 @( w
  461.             )
    1 |4 F6 j( g5 H7 D% `0 \: {9 W* b
  462.             (setq ctr (1+ ctr))& l2 b0 Y6 l% k* O- l
  463.     )7 `6 r; j, S8 A% u
  464.     (setq *error* olderr)
    3 [% N. `3 s2 u% n* |3 n. L7 E$ `% K
  465.     (setvar "cmdecho" 1)
    , A6 A% j8 R6 Y( c  J6 q4 R
  466.     (princ)
    8 \' T, `/ I/ x# \' z4 [
  467. )
    ! S( `6 b) l8 y3 q
  468. " h7 E2 @7 ~, u
  469. (defun c:DG ()
      D" M8 T  I/ X8 L2 G
  470.     (setvar "cmdecho" 0)2 b$ @% |7 |" n' n; Y
  471.     (setq olderr *error* *error* myerror)
    ) |4 e- g" P7 v; v* L7 n
  472.     (prompt "\nSelect objects: ")% L  \) [5 f& D
  473.     (command "select" "au" pause)
    + g/ l/ a. _1 K0 |
  474.     (setq sstxt (ssget "p")
    & N- t* Q/ F1 e# l/ j% t( [
  475.           sslen (sslength sstxt)
    " p: c0 q& L4 M" [: |2 P. [
  476.           ctr 0
    6 t' i) n; s7 ^7 b5 X
  477.     )
    ; p2 E" k/ Z" r7 X4 E+ ?
  478.     (command ".undo" "mark")
    $ l1 A" ~4 M1 x: _
  479.     (while (< ctr sslen)
    / u& U9 F9 p8 t/ K! z7 w
  480.            (setq listxt (entget (ssname sstxt ctr))" r8 M3 f/ G- m0 [3 B( ?
  481.                  txttxt (cdr (assoc 1 listxt))
    " n5 {) F- |/ g
  482.                  enttxt (cdr (assoc 0 listxt))/ k$ a. ?; I, z
  483.            )# }# U) t, O* |) ?
  484.            (if (= enttxt "TEXT")
    / u% U; q( `) K
  485.                (progn
    ' k4 ?( |+ U$ t, Y5 j3 S" g
  486.                    (setq testxt (substr txttxt 1 3))
    : a; a1 |8 F$ J  m5 R
  487.                    (if (or (= testxt "%%d") (= testxt "%%d"))
    2 h/ k# n; z' F) w
  488.                        (setq newtxt (substr txttxt 4)): ]& c: x( ^0 a% {: C" V
  489.                        (setq newtxt (strcat txttxt "%%dC" )), e0 \: l8 f0 `5 R1 B! m) v
  490.                    )
    / ^1 j2 b4 D& S
  491.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    & f. M+ i; A, T0 {& Z; Z+ ]
  492.                    (entmod listxt)
    - N* D$ n, @& v7 ~* Z) t$ x! w
  493.                 )$ R% @  m7 G3 ?8 ?5 i3 A
  494.             )" w# J, D5 g: M3 y
  495.             (setq ctr (1+ ctr))
    6 x( y# O2 L, L
  496.     )
    9 ]. q, [- K( |- k# P! }& M
  497.     (setq *error* olderr)! y1 h% e  r) h! l! f7 i9 k* p
  498.     (setvar "cmdecho" 1)
    - n; T9 I( g5 F  `1 M8 \
  499.     (princ)% c& ~3 [, r" P  j/ Z( e
  500. )- C* Y  h- _# l7 e5 F
  501. % K1 H' z& i. c' F2 A. E) C0 y
  502. (defun c:PI ()
    1 ?. J4 J& P' }
  503.     (setvar "cmdecho" 0)- k6 F. A1 P6 X
  504.     (setq olderr *error* *error* myerror)
    9 E4 I; y  e7 X, k" h
  505.     (prompt "\nSelect objects: ")1 b. F4 l8 r1 D; p( J9 @! G
  506.     (command "select" "au" pause)! A& e$ Y2 n! S
  507.     (setq sstxt (ssget "p"); u. ]9 Y5 O6 H- k$ |
  508.           sslen (sslength sstxt)) ?8 y5 U9 U' {. L6 Z4 y( r
  509.           ctr 0
    4 u; T: \: G# ^% ~
  510.     )9 y" J6 ~' w- @
  511.     (command ".undo" "mark")- F! ^$ I, W' V/ d7 ^2 ^$ B  l
  512.     (while (< ctr sslen)5 d4 w7 B/ V% w" o
  513.            (setq listxt (entget (ssname sstxt ctr))
    * _( C) b' }, S/ v
  514.                  txttxt (cdr (assoc 1 listxt))+ _- Y7 [( f1 g/ ~
  515.                  enttxt (cdr (assoc 0 listxt))0 e4 q- @; O/ [2 D* Y* P: l5 q
  516.            )
    * [- W. a+ b" P
  517.            (if (= enttxt "TEXT")
    1 V0 B* A( @* v, X4 d* q5 |$ |' m
  518.                (progn
      q- F# s; B  {1 x9 C
  519.                    (setq testxt (substr txttxt 1 3))6 r9 d4 {+ b! u7 \3 a/ G
  520.                    (if (or (= testxt "%%p") (= testxt "%%p"))- r2 ]) C! Q  t% _: {9 D
  521.                        (setq newtxt (substr txttxt 4))
    5 E% u- _3 R. y8 J
  522.                        (setq newtxt (strcat "%%p" txttxt))7 v  w# m  R# Q1 @2 O) b& ^
  523.                    )  W& c/ |' t" Y2 M& z/ n
  524.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt)). A% x; ^. `% w* U& a1 O" S# ~8 |
  525.                    (entmod listxt)
    7 ?4 n) x8 @$ D  N9 Q7 G
  526.                 )
    " s( Q( R4 L+ U. H
  527.             )
    1 k+ }( s8 u# u$ H: `" z
  528.             (setq ctr (1+ ctr))
      a) z) R5 V; c) g' q2 K
  529.     )
    9 i/ U* s  l- K
  530.     (setq *error* olderr)
    ) L& E0 r9 _( v' C
  531.     (setvar "cmdecho" 1)% P; b& y2 O: [
  532.     (princ)
    ! Z( M5 q/ H6 g* _* U  o. u
  533. )9 b+ K7 e" l( ~) h, N3 B

  534. 1 b' J& n0 I* C& v' I' y
  535. (Defun c:CB (/ a)% r" F: Q, m+ W4 s, c3 M
  536.    (setq olderr *error* *error* myerror)+ \' \4 a+ l9 O# Q, o8 D
  537.    (setq ocmd (getvar "cmdecho"))
    ! R  g1 v( t- H8 u( o: C' _2 N
  538.    (setq oblp (getvar "blipmode"))
    : }8 [& \- E5 y3 z0 |1 N. F
  539.    (setvar "cmdecho" 0)
    & w2 q' Q* x2 i5 v7 c9 e
  540.    (setq a (ssget))
    # u4 ~6 o1 K% V6 W! U5 j( H$ @- j
  541.    (command "CHPROP" a "" "C" "bylayer" "")) g7 [5 C  ?6 w% |$ i
  542.    (setvar "cmdecho" ocmd)
    ( r% Z9 @/ }9 ?5 a8 y6 L
  543.    (setvar "blipmode" oblp)* I4 s- E1 `# K8 X
  544.    (setq *error* olderr)& T/ v; w: x" j3 E# O  b8 n1 f9 D: j
  545.    (princ)
    * t  O- `) B. c( w1 Z( s
  546. )) u. L5 U, t. i" W

  547. : A" T' g. G8 e" ]5 X
  548. (defun c:LCC (/ co43 obj23 la23)
    0 ^$ N% v" I9 q2 x* p; Z
  549.    (setvar "cmdecho" 0)
    2 L3 u7 N( \- N& t( o! _
  550.    (setq co43 (getstring "\nNew color : "))
    6 C: ^5 V) l- z' y/ V7 w4 b) o$ q. \2 T- d
  551.    (setq obj23 (car (entsel "\nPick object on desired layer: ")))* O$ w* E" U; n* E- v  Q7 o7 W
  552.    (if obj23 (progn
    3 Z& q, p) b/ P- D, d" |
  553.              (setq obj23 (entget obj23)); C$ r# }1 Z9 z1 P4 h  z) Z5 G  K, h
  554.              (setq la23 (cdr (assoc 8 obj23)))
    0 N) j; W3 U: i$ y8 M
  555.              (command "layer" "c" co43 la23 "")+ M  E! I" ?1 W
  556.           )
    # x! G% `* c1 h! Z" e$ ]4 M" B
  557.     )1 V: N/ {. f& D" G0 b# r: g
  558.    (prompt (strcat  "\nLayer has changed..." la23))9 ?, x$ J6 t% J! t; B' @  ]4 t' {$ C
  559.    (setvar "cmdecho" 1)
    & U; S% V0 O% M% T! m- K& v$ c
  560.    (princ)( G2 K7 r9 k: ~, b# T
  561. )  + J! [5 w7 r7 Q0 I" N1 s  _$ E
  562. 1 _: I% {- i2 {! @$ U
  563. (Defun c:RP (/ a)
    2 _+ W' h% F: B( ?5 p
  564.    (setq olderr *error* *error* myerror)
    # L% c- ^6 i8 ?% `& h+ I
  565.    (setq ocmd (getvar "cmdecho"))) P8 B9 H. U- q; B3 I  v) T( h+ V2 L
  566.    (setq oblp (getvar "blipmode"))
    4 T: |+ d7 ?$ J
  567.    (setvar "cmdecho" 0)
    4 k8 ~1 g# b: t  f
  568.    (prompt (strcat "\nUSE: Delete object(s) belonging to"
    8 S4 ]8 f7 E# S
  569.                    " the layer of the entity picked...!"))9 `4 J) c% ]2 M0 ~4 P8 t
  570.    (setq a (entsel "\nPick the entity with the desired layer to delete: "))
    2 M: N2 ^9 @8 E0 o- l  A
  571.    (if (/= a nil)
    ( u8 [- ~- F& i) S1 {
  572.       (progn (setq a (cdr (assoc 8 (entget (car a )))))  m$ h8 _# U9 V3 o+ L
  573.       (command "Erase" (ssget "x" (cons (cons 8 (eval a)) tempword)) ""))
    6 c8 I+ `: h( D: `6 s
  574.       (prompt "\nNo entity selected!"))
    % l# C( Q* c8 S/ L1 s3 `" g2 W
  575.    (setvar "cmdecho" ocmd)
    , E8 j, D% I/ \- E1 W  Y/ ?
  576.    (setvar "blipmode" oblp)
    . |+ i+ e  x  h5 |1 X8 u. g* |3 Q
  577.    (setq *error* olderr)8 z+ ~/ D6 e0 _$ {
  578.    (princ)) w0 E, y& L* ~# [
  579. )
    " _  B0 P, }  R3 }2 O2 }9 I4 c

  580.   H* E  d4 V, \+ \. ?# I8 ?
  581. (DEFUN C:WL(/ SSET NET SSL M)2 e& \2 Y& c3 K7 h: |
  582.    (PRINC "\nSelect lines :")
    ' ]( _/ k/ V6 W1 W7 ^6 g  W* v* ?
  583.    (SETQ SSET (SSGET))
    $ |1 V) Z  u: w* I9 p7 Q9 z
  584.    (IF (/= NIL SSET) (PROGN
    ' I* ~# C7 O% w
  585.    (SETQ SSL (SSLENGTH SSET))
    : X4 Q  L& K- ^! @7 E7 s8 \( e
  586.    (INITGET 4)  ]- w4 x7 n0 J$ L) P+ e
  587.    (SETQ NET (GETREAL "New width : "))9 y6 P: `$ S/ {4 ~; q1 r! H, \
  588.    (IF (/= NIL NET)9 e2 |% X$ ?" |; q9 u( ~. v
  589.     (WHILE (> SSL 0)
    / f8 X; H# T+ L* C8 h- F- n
  590.       (SETQ M (SSNAME SSET (SETQ SSL (- SSL 1)) ))
    $ {# K/ U% Z# l. q
  591.       (IF (= (CDR (ASSOC '0 (ENTGET M))) "LINE") & ]8 f% p7 E8 k# c+ h9 R8 g9 K
  592.           (COMMAND "PEDIT" M "Y" "W" NET "") 9 ]* H, T) n- b
  593.       )
      f( i4 g$ K0 H
  594.     ) ) g7 K5 |  Y9 @5 H2 o
  595.    )))# g# t. Q$ C- m* s. b
  596.    (PRINC)
    $ l& i, o' }1 x: C1 t3 Y
  597. )
    4 ?7 A" G5 X2 ^4 b
  598. " p' F8 z! p4 X  N# [
  599. (defun C:MML ()
    1 t; t3 Z' v, }" H" ^
  600.   (princ "\nSelect objects to move to another Layer.")$ u& \9 ~: U* T: P
  601.   (setq ss (ssget))
    & z4 u" O+ B) H  u: d; [2 L2 u
  602.   (SETQ UL1(GETSTRING "\nLayer to move entities to : "))
    1 q8 q6 d+ R6 S7 }3 F' `- }
  603.   (setq counter 0)
    " g) i2 A! J% e, v
  604.   (prompt "Moving to layer.....")(princ ul1): ~0 Z1 p* a2 j9 h- x3 _4 v
  605.   (setq e (ssname ss counter))& N3 z& c* f1 f
  606.   (setq l (cdr (assoc 8 (entget e))))
    - V6 A, @6 X. r- K2 U0 _
  607.   (setq S (ssget "X" (list (cons 8 l))))6 n& Y7 t/ D$ D3 z9 y% Y
  608.   (command "CHANGE" ss "" "P" "LA" UL1 ""), y9 l' v# z) e. t
  609.   (setq counter (+ counter 1))7 i; T! S+ @" n  Z6 B) q8 l0 U
  610. (princ)
    8 i8 w  K9 W/ ?
  611. )
    7 w* W$ q  Y# a
  612. . ?& W3 Q. X4 P: R3 R
  613. ;;; ================================ GHI CHU ============================
    4 r, M- A/ P! B6 p
  614. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    9 N& g/ ?5 I, E; k
  615. ;;; =======================Thuong Dung Font Romant.vnh===================% [0 x/ q( K. V5 c. b* W
  616. + b0 [: W9 i3 s& e$ x8 g
  617. (defun c:RS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)! ^& q# w4 y) Q. f9 e2 k
  618.   (setq oer *error* *error* err2)
    ! ~( X; s9 o3 }* k
  619.   (PROMPT "\n(UNICODE-Verdana)(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. (M)aster Bedroom. "), P3 _* V3 m/ \+ ?" q) o1 m( y( G
  620.   (SETQ Cpt(GETSTRING "\n (ROMANT-vnh)(DD).(SS).(LL).(CC).(OW).(KK).(BB).(MM). (UNKNOWN-font)(oD).(oS).(oL).(oC).(oww).(oK).(oB).(oM)."))
    + {3 D6 N7 s1 @+ ^8 R$ K( i/ i
  621.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nha`  Bê´p"))
    " k" M: D( t5 r
  622.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Pho`ng Vê? Sinh"))
    . O6 G$ Z; k* _" M, _; z+ a
  623.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Pho`ng  Ho?p"))
    ( L2 D( W2 E4 e" U3 B8 L; c
  624.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Pho`ng La`m Viê?c"))* Q5 `. b7 n; j, V
  625.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Pho`ng Ngu?"))
    - Q8 \1 [+ l% N: w4 L
  626.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Pho`ng Bê´p + An"))& |% L: H+ V0 N& u5 E# y+ Y
  627.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nha`  Kho"))# g( K% Q' |9 b- {6 D& ^: x
  628.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Pho`ng Ðê? Ðô`"))* Q# _6 |) e: f2 e
  629. / ^, r( @1 Q! w% o/ Y( `7 ?, k
  630.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))
    ; D% K2 m+ A2 {/ F+ ]
  631.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))
    . J. L& B- w7 ^8 [$ `
  632.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))
    ; K# ~1 K3 q$ ?: _1 _
  633.   (IF(OR(= cpt "OW")(= cpt "ow"))(SETQ CPT ' "Phßng Lµm ViÖc"))( e3 S) E. O5 H" l3 p
  634.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))
    + |7 j0 t& z& t; B
  635.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n")): {$ L/ L4 p- [% D2 Z
  636.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))
      i! N1 }: [' _( z! Z7 o8 H
  637.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))! V# x9 j! f! F' ^: _
  638. 6 `) f$ a+ N/ g: z$ }
  639.   (IF(OR(= Cpt "oK")(= cpt "ok"))(SETQ CPT '"NHA/F BE/M/SP"))
      A, k* V' u' [" K) _1 L
  640.   (IF(OR(= cpt "oB")(= cpt "ob"))(SETQ CPT '"PHO/F/NG TA/W/SM"))+ s( b2 n* ~9 @& e+ o, t6 k( o
  641.   (IF(OR(= cpt "oC")(= cpt "oc"))(SETQ CPT '"PHO/FNG HO/JP"))
    9 Y* C' E9 ?$ ~4 `6 X4 K
  642.   (IF(OR(= cpt "oww")(= cpt "oww"))(SETQ CPT '"P.LA/FM VI/E/M/JC"))
    0 e+ M7 X5 l/ X
  643.   (IF(OR(= cpt "oM")(= cpt "om"))(SETQ CPT '"PHO/FNG NGU/R"))4 f" h& i' _) _" s* M' M
  644.   (IF(OR(= cpt "oD")(= cpt "od"))(SETQ CPT '"PHO/FNG A/WN"))# \, i6 ?" _  |3 \$ r" D1 O/ a
  645.   (IF(OR(= cpt "oS")(= cpt "os"))(SETQ CPT '"NHA/F KHO"))* c- a! g5 E0 S
  646.   (IF(OR(= cpt "oL")(= cpt "ol"))(SETQ CPT '"PHO/FNG /DO/M/F"))
    8 E0 T' o  X" p$ N' W9 g' E
  647. (setq pta (getpoint; y. t) u. ]" k: @
  648.     "\nPick first corner. : "))
    & Q4 f3 V9 m5 k$ U, V$ M
  649.   (setq ptb (getcorner pta
    + ^. r3 g6 u9 X( n9 \2 v( p
  650.     "\nPick second corner. : "))& N" z  U$ t6 @' q/ ^4 [+ @4 ]. e. l3 r
  651.   (setq ptc (list (car ptb)(cadr pta)))
    . }5 ]0 b! Q4 N, N' q, b( N1 c
  652.   (setq ptd (list (car pta)(cadr ptb)))
    8 x) q# Y/ H& o5 x% \2 g
  653.   (setq ang (angle pta ptb))
    . G) A& ^! I; j
  654.   (setq d1 (/(distance pta ptb) 2))
    0 o2 |0 V0 C. Z/ e
  655.   (setq cp (polar pta (- ang (dtr 0)) d1))5 z* J1 g6 k) K, o8 B2 t: H
  656.   (setq X (distance pta ptc))* R* ?8 P1 ]& v$ K
  657.   (setq Y (distance pta ptd))
    0 m% R  L5 g; ^: B( x
  658.   (setq X1 (rtos x 2 1))/ [+ ~" F! n  y: E8 p9 Y; `
  659.   (setq Y1 (rtos y 2 1))
    # N1 Z  W+ _' L- M
  660.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))' j8 Q, d3 F9 n8 z* G. }( ]1 X
  661.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz)). H8 K8 D3 z& B7 q$ ^
  662.   (defun dtr (angg)% p6 k' a& c7 P' Q' _3 [# U
  663.   (* pi (/ angg 180.0)))- B0 V9 J1 I5 c' q) Y
  664. 2 l( h) m7 ]( J$ u! M
  665. (defun c:WS (/ pta ptb rmsz pl1)" \; ]  W/ \! l9 e. w3 u
  666.   (setq oer *error* *error* err2)6 T5 t) p1 M% K5 Q! t
  667.   (PROMPT "\n (RomanT.TXT)floorp(L)an.(E)levation.(S)ection.(M)planFoundation.(C)Found.(K).(P).")
      h. x6 H1 d5 O* |2 e3 z" a
  668.   (SETQ Cpt(GETSTRING "\n (VnHELVH.Vnh)(LL)floorplan.(EE)elevation.(SS)section.(BM)planFoundation.(CM)foundation.(KC)Structure.(PP)perspective."))# R# Q( j/ V7 X: I" B

  669.   {" G1 ^7 l( K4 V' o
  670.   (IF(OR(= Cpt "LL")(= cpt "ll"))(SETQ CPT ' "MÆt B»ng TÇng 1 : TØ LÖ - 1:100"))
    5 V. ]+ s% I) d+ m  o0 p2 B( p
  671.   (IF(OR(= cpt "EE")(= cpt "ee"))(SETQ CPT ' "MÆt §øng Trôc ?-? : TØ LÖ - 1:100")): O1 r3 T* C! Q- V7 x; C. a
  672.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "MÆt C¾t A-A : TØ LÖ - 1:100"))  e' y% r, y8 t) {& C7 t( V. E4 v8 \2 R
  673.   (IF(OR(= cpt "BM")(= cpt "bm"))(SETQ CPT ' "MÆt B»ng Mãng : TØ LÖ - 1 : 100"))
    ! \4 ~6 n+ d4 G' q! Z0 t
  674.   (IF(OR(= cpt "CM")(= cpt "cm"))(SETQ CPT ' "MÆt C¾t Mãng : TØ LÖ - 1 : 100"))
    : ]1 g  H( B. Y
  675.   (IF(OR(= cpt "KC")(= cpt "kc"))(SETQ CPT ' "KÕt CÊu Khung Däc Nhµ : TØ LÖ - 1 : 100"))4 P2 Y. O* E5 |& m- U% G( q8 D
  676.   (IF(OR(= cpt "PP")(= cpt "pp"))(SETQ CPT ' "Phèi C¶nh Mét Gãc Nh×n"))
    5 Y; i/ Y. U4 B% ~: ^
  677. $ v* C2 E& N1 W8 y* |& F$ I
  678.   (IF(OR(= Cpt "L")(= cpt "l"))(SETQ CPT '"MA/W/JT BA/W/FNG TA/M/FNG 1 : TI/R LE/M/J - 1:100"))1 n' Z8 W$ ~6 P
  679.   (IF(OR(= cpt "E")(= cpt "e"))(SETQ CPT '"MA/W/JT /D/}/SNG TRU/JC ?-? : TI/R LE/M/J - 1:100"))
    ( |; v1 D; ?2 u" t! c
  680.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT '"MA/W/JT CA/W/ST A-A TI/R : LE/M/J - 1:100"))! F! g! u1 v/ l2 ]4 G
  681.   (IF(OR(= Cpt "M")(= cpt "m"))(SETQ CPT '"MA/W/JT BA/W/FNG MO/SNG : TI/R LE/M/J - 1:100"))
    , J2 C3 c% J' O  h& S1 f+ U) j7 C
  682.   (IF(OR(= Cpt "C")(= cpt "c"))(SETQ CPT '"MA/W/JT CA/W/ST MO/SNG : TI/R LE/M/J - 1:100"))
    " a' a% k* e$ U0 |$ S: C
  683.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT '"KE/M/S/T CA/M/SU KHUNG DO/JC NHA/F : TI/R LE/M/J - 1:100"))
    7 O7 _8 H8 h8 ]4 g3 s9 j- J
  684.   (IF(OR(= cpt "P")(= cpt "p"))(SETQ CPT '"PHO/M/SI CA/R/NH MO/M/JT GO/SC NHI/FN"))8 c6 o; b. s- t. G, z2 d
  685. (setq pta (getpoint9 }7 p# [, `4 p. ?. g  \( f
  686.     "\nPick first corner. : "))
    ) V) k5 `# t, a7 L/ _
  687.   (setq ptb (getcorner pta* Z. v% j  M7 A" z. @- Q3 [
  688.     "\nPick second corner. : "))
      n* r) \8 `' |4 }
  689.   (setq ptc (list (car ptb)(cadr pta)))3 M% s! d4 H9 H: K" @, ?. s$ i
  690.   (setq ptd (list (car pta)(cadr ptb)))
    2 S: s) n8 ]2 H
  691.   (setq ang (angle pta ptb))! Z* ]7 T. @, r" G
  692.   (setq d1 (/(distance pta ptb) 2))- r7 W' e$ b: _1 d( n$ X
  693.   (setq cp (polar pta (- ang (dtr 0)) d1))/ Y* u& C0 y) N! t' S5 w; e2 c
  694.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))
    3 I$ g) |1 W) i# c6 r  ]" }
  695.   (defun dtr (angg)0 i$ L/ ^2 B- y+ ~. C* k5 ]
  696.   (* pi (/ angg 180.0)))
    . t8 b1 ~% Q* W, ^& m/ T
  697. * q" s/ [& j" s3 a) K
  698. ;;; ================================ GHI CHU ============================
    8 u  V6 z* _8 u. h. V  Z% E
  699. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    , E3 d5 @4 O- c# V  r2 S/ }
  700. ;;; =======================Thuong Dung Font Romant.vnh===================* F4 X; F/ k* ?( `" J

  701. : I/ P/ a2 U' Z' l  j6 Q
  702. (defun c:RRS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)
    & R  X# S' ]6 T" L# v
  703.   (setq oer *error* *error* err2)
    0 n% t" J% k7 X% j0 u
  704.   (PROMPT "\n(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. ")% W- v6 v- z& {' [  b
  705.   (SETQ Cpt(GETSTRING "\n(M)aster Bedroom. (DD). (SS). (LL). (CC). (OO). (KK). (BB). (MM). "))# U  K' h8 \. D) ^4 F. E  X  I
  706.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nhà B?p"))
    & H# e! C1 j# a: u' w
  707.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Phòng T?m"))
    " R9 ]9 D6 o7 `' N3 d) D- i+ s
  708.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Nhà H?p"))2 \/ Z/ ]: O: x
  709.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Phòng Làm Vi?c"))
    ( ~9 P3 E8 }8 @6 [8 t
  710.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Phòng Ng?"))9 L, z: Y, ~1 w( d/ J, c
  711.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Phòng B?p-An"))
    ; W' k' b, \' H% o+ i! M
  712.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nhà Kho"))
    ( W8 h& H; o" r5 @9 s5 L
  713.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Phòng d? Ð?"))
    ; F! y" P3 t) Y
  714.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp")). h! ]2 W8 C* R/ b
  715.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))
    ' U" S9 E* E2 }( S8 {
  716.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))
    6 v% A8 s* M) o& r4 ]7 w3 u& i6 G
  717.   (IF(OR(= cpt "OO")(= cpt "oo"))(SETQ CPT ' "Phßng Lµm ViÖc"))6 I) s% u/ e5 {( |/ w
  718.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))  V( \) U) }0 w( |. y. J7 x- p
  719.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))8 A% c7 v5 W' w: K+ c
  720.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))1 D0 b9 z& h1 U0 d" _5 \3 ]# U
  721.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å")) " X6 q$ q* L* b0 E* I
  722. (setq pta (getpoint
    & c! Q+ a3 Z8 Q+ q! K1 ~$ G8 m/ [4 s9 y* ~
  723.     "\nPick first corner. : "))
    2 U% m. i( l* p
  724.   (setq ptb (getcorner pta
    - Z" F) c4 X2 m7 ?
  725.     "\nPick second corner. : "))
    / }. y3 ~/ d5 F% B$ |* E
  726.   (setq ptc (list (car ptb)(cadr pta)))
    5 E* b0 K4 i! ~8 g* [
  727.   (setq ptd (list (car pta)(cadr ptb)))
    ! b# Z/ G! m/ Q7 q
  728.   (setq ang (angle pta ptb))
    4 u8 g4 Z8 y  S3 ?
  729.   (setq d1 (/(distance pta ptb) 2)): f( A$ z% Q4 l
  730.   (setq cp (polar pta (- ang (dtr 0)) d1))& V; m8 i) Z7 w" f( k& A" ]  N
  731.   (setq X (distance pta ptc))
    9 i- f: S& L) q! i5 g& u" Q6 C
  732.   (setq Y (distance pta ptd))
    ; U, y& M9 v6 d$ u$ P$ Z6 E
  733.   (setq X1 (rtos x 2 1))
      q6 z" R* T( {- }4 ~
  734.   (setq Y1 (rtos y 2 1))
    ! k4 w% a) ]0 C5 S9 \
  735.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))' {0 q6 A& Z6 B( g" C, n  R# N! I8 z
  736.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))" _6 k) |/ Z9 V* k& r- `3 t
  737.   (defun dtr (angg)
    8 }9 C8 D8 o2 n
  738.   (* pi (/ angg 180.0)))
    # i8 B1 e$ M  g1 R% D9 d* l8 c
  739. 4 A! I3 M8 H1 z/ s; E: n$ x6 `
  740. ;;; ================================ GHI CHU ============================
    2 P6 q8 R) ?( e
  741. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    ( g$ l# ]# ]) c/ R* m8 a
  742. ;;; =======================Thuong Dung Font Romant.vnh===================
    8 \1 b" ?1 x3 O$ B

  743. : J% l  L4 U. M7 ^
  744. (defun c:GS (/ a b c d). T; N6 S' d9 ]# c1 N
  745.   (graphscr)
    # ~0 g* w# K8 x8 r9 F+ m4 t
  746.   (prompt "\nSelect text to set style....")
    / i, _% d: M) b; t: S) Q
  747.   (setq a (entsel))- o6 d2 J! k1 Z
  748.   (setq b (entget (car a)))
    ) Q# a" X6 ~5 I/ a, B
  749.   (setq c (cdr (assoc 7 b)))
    9 u# V7 U3 ~6 s: E' n  X6 G
  750.   (setq d (cdr (assoc 40 b))): P$ l# b/ H) ?
  751.   (command "style" c "" d "" "" "" ""))! P4 ?$ L+ n# G) W# {
  752.   (princ "\nType GS to set text style.")- ~" Q1 L4 M$ t

  753. 2 ~6 Z* Z- }+ z5 h5 s
  754. (defun c:RC (/ olderr ocmd oblp pt1 pt2 pt3 pt4 l w)9 b$ f& V5 h% E* t4 ]4 ^9 O
  755.   (setq olderr *error* *error* myerror)5 G1 G# n! N8 E, U
  756.   (setq ocmd (getvar "cmdecho"))
    4 s- U: k7 O' }
  757.   (setq oblp (getvar "blipmode")): Z  ?; Z4 @: b5 x
  758.   (setvar "cmdecho" 0)
    9 \0 t& J  {' _+ V8 }  S. i
  759.   (initget 1)                         ;3D point can't be null
    & ^. v# |% Y2 Z/ Y# K
  760.   (Setq pt1 (getpoint (strcat "\nCorner of rectangle or square: ")))
    ) F, `5 O: ~7 i
  761.   (setvar "ORTHOMODE" 1). U5 a* N- h% c  Q; u
  762.   (initget 7)                         ;Length can't be 0, neg, or null7 p, G! K* z1 V1 b
  763.   (Setq l (getdist pt1 "\nLength: "))4 b+ i$ u( f- K! h
  764.   (Setq pt2 (list (+ (car pt1) l) (cadr pt1) (caddr pt1)))- R) y% \# g8 o7 _
  765.   (grdraw pt1 pt2 2)
    0 i* Y1 i' w& d1 T* t; N# [
  766.   (initget 7 "Square")                ;Width can't be 0, neg, or null
    , Z6 d3 a9 Q" v* g9 O
  767.   (setq w (getdist pt1 "\nSquare/<Width>: "))
    ) {5 H6 @! Z/ y2 F- n  Q
  768.   (if (= w "Square")
    6 d6 `' y" y3 {# _
  769.       (setq w l)
    ( v; l  v5 M: ?7 \2 z8 Q. U% Z
  770.   )2 E: s# D& B( r3 Y! V6 L
  771.   (setq pt3 (list (car pt2) (+ (cadr pt2) w) (caddr pt2)))
    # ]! c: E: {- G, l+ u
  772.   (setq pt4 (list (car pt1) (+ (cadr pt1) w) (caddr pt1)))" T  G( |9 d: B. o* b' d
  773.   (grdraw pt2 pt3 2)
    + B% ]2 j! A( g6 P
  774.   (grdraw pt3 pt4 2)
    0 u& v; f+ [" _4 p
  775.   (grdraw pt4 pt1 2)$ i1 B8 c. ^! f7 b# d% D
  776.   (setvar "ORTHOMODE" 0)
    ; S1 }. Y/ _$ z* _& R. M
  777.   (command "pline"  pt1 pt2 pt3 pt4 "close")
    8 ?. b0 ^9 V( U/ i
  778.   (setvar "cmdecho" ocmd)
      {; E" Z4 V% F4 M1 }2 r1 t
  779.   (setvar "blipmode" oblp)2 [1 N8 a* Y- c1 {
  780.   (setq *error* olderr)               ; Restore old *error* handler
    ; r* q$ \' R) b
  781.   (princ)7 g# o9 [) }/ u: V
  782. )) l% t8 Q6 m5 l4 Z, ~3 f. I- h( J

  783. , o$ A" V6 r! N
  784. (defun c:SG (/ ent pt1 pt2 ang)
    9 S3 c* ^5 s" O: U; I% f
  785.   (setq cmd (getvar "cmdecho")). j) l# w9 f0 E$ ]
  786.   (setvar "cmdecho" 1)
    0 w& Y* C! {$ u  i. H; H
  787.   (prompt (strcat"\nSnap angle will be set to angle of line"))$ }' \6 X, ~& g' _' M- i
  788.   (setq ent (entget (car (entsel))))+ w1 d! R! p1 `8 E+ d% {
  789.   (setq pt1 (cdr (assoc 10 ent)))4 k% j8 _. v4 I: A
  790.   (setq pt2 (cdr (assoc 11 ent)))
    3 x) B/ X2 t0 Z5 b$ d
  791.   (setq ang (angle pt1 pt2))% `* D( ~; X* R6 O) Z
  792.   (setq ang (/ (* ang 180.0) pi))
    3 N8 ?4 ^5 y# n1 n
  793.   (setvar "cmdecho" 0)
    " r$ s0 |( ^6 ?
  794.     (command "setvar" "snapang" ang)
    2 c% ?" [9 V! U: B/ X
  795.     (setvar "cmdecho" cmd)
    5 D, y; X4 W+ ~& Q; E2 `
  796. )
    : Z4 ^0 h# x, L9 u% v
  797. 4 j. E/ o' p9 N/ v: j8 g
  798. (defun C:TG ()
    + b* a: h+ F, S( [+ V% J4 b0 c
  799.   (initget "Increase New"); o5 O4 k! s" i, G; `
  800.   (setq ans (getkword "Increase/<New>: "))0 ~9 t6 \9 N/ O7 c4 b
  801.   (modang)$ e6 f9 c% ~2 Y& g* Y
  802. )
    & O4 N- \  J' d8 H! s! L
  803. (defun modang (/ ang ss ca e na ssl)
    . ~( Z0 ?0 U7 e% D
  804. (if (= ans "Increase")
    : m3 Z5 R; A5 o
  805.      (princ "\nIncrease angle for text by: ")& H9 S% W. k) D* ?4 G
  806.      (princ "\nNew angle for text: ")
    ; M" M- V. T! P% N0 r6 i
  807. )
    2 e3 z3 d$ V$ @" M4 p
  808. (setq ang (getreal))
    9 [/ o/ Z" a- h- m/ ~) @
  809. (setq ang (* (/ ang 180) pi))' A# V) ?5 p; {* ^
  810. (setq ss (ssget))
    . @  f2 L' {0 b4 h1 N
  811. (setq ca 0 ssl (sslength ss))- q# m, l' g6 m/ h0 S
  812. (while (< ca ssl)
    : T7 ?' D- q3 L
  813.   (if (= "TEXT" (cdr (assoc 0 (setq e (entget (ssname ss ca))))))) m# @3 f# L, h2 L; U
  814.    (progn( l' g/ A0 {3 n, A  G
  815.     (if (= ans "Increase")( }/ R8 B/ J3 G% B- s9 M' L
  816.         (setq na (cons 50 (+ (cdr (assoc 50 e)) ang)))/ l5 C8 I0 \( X; b5 a- s) p
  817.         (setq na (cons 50 ang))
    3 ~( I2 Z% b- P3 t$ _
  818.     )3 g2 ?( F3 Z0 _7 b( S
  819.     (setq e (subst na (assoc 50 e) e))) D0 w4 Q4 v# }
  820.     (entmod e)1 |. G. P* Q* v1 q$ z" R$ J( r
  821.   (setq ca (1+ ca))
    ! d+ a* T. l( m9 x7 K
  822. )$ I( t# f8 f; B' ]4 l7 V
  823. )3 s2 Z6 h  C3 T5 v5 U4 |+ P
  824. )" H( [9 t/ K4 x! u0 A( B
  825. (terpri)! R9 D. X  }+ a: C, d6 m
  826. )" v- Q5 q' m) Z7 d& T4 r3 V6 M3 ~6 L
  827. 1 Y' G, x0 B5 U& F! c* j
  828. - m  A+ T0 R+ g8 X, a
  829. (defun c:WL ()1 p! X/ k" O$ u5 Z, P6 t% c, R7 E
  830.   (setvar "cmdecho" 0)
    & k4 E$ t' G" G/ n' |
  831.   (setq a 1)
    * F. r0 _1 m1 Y: G7 v9 [% C
  832.   (prompt "\nSelect Polylines to change: "). W2 f! A  u' m: }
  833.   (while (/= a nil)
    $ O  B$ k. V+ W' e* {
  834.     (progn
    6 `. [4 `& L2 J0 |, d2 o
  835.     (setq a (entsel))
    # L6 h  P& e+ R4 S
  836.     (if (/= a nil)9 M* L% n3 J" h1 `' g
  837.         (progn
    0 N* o6 ^; ]4 w! ?! e! M
  838.           (setq b (entget (car a)))
    9 z3 R; [/ h) C1 K0 F, u, ]2 u
  839.           (setq c (cdr (assoc 40 b)))0 ]  A; }: x# X
  840.           (princ c)8 S+ {  G! }! o; N& j& L) s
  841.           (command "pedit"a"w""lw""")
    8 }0 `- ]. |! y% @8 X6 V
  842.         )))) 8 m+ G, |( y' O7 U. y
  843.   (princ)
    * b9 l. ^( n$ k. X; i
  844. )
    9 U; H+ C9 N9 H4 [0 ~% N& m" r
  845. - f! B1 h- _. M$ n0 H
  846. ;;; ================================ TEXT FIT ============================7 A. C; k( R( a

  847. $ U# G7 H, \2 ~. A
  848. (Defun c:FT ( )7 D% p2 U: }( o4 U2 A
  849.   (defun setsnapang (arg /) (setvar "snapang" (angtof (angtos (cdr (assoc 50 arg)) 0 8) 0 ))  )" G5 k1 @1 o) a2 T; l/ |) l' \
  850.   (Defun LL-xyz (arg) (CAR (TextBox arg))  )5 \2 h+ ]6 @! J' f& _) K4 @7 I& h. x
  851.   (Defun UR-x (arg) (CAADR (TextBox arg))  )5 S' d7 Q/ b5 p
  852.   (Defun LL-y (arg)     (CADAR (TextBox arg))  )
    7 H7 n7 k  Z2 V+ H& ~- a
  853.   (Defun LR-xy (arg)     (List (UR-x arg) (LL-y arg))  )
    . e+ y% ~2 j1 @) R) w0 o' A6 e7 V7 f/ C5 R/ L
  854.    (Setq ename (CAR (EntSel "\nSelect Text to stretch/shrink:"   )  )
    & H/ _# `3 f9 A; a3 g8 o; @
  855.       Textent (If ename (EntGet ename))   )   1 Q* Y+ n" @& B  I# I6 A8 B$ j
  856.    (If (= (CDR (Assoc 0 textent)) "TEXT")5 t8 m/ y, i% I0 v, w( H$ f4 g
  857.       (Progn (initget 0 "Start")3 u0 Y5 s8 o6 K2 B
  858.          (Setq  NewEnd  (Distance  (LR-xy Textent) (LL-xyz Textent) ) )" I8 U" w5 H, G: T1 R4 U* g
  859.          (setsnapang Textent)                 ;set snap along text entity
    3 l' o/ N7 }9 B/ d7 l, Y% c* E
  860.          (setvar "ORTHOMODE" 1)                   ;drag along the text
    9 a/ n- C; r- H4 S# K8 t8 @5 [
  861.          (setq 0 a4 G5 Q. f' V9 F" E' `7 q
  862. TMP (getpoint (cdr (assoc 10 Textent)) "\nStarting Point/<Pick new ending point>: ") ), ?* v" ]* S0 v
  863.          (setvar "snapang" 0)/ r# C0 J- I% F/ l( q+ E
  864.          (cond5 F/ n# |1 ^0 ]+ I- u
  865.            ((= (type TMP) 'STR) ;;new starting point to be selected' d, H' @" b! E
  866.                (setq Start (getpoint "\nPick new starting point: "))8 V+ x  c8 g7 c2 }
  867.                (if Start  (progn
    2 L. A! T% S; p* j
  868.                   (command "_UCS" "_E" (cdr (assoc -1 textent)))
    8 z  E8 n2 A0 k  Y: ]' X- H# ?
  869.                   (setvar "ORTHOMODE" 1)8 z, \; j0 {7 X% l
  870.                   (setq NewPt
    * a- i1 o% w% e0 E- u7 S, _" [
  871.                         (if Start
    * _+ }# }2 u1 n$ r
  872.           (getpoint (trans Start 0 1) " ending point: ") nil ) )! a+ `5 H9 w" x; D8 a# ?; Y5 k
  873.                   (if NewPt (setq NewPt (trans NewPt 1 0)))
    5 N6 k, G  O8 {# s0 @2 e
  874.                   (setvar "ORTHOMODE" 0)
    " `9 V+ B! w/ V3 i# u  K- H
  875.                   (command "_UCS" "_W") ) ) )" a# i6 L; H: y; A" h
  876.            ((not (null TMP))    ;;new ending point selected& M/ }, i5 g4 u% I2 z( @
  877.                (setq Start (cdr (assoc 10 Textent)) NewPt TMP)  )
    # u# o: b6 Y0 K7 h: J5 b% Q
  878.            (t  (setq Start nil NewPt nil) ) )* u- C( }. S& H* Q# ?
  879.          (if (and Start NewPt) (progn5 `6 E) \( K  n; X: w
  880.            (setq Val (Assoc 41 Textent) ;;current width factor
      m! N; b$ f; O
  881.                  Val (if Val (cdr Val) 1.0)  LTC_%      
    3 S9 x1 O8 p1 V9 a) n* B" U
  882.           (* (/ (Distance Start NewPt) NewEnd ) Val )
    " y* g" n/ D/ Z4 H' z8 X6 q/ I
  883.                  textent (Subst (cons 41 LTC_%)* n: i$ L4 k+ f8 v
  884.            (assoc 41 textent) textent)
    ; G) Q4 F* q$ Y* E0 x( ?
  885.   textent (subst (cons 10 Start) (assoc 10 textent) textent)
    ; |7 D3 w9 [! p) E/ o
  886.   textent (subst (cons 11 NewPt) (assoc 11 textent) textent) )
    + n' W" X' x. G0 Z- l* a7 q1 s
  887.    (EntMod textent) (EntUpd (cdr (assoc -1 textent))))))) (Princ))" ^  k* k! s! ^4 W) |4 ~

  888. $ _9 H' y7 v! ~1 E& q$ H$ A
  889. ;=====================================================================
    / A; u; q+ H/ s7 [: ^
  890. ;=========================COPY + ROTATE ==============================1 s' J6 x. M6 ?# Q
  891. ;=====================================================================2 @% I4 Y5 N/ i0 e1 L

  892. 3 e% Q) z1 l. L4 d/ o! `
  893. (defun c:CR(/ olderr cm loop ss1 ss2 bp mult lent ss2 lp1 lp2)& o$ O8 Y: ?4 o. u- E; `4 U0 k& L/ h
  894.   (setq olderr *error*
    3 T) o( T; d* n- k) ^
  895.         *error* croerr)
    4 \, u3 L7 J+ j, u" M' b1 x( t
  896.   (setq cm (getvar "cmdecho"))7 L0 m/ N2 @& m$ Y6 p+ r, `
  897.   (setvar "cmdecho" 0)
    * L6 h0 m5 g1 F& i
  898.   (setq loop t)
    7 G3 o: V" P# g5 c: P
  899.   (while (not (setq ss1 (ssget)))), ~3 ]' s7 L, S7 d
  900.   (initget 1 "Multiple")
    4 Y5 l# }' E9 S2 _% N' k# u7 A
  901.   (setq bp (getpoint "\nBase point or displacement>/Multiple: "))
    9 t* O9 j$ ]6 Z% U( n7 S* [6 [, F$ d
  902.   (if (= bp "Multiple")
    0 j& b( F3 R8 a: o% ~
  903.     (progn2 m" ^( S; y2 t' t9 {# {
  904.       (setq bp (getpoint "\nBase point: "))
    9 [% G9 y( r+ b7 q0 O+ c& W3 t8 ]
  905.       (setq mult t)7 y1 e7 ?9 w! E8 d( e8 I
  906.     )
    8 [, j) ]- w6 @/ H) i: H3 ]6 o5 W
  907.   )3 R' s' _+ T+ Q# G4 R
  908.   (while loop# E3 ^3 H5 Q5 w7 ]3 {
  909.     (setq loop mult)
    + r) o/ ^" u) M' Z+ [6 T
  910.     (setq lent (lastent)): M) f! f+ Z( j' Z
  911.     (command ".copy" ss1 "" bp bp)
    8 D  n/ t/ f% Z0 H+ |
  912.     (setq ss2 (lss lent)); z/ \2 N) }. ?4 E
  913.     (setq lp1 (getvar "lastpoint"))& I# S& G$ X: J: G: e$ G
  914.     (prompt "\nSecond point of displacement: ")
    ) ^9 B2 c& M6 W$ b
  915.     (command ".move" ss2 "" bp pause)2 z* Y3 e; {) d( v( P1 v
  916.     (setq lp2 (getvar "lastpoint")); t" }: z7 p' _5 c7 m" F% h" H: F
  917.     (redss ss1)
      _, D( z, d7 {" o) N
  918.     (if (and (not mult)
    % s3 _; z+ U* n5 w  F2 t
  919.              (= (distance lp1 lp2) 0)2 u: C0 o) n5 U) r7 }' u
  920.         )+ A' E% F& Y8 J- F; L
  921.       (setq lp2 (getpoint "\nRotation Point: "))9 \8 Q8 B5 e8 n% B
  922.     ), P. C4 z- f& W7 s1 u
  923.     (if mult- z8 u6 A3 O$ ~3 r  f5 e- l7 H
  924.       (prompt "\nRotation angle ")6 S/ C6 G7 d* g: c$ a1 R7 f
  925.       (prompt "\nReference/<Rotation angle>: ")
    " ]' m( C2 f% l3 _
  926.     )% }3 B* k  l* o1 H4 g
  927.     (command ".rotate" ss2 "" lp2 pause)- z* a- q5 U% w
  928.   )( s% V. T* i! k" U1 F: b
  929.   (setvar "CMDECHO" cm)
    ) T  ?7 i$ a" ^, e
  930.   (setq *error* olderr)0 j: M" j/ K0 L% Y$ D% C
  931.   (princ)8 r6 ]" P( I# ~
  932. )
    $ J5 M, v/ w+ I( U9 S( u4 c
  933. (princ)
    2 [; m2 @5 r$ n" M' o8 Y( p" Z
  934. (defun croerr (s)        4 v: s- k6 B+ t0 a* E
  935.   (if (/= s "Function cancelled")
    ! p8 v1 p6 H! `$ s
  936.     (princ (strcat "\nError: " s))+ W% P  a& U" y2 n! f- t) ^( B/ E$ u8 d
  937.   ) 2 K2 y! [) O% Z
  938.   (setq S nil)$ P/ q  }0 @4 w9 ~, Z4 n+ f; g
  939.   (setvar "CMDECHO" cm)
    0 _* g& }! E8 S1 r7 I" [% J
  940.   (setq *error* olderr)
    & g2 p/ n9 r( T# |6 }5 H
  941.   (princ)
    % Q) Z/ l- s0 R( I
  942. )( Z9 T; u/ L7 G7 o; n+ N1 X3 x
  943. (defun lastent (/ a b)2 ]: G6 j0 N" [3 F
  944.   (if (setq a (entlast)). D/ Z+ O  ~) m. H) z, s
  945.     (while (setq b (entnext a))* F1 u6 m4 |9 R/ {- t9 s. E2 ?7 v
  946.       (setq a b)5 q* F* }$ n, D+ d" |
  947.     )! g9 ^* u9 K4 o* z; u
  948.   ); A4 t/ `3 d3 f6 R6 @
  949.   a( K4 o* c) H( _' q) ]
  950. ). a0 e& r+ V2 T/ V$ K! \9 J
  951. (defun redss (ss / en i)
    " t$ P6 F, M0 ?+ T, b# E+ L6 l1 c. V
  952.   (setq i 0)" t3 z& ^7 Z# S, X2 k) p, W
  953.   (while (setq en (ssname ss i))
    & B( @6 f& r4 \5 M) f
  954.     (redraw en 1)
    # q+ A6 \! l# ^
  955.     (setq i (1+ i)): F9 s0 [; a' z$ R7 v1 N
  956.   )
    # y- q: q) O! E1 O& T8 y7 t8 N
  957. )7 ?" y+ Y5 V- d$ l- u6 }
  958. (defun lss (en / sels ed)- C4 H) M9 |9 C: T# V* Z' D$ ^
  959.   (setq sels (ssadd))+ x. t: A  K+ z% q4 }& A) [3 k
  960.   (while (/= en nil)4 j& \" }  x  d8 N
  961.     (if (setq en (entnext en)) (setq ed (entget en)))) K% N8 L5 B' O9 c, {7 N
  962.     (if (/= en nil) (setq sels (ssadd en sels)))9 r0 ~, b6 A1 Q( m' g1 k
  963.     (if (or (= (cdr (assoc 0 ed)) "Polyline")
    , j2 l) i) p' @6 r7 n
  964.             (= (cdr (assoc 0 ed)) "Insert")
    6 V  `/ O1 K7 M' W
  965.         )
    : O6 R8 W' m! x
  966.       (while (/= (cdr (assoc 0 (entget (setq en (entnext en))))) "Seqend"))
    ; G9 u7 W5 g, [! P. H* \, e
  967.     )) j! q% G! N$ t! G: E+ n4 y
  968.   ): W/ N# `9 V0 ^
  969.   sels, W7 x$ A( @# n8 @" W) C6 q$ a) y
  970. )
    ! _$ u) _* e; L- B

  971. : B2 k: U( W  A- ]# z( i7 j
  972. ;;;; ================== CAC FUNCTIONS DUNG TRONG ACAD.LSP ==================
    ! b4 I+ T! s! Q* {; A8 Y
  973. ' h& W; Y" z! m" f% [6 V: E/ ~/ h
  974. (defun c:00 ()(princ "\nChon doi tuong net Defpoints")(ssget)(command "change" "p" "" "p" "la" "Defpoints" ""))5 M) Z* d0 J( ]
  975. (defun c:0 ()(princ "\nChon doi tuong net 0")(ssget)(command "change" "p" "" "p" "la" "0" ""))
    ' x4 D$ `6 b+ W: F2 t
  976. (defun c:1 ()(princ "\nChon doi tuong net COT")(ssget)(command "change" "p" "" "p" "la" "COT" ""))
    % y5 l0 I6 d4 k9 @  D
  977. (defun c:11 ()(princ "\nChon doi tuong net DIM")(ssget)(command "change" "p" "" "p" "la" "DIM" "")). E/ t, Y8 y& I( z9 @9 j
  978. (defun c:22 ()(princ "\nChon doi tuong net MANH")(ssget)(command "change" "p" "" "p" "la" "MANH" ""))/ E  g6 f$ \& V
  979. (defun c:33 ()(princ "\nChon doi tuong net NETMANH")(ssget)(command "change" "p" "" "p" "la" "NETMANH" ""))8 `$ p+ |7 g9 Z- U6 |
  980. (defun c:2 ()(princ "\nChon doi tuong net NETDUT")(ssget)(command "change" "p" "" "p" "la" "NETDUT" ""))
    : U! x2 ?4 Q' }+ n
  981. (defun c:3 ()(princ "\nChon doi tuong net NOITHAT")(ssget)(command "change" "p" "" "p" "la" "NOITHAT" ""))/ i. P- \2 N3 c+ F3 c
  982. (defun c:4 ()(princ "\nChon doi tuong net TUONG")(ssget)(command "change" "p" "" "p" "la" "TUONG" ""))
      t7 @2 R5 q) L- @5 p
  983. (defun c:44 ()(princ "\nChon doi tuong net KHUNGTEN")(ssget)(command "change" "p" "" "p" "la" "KHUNGTEN" ""))% B1 y0 z& k1 w0 I7 `
  984. (defun c:5 ()(princ "\nChon doi tuong net TIMTUONG")(ssget)(command "change" "p" "" "p" "la" "TIMTUONG" ""))" X4 U5 \3 u: k
  985. (defun c:6 ()(princ "\nChon doi tuong net CUA")(ssget)(command "change" "p" "" "p" "la" "CUA" ""))
    % Q1 l5 t4 S" x* _+ ?
  986. (defun c:7 ()(princ "\nChon doi tuong net THAY")(ssget)(command "change" "p" "" "p" "la" "THAY" ""))
    , {; D6 q2 b8 J. @1 j5 g: \. ?
  987. (defun c:77 ()(princ "\nChon doi tuong net NETTHAY")(ssget)(command "change" "p" "" "p" "la" "NETTHAY" ""))
    7 r0 ]2 n% T) w+ }# g
  988. (defun c:8 ()(princ "\nChon doi tuong net HATCH")(ssget)(command "change" "p" "" "p" "la" "HATCH" ""))
    - y* x; b$ \- J$ I% o# Z
  989. (defun c:9 ()(princ "\nChon doi tuong net TEXT")(ssget)(command "change" "p" "" "p" "la" "TEXT" ""))' p) M4 ?3 `; A# X; ?' ~1 \
  990. (defun c:99 ()(princ "\nChon doi tuong net CUAMATDUNG")(ssget)(command "change" "p" "" "p" "la" "CUAMATDUNG" "p" "C" "bylayer" ""))
    5 ~$ J5 O" U3 n4 x
  991. (defun c:td ()(princ "\nChon doi tuong net THEPDOC")(ssget)(command "change" "p" "" "p" "la" "THEPDOC" ""))
    6 Q2 a) d: p' {
  992. (defun c:ddt ()(princ "\nChon doi tuong net THEPDAI")(ssget)(command "change" "p" "" "p" "la" "THEPDAI" ""))! a  @( W/ F" B. i+ ~. i
  993. 3 d9 a! u: _8 \& N4 o% R
  994. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============' c0 [2 v0 N$ C) q% G- `

  995. ; }2 c. Q, E6 C2 T* N8 }  X+ i
  996. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============+ H+ K; ^8 P# }5 [, }

  997. + t( J3 P7 S' E3 H# P6 H/ s0 _! ]
  998. (alert "Using the NetXuatAnh-[ 5940.00 x 4200.00 <pixels> ] command!")
    # g3 m( d( a7 r) N& i0 V
  999. (princ "\nEnter (DEFUN C:netxuatanh () to get to real LAYER command.\n") (command "NETXUATANH")7 Y7 ^  y; J7 C/ V- k8 ~: s

  1000. & q+ M3 k/ c' a: v7 T8 N& I
  1001. ;=============== DAT LAYER NET de xuat anh JPG [W x H] [5940.00 x 4200.00] ===DRAW===  Q- ~5 k( _) t3 \: p( y0 Y

  1002.   r3 [* K9 e$ k. @! M* M' F
  1003. ;(DEFUN C:netxuatanh ()# @0 |8 Z& `2 D/ n. c- I
  1004.                  (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.6" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""
    1 _& N: _* ^9 w  g# g) h' g
  1005.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1.58" ""! ?8 e2 U- L, `' X
  1006.                                            "M" "MANH" "C" "9" "" "Lw" "0.5" ""4 G$ L$ h$ s/ s5 o9 N
  1007.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    ) z6 J  G" r6 X: P6 i3 a4 d4 `
  1008.                                        "M" "DIM" "C" "1" "" "Lw" "0.6" ""
    1 P2 l0 R4 X/ A. R
  1009.                                        "M" "THAY" "C" "7" "" "Lw" "0.7" ""; {# u6 |1 t# I7 L3 n% s- E/ }
  1010.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.5" ""
    + a! Z% E( e- \: \; A
  1011.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""
    ' y% r2 S9 W% _/ U7 b) i5 @: q
  1012.                                        "M" "COT" "C" "2" "" "Lw" "2" ""- v. K) X9 t0 g; c3 G
  1013.                                        "M" "Defpoints" "C" "7" ""8 |0 c$ p' l# B$ R$ p
  1014.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""4 b2 n2 b7 {5 v# F0 `/ d
  1015. ;                                       "M" "1" "C" "1" "" "Lw" "0.5" ""
    & S* V! y8 `8 K
  1016. ;                                       "M" "2" "C" "31" "" "Lw" "0.5" ""
    ( u8 e9 O4 R# d2 G# C  w3 k
  1017. ;                                       "M" "3" "C" "8" "" "Lw" "0.35" ""
    2 H  R9 T! X+ B& R( T/ o
  1018. ;                                       "M" "4" "C" "4" "" "Lw" "0.8" ""
    ; F( e( G& j" I/ h+ j
  1019. ;                                       "M" "6" "C" "6" "" "Lw" "0.35" ""
    2 [1 W$ d: P; B0 J) V3 M
  1020. ;                                       "M" "7" "C" "7" "" "Lw" "0.4" ""
    0 z) o* o" D% \: v8 X* o/ k- j
  1021. ;                                       "M" "8" "C" "8" "" "Lw" "0.35" ""7 Y& C. N- \" ^  U. D
  1022.                                        "M" "DAY-DIEN" "C" "3" "" "Lw" "0.5" "": ^6 b0 C7 n8 U$ F8 V
  1023.                                        "M" "DUONGBAO" "C" "7" "" "Lw" "1" ""
    6 I: a: H" j* _
  1024.                                        "M" "KE" "C" "8" "" "Lw" "0.3" ""7 g/ [# _$ F  p' z, G
  1025.                                        "M" "KT" "C" "9" "" "Lw" "0.35" ""
    & D( a5 M: _: V6 Z( p/ f
  1026.                                        "M" "NETTHAY" "C" "255" "" "Lw" "0.7" ""
    " \- }$ `  U$ Z8 [  d& b, B
  1027.                                        "M" "NETMANH" "C" "43" "" "Lw" "0.5" ""/ Q4 q* t  @6 ?: h* H
  1028.                                        "M" "TBD" "C" "2" "" "Lw" "0.8" ""
    $ t! |/ d  y) G# ~! j9 `$ H; e( N
  1029.                                        "M" "TEXTTXT" "C" "7" "" "Lw" "0.4" ""  H7 }1 L0 j( |/ P5 q4 v
  1030.                                        "M" "TEXTVN" "C" "132" "" "Lw" "0.4" ""
      J1 j/ u- R$ J
  1031.                                        "M" "THEPDAI" "C" "3" "" "Lw" "0.7" ""
    & y) L% ^/ S, X/ o( M5 a1 n
  1032.                                        "M" "THEPDOC" "C" "2" "" "Lw" "1.58" ""  K! M* T# E. Y6 z! `" S9 _; Y7 T
  1033.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" "") Z+ Y5 S0 Z8 y6 F! y' P
  1034.                                        "M" "CUAMATDUNG" "C" "6" "" "Lw" "0.5" ""
    & a$ p( Y. ^% a1 u3 c* ~1 \
  1035. / }- l( m. {- J: H; E' @
  1036. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] ===NUOC===% O* P! m$ W1 [' D1 E2 F+ o* O7 i3 B

  1037. : {0 m8 [  }7 z" r8 t3 r" Q
  1038.                                        "M" "10-VAN_KHOA" "C" "10" "" "Lw" "0.5" ""
    . x( e9 v4 A$ X% b% Z+ }
  1039.                                        "M" "4-WateR_IN" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE1" ""
    3 N9 m) V/ i2 D: e
  1040.                                        "M" "4-WateR_OUT" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE2" ""
    # r; `  H7 b/ h$ |4 s
  1041. ;                                       "M" "250" "C" "250" "" "Lw" "0.35" ""7 W( J, M* ?, z# p! W1 |
  1042.                                        "M" "KHUNGTEN" "C" "4" "" "Lw" "1" ""# J7 Z/ R" @$ z% K5 Z
  1043.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.5" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" "" )
    : @7 ~; m/ j% i- z

  1044. ) i+ k7 n; K3 G& r
  1045. ;=============== DAT LAYER TEXT de xuat anh JPG [DIM] [TEXT] [GHI CHU]======
    : b( y4 u, W. A  {8 B; h7 R! \3 V$ Z
  1046. ;===================================30|04|2024==============================5 q( @5 U( G: z0 i# ~+ g' s) }

  1047. ) P* j& T, J5 q( W9 _" i
  1048.                      (Command "-style" "Vni-VietNam" "vn_vni,vns.shx" "0" "1" "0" "n" "n" "n" )1 D, L2 a4 y, H! D# n# I  r4 d
  1049.                      (Command "-style" "Vni-ROMANS-TEXT" "vni-romans,vns.shx" "200" "1" "0" "n" "n" "n" )
    ) A+ i1 T! d2 z( P+ V, k
  1050.                      (Command "-style" "COTES" "verdana" "" "1" "0" "n" "n" )
    ( Y1 i8 U+ @& }# x8 b$ T( Y
  1051.                      (Command "-style" "TRUC" "impact" "0" "1" "0" "n" "n" "n" )  d0 G2 q1 x+ J) u3 n1 B; ~
  1052.                      (Command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500" "1""0" "n" "n" "n" )" w4 K% u! \$ A5 z5 M1 u; `2 ~
  1053.                      (Command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1" "0" "n" "n" "n" )
    % W. Q0 n+ X; e" {7 K
  1054.                      (Command "-style" "STANDARD" "Verdana" "200" "1" "0" "n" "n" "n" )& N: H  P2 i  `! R
  1055.                      (Command "-style" "VERDANA" "verdana" "200" "1" "0" "n" "n" )
    % Z' D8 _8 [7 w& S9 r  S3 B9 F. n, u
  1056.                      (Command "-style" "ROMANT-DIM" "romant,vnh.shx" "0" "1" "0" "n" "n" "n" )& q% \0 }+ p2 t+ B: ^
  1057.                      (Command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200" "1" "0" "n" "n" "n" )(princ)( w" e9 ]! `* H- B) J9 e: R: n- @
  1058. + A: @/ W5 |% l
  1059. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=+ k& ~/ d. I' N3 }8 T) H
  1060. ;===================================17|10|2024===================================- _9 ]7 J; o; w; R( C. p

  1061. " ~5 g+ ^4 n+ m) W. u  h
  1062.                      (Command "DIMTXSTY" "ROMANT-DIM" )
    2 M% C) \0 @6 f# q4 j. v% z* Y
  1063.                      (Command "DIMBLK" "" "Closed" )( h4 K* _, u- c% ^0 u- c
  1064. : \  c5 K, {& @4 g! M
  1065. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    % ]. c2 o0 I6 D8 l( N
  1066. ;===================================17|10|2024===================================
    3 j  Q- f1 s% N  L" B. E# ?! X
  1067. - g+ b6 j# w9 }/ Q0 w) J) w0 J+ H
  1068. ;(Command "-units" "2" "8" "1" "8" "" "N")+ X0 S0 o# O8 p- N% E) e
  1069. (Command "-plot" "Y" "" "publishtoweb jpg.pc3" "User 1 (5940.00 x 4200.00 Pixels)" "Landscape" "N" "Display" "Fit" "Center" "Y" "monochrome.ctb" "Y" "")(princ)0 ]/ _( s2 ]& b

  1070. 7 Q0 b- y  X1 `) p+ n! y2 D
  1071. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=# ^# W- U! r1 e8 ~3 Y0 ?
  1072. ;===================================17|10|2024===================================- W; }6 O+ U5 l' ^1 C( [
  1073. * |" X6 t; I( @  o5 H8 H
  1074. ;======== KET THUC - DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =====6 F3 O. x5 n6 _# j% V8 L5 J8 t
  1075. 3 m9 R6 ~+ \$ z% T) B# J5 Z- c7 \% ?
  1076. ;======================== DAT NET IN & TI LE BAN VE =============================! A( P& P0 i6 n! R9 _( G& L# Z
  1077. * |; Q  a6 Y$ Q: ?* ~0 Q# P( P2 ~
  1078. ;=================LENH VE KHUNG TEN - Tieu Diet Lenh==================
    . v  f* A$ E/ y1 @
  1079. ;=============== DAT KHO GIAY BAN VE - KIEU KHUNG TEN ================
    . D3 t, R/ ]. n( p  M' Q# Z4 U
  1080. ;=============================11|07|2025==============================
    5 R0 [0 a( [# u- n7 B
  1081. ;Ti Le Ban Ve - 1 : 100, |& ^  c+ X' M6 t% ?1 X' G& R  ?
  1082. (Defun c:kta4 ()
    $ H, x6 v4 m, B3 U+ r! p' }
  1083.     (setq mv_sc 100);Ti le  ban ve5 m( B9 ?( ?8 H; K4 S
  1084.       (setq x4  297)
    % b# ^: c6 ?' U4 z
  1085.       (setq y4  210)
    ' @! U/ ~& U) f$ N7 \9 G
  1086.   (setq x4 (* mv_sc x4) 0 a, A$ \2 b2 j
  1087.         y4 (* mv_sc y4)  )
    9 q+ J8 N  x; F2 b9 V' h
  1088.   (command  
    5 k4 k: d" [; J5 \$ N  R7 }
  1089.     "LIMITS" "0,0" (list x4 y4)* Y" c# V; w0 v+ }
  1090.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"7 z& [: g/ V6 P& ~5 `" K+ h7 D
  1091. ;Khung CHU NHAT Chinh    4 b# g+ \7 o7 a
  1092.     "RECTANG" "500,500" "@28700,20000"
    8 R( r  a0 @0 @
  1093.     "RECTANG" "700,700" "@28300,19600"6 K7 _( r' b0 y
  1094. ;Khung Ten Chung
    $ x0 Z$ a" r8 T' k# c
  1095.     "RECTANG" "700,700" "@8000,1250"
      }0 J; G9 g9 g( l3 F
  1096.     "RECTANG" "700,700" "@17300,2500"
    # N) m/ j1 ^, j
  1097. ;Ten Ban Ve
    0 ?6 U  u" I: W+ K5 m4 f9 b
  1098.     "RECTANG" "18000,700" "@11000,1250"
    4 L+ }" x0 ~1 N7 U
  1099.     "RECTANG" "18000,700" "@11000,2500"
    . W# A- J/ Y- Z2 }; X+ l& I
  1100. ;Khung Ti Le + Ngay Thang Nam5 v7 j! p" v! |  E2 v9 s4 L
  1101.     "RECTANG" "22500,700" "@2000,2500"# N5 A# D' R4 a" z* E$ q, Z% t
  1102. ;Khung CHU TRI/ Z4 G$ P* G( T0 ]5 W7 E
  1103.     "RECTANG" "8700,700" "@3800,2500"
    % J; D* q: T6 u+ u
  1104. "ZOOM" "_a"  ))
    ' G! O, ]6 O' N" h8 U: }7 Z$ }5 |
  1105. ;=====================================================================) D/ x  F  I$ [: l3 o
  1106. ;Ti Le Ban Ve - 1 : 100
    7 r, I. Q9 T$ w5 s& J+ T5 h" i
  1107. (Defun c:kt4a ()2 _6 k1 N* M: Z  `: ?: b6 i2 K8 Z5 e
  1108.     (setq mv_sc 100);Ti le  ban ve
    , T0 G5 ~% s( R+ a+ @
  1109.       (setq x4  297): |( M5 r( v9 `. ~& [4 f
  1110.       (setq y4  210)( J3 i6 E. n! n5 A6 \
  1111.   (setq x4 (* mv_sc x4)
    0 C  w3 K" p5 |2 ~2 [
  1112.         y4 (* mv_sc y4)  )
    5 j* j: t# N( N- l. d
  1113.   (command  5 H+ F7 b4 i% a, I: s- e5 a, D
  1114.     "LIMITS" "0,0" (list x4 y4)4 s- P  l) I% O% Z% e$ F8 V
  1115.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"8 n3 R8 d; t( s% a/ c
  1116. ;Khung CHU NHAT Chinh  ) y3 g( d7 Y. L. I4 H5 T9 z$ `
  1117.     "RECTANG" "2000,500" "@27200,20000": M' Q- R3 p" K9 y; {% O3 U' q
  1118.     "RECTANG" "2200,700" "@26800,19600"& {# Y0 o, _2 H  s8 W
  1119. ;Khung Ten Chung$ K8 n2 `: R% G
  1120.     "RECTANG" "2200,700" "@6500,1250"% D+ m+ F3 _$ i- s+ W
  1121.     "RECTANG" "2200,700" "@15800,2500"
    , `& x$ \- V- a' p: i( N' l
  1122. ;Ten Ban Ve
    # {0 O) J* N1 p- r+ ^/ O8 a0 @
  1123.     "RECTANG" "18000,700" "@11000,1250"5 p/ {+ u3 i9 A$ h+ v
  1124.     "RECTANG" "18000,700" "@11000,2500"
    ' [# r2 B2 ^' l) T" K
  1125. ;Khung Ti Le + Ngay Thang Nam) f' }. f6 L. L: Z+ r1 `
  1126.     "RECTANG" "22500,700" "@2000,2500"2 h- }! a, C4 u4 o6 d! K. B; i8 D
  1127. ;Khung CHU TRI
    4 n. {0 n, L$ J+ u. X, v
  1128.     "RECTANG" "8700,700" "@3800,2500"' v7 c4 p. c2 L1 l
  1129.     "ZOOM" "_a"  ))
    3 G$ _* u8 H, g- ]2 N4 G1 ~& ^

  1130. 1 d& e4 j! v' J5 }: ~
  1131. ;;; ============================GHI CHU Khung Ten========================
    4 |. N0 T! e; q
  1132. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========( @6 u( |# S% @. i$ R) k
  1133. ;;; =======================Thuong Dung Font Romant.vnh===================
    ) @, E# S2 j& M$ d6 u$ x
  1134. ! v2 i! K5 [, n! I- j) x0 U
  1135. (defun c:GhiChu (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)" b  {' j# W" L3 c
  1136.   (setq oer *error* *error* err2): e! I8 D6 T) C* a& `& A: r
  1137.   (PROMPT "\nChuTri. ThietKe. KiemTra. TiLe. Ngay. HangMuc. QuyMo. KieuNha. CongTrinh. KyHieu. TenBanVe. Kts. TranNgocThang. ")
    ; [0 N+ p9 o" y6 e  V- Q
  1138.   (SETQ Cpt(GETSTRING "\n(CT). (TK). (KT). (TL). (Ng). (HM). (QM). (KN). (CTr). (KH). (TBV). (Kts). (TnT). "))
    ( O& C4 b" J4 P. H4 {
  1139.   (IF(OR(= Cpt "QM")(= cpt "qm"))(SETQ CPT ' "Hå S¬ ThiÕt KÕ Nhµ D©n Dông quy M« :"))+ |$ _" _5 @% F2 N4 I
  1140.   (IF(OR(= cpt "KN")(= cpt "kn"))(SETQ CPT ' "2 TÇng 1 Tum Thang"))
    3 H& E+ D' E0 X" H8 F
  1141.   (IF(OR(= cpt "CT")(= cpt "ct"))(SETQ CPT ' "Chñ Tr× :"))
    % B$ u9 I+ e6 s% {. f4 |
  1142.   (IF(OR(= cpt "HM")(= cpt "hm"))(SETQ CPT ' "H¹ng Môc :"))% K. Z+ e1 f! u; k- C$ j1 }
  1143.   (IF(OR(= cpt "CTr")(= cpt "ctr"))(SETQ CPT ' "Nhµ ë Gia §×nh - Nhµ LiÒn KÒ"))* P# d: o- o- \1 k: f1 l3 _
  1144.   (IF(OR(= cpt "TK")(= cpt "tk"))(SETQ CPT ' "ThiÕt KÕ :"))
    ! i5 {: I0 `1 \5 c5 [9 d* N9 ]$ j
  1145.   (IF(OR(= cpt "KT")(= cpt "kt"))(SETQ CPT ' "KiÓm Tra :"))
    0 k+ H/ g6 H5 j" D4 x
  1146.   (IF(OR(= cpt "TL")(= cpt "tl"))(SETQ CPT ' "TØ LÖ :"))( N# J3 ~' j$ D7 v0 p% g
  1147.   (IF(OR(= cpt "KH")(= cpt "kh"))(SETQ CPT ' "Ký HiÖu :"))
    7 y" l: D+ V1 h- g- k8 b% M
  1148.   (IF(OR(= cpt "TBV")(= cpt "tbv"))(SETQ CPT ' "Tªn B¶n VÏ :"))' z& h( \" ^+ L
  1149.   (IF(OR(= cpt "Ng")(= cpt "ng"))(SETQ CPT ' "Ngµy :"))
    ' Y5 E! ^( I3 U% B
  1150.   (IF(OR(= cpt "Kts")(= cpt "kts"))(SETQ CPT ' "Kts. TrÇn Ngäc Th¾ng"))7 i1 L& V  h/ c; C& l+ t1 A5 j# F
  1151.   (IF(OR(= cpt "TnT")(= cpt "tnt"))(SETQ CPT ' "TrÇn Ngäc Th¾ng"))
    : j0 E2 x7 M; b% g7 Q+ \
  1152. (setq pta (getpoint% f$ S; Y# {/ `8 g$ D
  1153.     "\nPick first corner. : "))6 s& o' h/ i1 Y; A! i$ S
  1154.   (setq ptb (getcorner pta4 p3 d3 W2 U& ]- S% N4 ~- O( f& V( {
  1155.     "\nPick second corner. : "))1 Y  g! M- B1 Z1 l
  1156.   (setq ptc (list (car ptb)(cadr pta)))
    : E. B$ L9 a5 ]2 o8 ~
  1157.   (setq ptd (list (car pta)(cadr ptb)))! D, |/ ]; j- s
  1158.   (setq ang (angle pta ptb))
    * L. y  H; f/ b; d+ l0 k7 j
  1159.   (setq d1 (/(distance pta ptb) 2))
    % R3 [7 G: ^& W8 F9 p$ [# P" |
  1160.   (setq cp (polar pta (- ang (dtr 0)) d1))0 j6 O4 }# b0 A! l3 u/ Y
  1161.   (setq X (distance pta ptc)), w+ f* ]6 ]: T& Q+ U
  1162.   (setq Y (distance pta ptd))
    6 @' r/ g( F& b, L5 B' _, E
  1163.   (setq X1 (rtos x 2 1))
    / ~% X' a/ D5 J5 d5 {" L. G' ?8 F
  1164.   (setq Y1 (rtos y 2 1))/ ~- m, V* _. H# _! v! q3 Z1 O
  1165.   (setq rmsz (strcat "(" X1 " x " Y1 ")")); c$ ]; Q$ {1 d4 n% D0 k
  1166.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))6 |% [( Q# W# {# I
  1167.   (defun dtr (angg)
    6 W5 g8 s. J* s
  1168.   (* pi (/ angg 180.0))); U" d$ |+ P" f; S/ d; s6 q+ u
  1169. 8 x& `, I- ]6 j0 P
  1170. ;=====================================================================3 x+ N$ V% I( Y. ~! @/ D( d0 u* e
  1171. ;==========================DAT KHO GIAY BAN VE - KIEU 1========================, X+ e6 o. G/ S* W# u2 P
  1172. ;=====================================================================* W5 O) e3 d: `1 B0 W; ?* }
  1173. ' V: l3 I4 _3 `9 f' q5 g
  1174. (Defun c:a6 ()' d5 L7 k7 t3 r% _1 r( G3 \4 Y5 E$ ~- ^! O
  1175.         (setq mv_sc 100);Ti le  ban ve
    - w' ~2 v5 \. _; q; W9 y
  1176.       (setq x4  74.25)
    * N+ U: Z4 Q$ X
  1177.       (setq y4  52.5)
    + N5 N" k: o! ]& x: t& _$ c1 {
  1178.   (setq x4 (* mv_sc x4) # a% {  O) L2 G4 u  H8 A1 x; _) V
  1179.         y4 (* mv_sc y4)  )0 y  [. A, s' j
  1180.   (command  9 p# v5 u- K" ]
  1181.     "LIMITS" "0,0" (list x4 y4)/ L4 u! I: `% s: t
  1182.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"/ K; h/ D& y/ i% R
  1183.     "RECTANG" "125,125" "@7175,5000"/ S4 Y+ v! G4 L3 T+ r( A. K( M2 }
  1184.     "RECTANG" "175,175" "@7075,4900"" p4 J" k: m$ W, N5 V8 M8 I
  1185.     "ZOOM" "_a"  ))
    ; V. I; ~% b$ b" h+ l, K
  1186. ;=====================================================================' u# I7 z0 l9 I/ K$ L! U- T# U
  1187. (Defun c:a5 ()
    * S( s# h0 O7 h: V
  1188.         (setq mv_sc 100);Ti le  ban ve  }# ]2 Q! P9 l/ ]
  1189.       (setq x4  147.5): k+ }: o7 K8 U3 s+ U2 |4 n
  1190.       (setq y4  104)
    $ m! d; B. ~8 j! Y% g7 Q6 h
  1191.   (setq x4 (* mv_sc x4) . Z0 z0 s3 r2 D9 {. C) v! `2 k
  1192.         y4 (* mv_sc y4)  )
    / @) u& S) q4 t/ v; S" S: |
  1193.   (command  
    8 f, E2 H, T0 o  a# e8 N& f7 K3 x
  1194.     "LIMITS" "0,0" (list x4 y4)
    : t( Q9 m" X" O6 H5 p
  1195.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"3 s4 l$ A& x. u* V4 p
  1196.     "RECTANG" "250,250" "@14350,10000"
    0 w2 b4 s, d: s* e" v' K
  1197.     "RECTANG" "350,350" "@14150,9800"
    6 F0 N6 ~. l( g! Z1 J% K/ X2 w
  1198.     "ZOOM" "_a"  ))
    . B: i' g( J; R0 c
  1199. ;=====================================================================6 _- ^+ K. K2 F5 M# W$ H. d
  1200. (Defun c:a4 ()7 m( z8 t* U+ b% l
  1201.         (setq mv_sc 100);Ti le  ban ve: B1 Z( k, J2 E4 o" n
  1202.       (setq x4  297)
    8 _( ?( x. P7 f
  1203.       (setq y4  210)
    % Y, q" J; v. f2 g( a; \, {) S
  1204.   (setq x4 (* mv_sc x4)
    0 k6 L' Y/ R9 C7 ~+ ~! [6 x
  1205.         y4 (* mv_sc y4)  )
    # Z) A$ {9 M$ c% i: {
  1206.   (command  
    - k$ w  B& \' Z- T3 _, k* ]
  1207.     "LIMITS" "0,0" (list x4 y4)+ k; M; k2 k' o: A
  1208.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    2 ]0 \, C9 N$ N, u8 w
  1209.     "RECTANG" "500,500" "@28700,20000"
    . a( [% ]- K! M5 C
  1210.     "RECTANG" "700,700" "@28300,19600"
    1 Y& o4 Y/ [! w8 W
  1211.     "ZOOM" "_a"  ))
    3 `" b! `) \+ i
  1212. ;=====================================================================% m! u# K* O, Y( y9 O* M7 R6 p. ^, ]8 q/ S
  1213. (Defun c:a3 ()
    / z/ G; x5 l5 B4 r( \; G% j1 W, P
  1214.         (setq mv_sc 100)
    ( ]) m: W3 S. A1 m0 M* p
  1215.       (setq x3  420)
    ) `  G6 s4 ~  l- Z
  1216.       (setq y3  297)
    ! z5 F4 B$ o& V* X
  1217.   (setq x3 (* mv_sc x3)
    9 f; P  i( h5 C: S. W, Z8 L6 b
  1218.         y3 (* mv_sc y3)  )  n5 k( k5 A/ K2 J& H7 ^
  1219.   (command  # @) G! o; r. ?) ]2 i2 T; _( b
  1220.     "LIMITS" "0,0" (list x3 y3)
    , d3 G( V+ i% g/ A2 C, q
  1221.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    " n* B8 i* W7 q) R$ \' Y
  1222.     "RECTANG" "707.14285714,707.14285714" "@40590,28285.71428571"* N( O# o; \5 ^9 e
  1223.     "RECTANG" "990,990" "@40024.28571429,27720"' |+ e" y' {  S8 J1 l, _" j. ^
  1224.     "ZOOM" "_a"  ))
    : q  ]- J! @, }+ T9 W
  1225. ;=====================================================================4 k# g( O+ m% I% s
  1226. (Defun c:a2 ()
      ]" P* ?+ c. ?) l, H6 v
  1227.         (setq mv_sc 100)
    3 V8 {" x9 }: z1 U7 V9 U
  1228.       (setq x2  594)
    6 G6 |9 ]/ r) `2 q
  1229.       (setq y2  420)$ C( W2 ]" F$ a0 I& }6 b
  1230.   (setq x2 (* mv_sc x2)
    . p$ f, m8 G5 p. p. O; x6 k3 u; @
  1231.         y2 (* mv_sc y2)  ); ^$ a0 j) z" E( {6 ^4 ^; F
  1232.   (command  # S* Q; O# X# w
  1233.     "LIMITS" "0,0" (list x2 y2)
    + `! B6 @# Y. I( l* I" B; s
  1234.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"3 s& g0 W( ]" d- }; d9 ~
  1235.     "RECTANG" "1000,1000" "@57400,40000"! L. i) S9 c; a! E
  1236.     "RECTANG" "1400,1400" "@56600,39200"
    4 J# @& o% ~% ]' e( E
  1237.     "ZOOM" "_a"  ))+ v# ]# G$ g4 f" [. B$ h4 J
  1238. ;=====================================================================4 z6 c6 J! y& o3 d/ `
  1239. (Defun c:a1 ()
    7 E1 V* f: n' Z/ O' S
  1240.         (setq mv_sc 100)
    + c# V- ]+ [% W- w2 h! D
  1241.       (setq x1  840)0 k2 x( Y) i1 N5 r
  1242.       (setq y1  594)8 L1 O$ E1 E8 k: ?7 O% `
  1243.   (setq x1 (* mv_sc x1) : C, [& g( p8 f$ a9 W
  1244.         y1 (* mv_sc y1)  )* Y# W+ B0 i! R* y' x& A
  1245.   (command  
    ) b# X3 H' j, l+ N  h% |. y
  1246.     "LIMITS" "0,0" (list x1 y1)
    / A/ h' A& {% N9 p
  1247.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C", j6 g: j8 o( A/ K; x% \4 Z
  1248.     "RECTANG" "1414.28571429,1414.28571429" "@81180,56571.42857143"7 W: R) B) q) i/ |3 N. w/ l+ g" s
  1249.     "RECTANG" "1980,1980" "@80048.57142857,55440"* Z7 |' n2 W  c, }, S
  1250.     "ZOOM" "_a"  ))
    8 o/ v3 a9 [/ i* W' R, f
  1251. ;=====================================================================
    # F* y7 I7 O4 J& }! Z1 a
  1252. (Defun c:a0 ()
    " Z% j( [- L) E0 f/ Z
  1253.         (setq mv_sc 100)
    ) G) T0 K% Q) A7 s# p" R3 K/ j; W
  1254.       (setq x0  1188)
    0 |0 r+ d" N4 E2 H
  1255.       (setq y0  840)# R1 |% I  w. i' s
  1256.   (setq x0 (* mv_sc x0) % ~+ p. |# k- b+ t- D/ N- D9 ]
  1257.         y0 (* mv_sc y0)  )
    $ |2 D; l/ Q$ a0 T' _) ?; M2 ^' d
  1258.   (command  6 G* \+ c3 o! h* K, x# ]
  1259.     "LIMITS" "0,0" (list x0 y0)) X9 l! g- c, a+ [7 m# ?. v4 w
  1260.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"7 u" B( z( v: [
  1261.     "RECTANG" "2000,2000" "@114800,80000"" }2 ]# s) I) g- I. Y" _6 K
  1262.     "RECTANG" "2800,2800" "@113200,78400"
    6 m% {) A7 y# k
  1263.     "ZOOM" "_a"  ))
    8 z/ G2 w9 G; H( [: b
  1264. 5 e3 T7 w3 a5 |6 Y3 s7 \
  1265. ;=====================================================================* }: p* x% C  K
  1266. ;=========================DAT KHO GIAY BAN VE - KIEU 2=========================
    . [2 s8 ?0 m8 K1 k: I! J% I
  1267. ;=====================================================================/ H4 M9 ^9 S4 E! K, B9 s
  1268. 9 [) A( F" R. K- W  [/ D" |" X
  1269. (Defun c:6a ()" n8 n3 p8 M- N9 I5 ]
  1270.         (setq mv_sc 100);Ti le  ban ve
    " O4 y" |" r- Q6 s- v$ R+ C  ]
  1271.       (setq x4  74.25)4 |/ i: Q6 P; r- R( u# B$ o9 o! e
  1272.       (setq y4  52.5)3 ]% |+ s9 }( I8 {- S# j  G; ~4 ^
  1273.   (setq x4 (* mv_sc x4)
    . \/ h) ]0 y! [) \# l
  1274.         y4 (* mv_sc y4)  )
    5 B: d2 {" J) @
  1275.   (command  8 }5 D8 A4 T5 l- S3 \2 `7 n
  1276.     "LIMITS" "0,0" (list x4 y4)
    7 B3 {5 i, L  m. S8 F
  1277.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    " I% U% C2 Y' E& a- ?
  1278.     "RECTANG" "505,125" "@6800,5000"
    0 W+ b" o4 u% a" S- t" a
  1279.     "RECTANG" "555,175" "@6700,4900"
    - E4 h0 ]  u/ F4 W3 r; p( S! Y% q
  1280.     "ZOOM" "_a"  ))
    ) c6 O, n, J- l7 l3 K1 A7 {
  1281. ;=====================================================================, M3 A- u8 w" R
  1282. (Defun c:5a ()
    - u$ P: g' L  t, V* Q
  1283.         (setq mv_sc 100);Ti le  ban ve
    ) d* A. U' J8 i
  1284.       (setq x4  148.5)
      P" M) E4 _  Y  b. t; `/ V
  1285.       (setq y4  105)" e& O! F1 Y2 u, _
  1286.   (setq x4 (* mv_sc x4)
    * F5 i( N$ B& Z
  1287.         y4 (* mv_sc y4)  )
    + x7 s6 J. Z- M1 D  L
  1288.   (command  - c' h  F+ H) ^
  1289.     "LIMITS" "0,0" (list x4 y4)
    4 R+ ]9 }$ `1 Y' V
  1290.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C") V# y9 @( u1 P& N% S! Z
  1291.     "RECTANG" "1000,250" "@13600,10000"6 X) c; x2 K" k- Z9 ?8 p' D
  1292.     "RECTANG" "1100,350" "@13400,9800"
    0 G$ r0 C( M6 J8 G' d# z* g
  1293.     "ZOOM" "_a"  ))) ]8 p4 @: Z3 r, R$ e3 b+ e) b. A
  1294. ;=====================================================================5 U- k. r2 Z8 @) L  [& _
  1295. (Defun c:4a (); U  G7 S, a0 B6 P& R* e
  1296.         (setq mv_sc 100);Ti le  ban ve3 }4 @9 m" C' Y- G$ H9 H& z2 K$ p; D$ w
  1297.       (setq x4  297)/ Y7 _& Q6 P7 c4 c6 R
  1298.       (setq y4  210); {( i  @% O5 U7 g
  1299.   (setq x4 (* mv_sc x4) 7 [% O* x6 U) j0 B3 r, ?
  1300.         y4 (* mv_sc y4)  )
    3 v0 \# }* _4 }
  1301.   (command  
    1 m' f2 |* [. p8 Z. Z% L
  1302.     "LIMITS" "0,0" (list x4 y4)
    0 A' j2 v- |; w2 J( [+ \
  1303.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"4 M/ N3 k* w: \# A  }8 u
  1304.     "RECTANG" "2000,500" "@27200,20000"
    7 C& E) t, \- L! t2 v1 n  Q5 Q
  1305.     "RECTANG" "2200,700" "@26800,19600"
    6 }& _7 e' ]+ \9 j
  1306.     "ZOOM" "_a"  ))0 [1 \$ ^$ X5 o! I6 z
  1307. ;=====================================================================
    / A* r+ v4 E$ F
  1308. (Defun c:3a ()1 m; j3 x4 ^$ a
  1309.         (setq mv_sc 100)% P! i2 u( O2 j) o/ H: `/ c
  1310.       (setq x3  420.0428571429)
    0 s7 d  r. u7 h2 e
  1311.       (setq y3  297)
    " N  j$ \: B" O" V
  1312.   (setq x3 (* mv_sc x3)
    : i. c  H  y/ W+ X6 Y# a6 y: l
  1313.         y3 (* mv_sc y3)  )
    . A5 h+ ]* t2 ~. |; U# V
  1314.   (command  
    6 Z" B3 U1 u- ]( U: V7 M
  1315.     "LIMITS" "0,0" (list x3 y3)
    3 Z1 @2 P8 A2 H9 O
  1316.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"7 I8 u- J2 W9 f5 F: n! ]' M: S0 M
  1317.     "RECTANG" "2828.57142857,707.14285714" "@38468.57142857,28285.71428571"
    9 _# r0 D6 f, q6 \9 G0 K: d1 \
  1318.     "RECTANG" "3111.42857142,989.99999999" "@37902.85714287,27720.00000001": M  q- \' K/ X2 o5 T$ @0 R" j, Y
  1319.     "ZOOM" "_a"  ))
    & H: a( ]% q9 E; u. \  _
  1320. ;=====================================================================7 O( K- d( P4 O7 D) P6 S2 }& ~
  1321. (Defun c:2a ()- u9 _$ [; x% r$ p6 n/ A
  1322.         (setq mv_sc 100)4 p$ j# n: z2 \7 q+ t
  1323.       (setq x2  594)- H/ i  |7 J" f0 [
  1324.       (setq y2  420)
    7 ?9 T, E4 S# I0 |* ]7 V$ l: M
  1325.   (setq x2 (* mv_sc x2) 5 S/ |3 S" B0 M7 E, U7 B$ ?7 @" S
  1326.         y2 (* mv_sc y2)  )
    5 e/ \, \) a' t7 x( @; i5 f
  1327.   (command  
    # P! @: h9 I& \: H
  1328.     "LIMITS" "0,0" (list x2 y2)
      _6 t" f1 K8 D! p. m: p1 ?1 y8 r
  1329.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"
    $ d' |$ H; S, ^, A
  1330.     "RECTANG" "4000,1000" "@54400,40000"7 Y  P: z! t" g" d7 X0 C2 H8 U/ }
  1331.     "RECTANG" "4400,1400" "@53600,39200"
    9 q8 j0 W4 o* z! A
  1332.     "ZOOM" "_a"  ))$ _# C5 {" K$ R
  1333. ;=====================================================================% P! x# G' N: R( }; N
  1334. (Defun c:1a ()5 N: o6 X6 s; I% F5 Y! f
  1335.         (setq mv_sc 100)1 Y5 w1 k2 y/ j1 @' ~; e
  1336.       (setq x1  840.0857142857): D2 b5 B) [- i( W
  1337.       (setq y1  594)
    " k4 N/ x! I( E
  1338.   (setq x1 (* mv_sc x1)
    * o$ u6 r; k. z  k
  1339.         y1 (* mv_sc y1)  )6 O3 o3 x9 v0 K- z% R) |
  1340.   (command  
    6 ]0 x. n% y  `0 W$ c1 U# s
  1341.     "LIMITS" "0,0" (list x1 y1)0 _; ^: n( N4 |2 S! r! V& V% _
  1342.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"2 w) x7 \* d+ D( U
  1343.     "RECTANG" "5657.14285714,1414.28571429" "@76937.14285714,56571.428571436"
    0 m: z/ H* H$ |% R
  1344.     "RECTANG" "6222.85714286,1980.00000001" "@75805.71428570,55440"7 ^* k. J+ g4 S% ]/ I( B
  1345.     "ZOOM" "_a"  ))7 V8 K* A& K6 C& D- d& M+ E
  1346. ;=====================================================================
    1 |1 h  N$ e" b8 F: r
  1347. (Defun c:0a ()
    . j# ]1 Y" [' G$ v+ V/ j$ R& d! ?
  1348.         (setq mv_sc 100)
    ! b9 Q3 N( O, _; L  T6 W0 i* V
  1349.       (setq x0  1188)7 ]' ~- u% }% J/ I# ]
  1350.       (setq y0  840)2 S" d1 t# `1 T" ]' b0 E
  1351.   (setq x0 (* mv_sc x0) : A5 \  M* u, e
  1352.         y0 (* mv_sc y0)  )
    - _: Q: l1 ]6 h
  1353.   (command  
    , g9 m0 e; U( @
  1354.     "LIMITS" "0,0" (list x0 y0). r% A, Y8 G3 ]  ^1 X: p* @8 C
  1355.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"
    ) }2 J8 [) F8 e, l, a( R1 b* P
  1356.     "RECTANG" "8000,2000" "@108800,80000"
    # B. V% y( Q- u0 R
  1357.     "RECTANG" "8800,2800" "@107200,78400"% T0 h/ ~$ C: i8 d  V" M
  1358.     "ZOOM" "_a"  ))
    ' |) e8 T1 |6 T% e( a

  1359. 0 X( @* O' c, r9 R
  1360. ;=====================================================================
    6 }4 s4 b; f/ ~. v0 X
  1361. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================
    , F- h% u$ z) w
  1362. ;=====================================================================. d. M0 E9 Z# ]5 n% c% f& \7 g) \
  1363. (defun c:khogiay (/ oldlst a b c d e f g h kho TL)/ E; T  g: e3 J
  1364. (command "undo" "be")
    - u6 D6 j* W/ P0 ^. r" R
  1365. (setq oldlst (mapcar 'getvar (list "CMDECHO" "OSMODE" "cecolor")))
    + \. e$ e& C, R# k
  1366. (setvar "CMDECHO" 0)
    1 G) i$ g* M; V# w- c7 H
  1367.     (setq a (getpoint "\n chon diem chen :"))5 L5 d- l3 ]. ~/ q! v* c* x4 ?
  1368. (if (not TL) (setq TL 1.00))2 b# W. ]" ]/ l
  1369. (setq TL1 (getDIST (strcat "\nScale <" (rtos TL 2 2) ">:")))
    3 b# B) a  B6 ^) L; T8 z" f
  1370. (if TL1 (setq TL TL1))7 Q' |6 m2 ~" W& t
  1371. (setvar "osmode" 0)
    $ [# A; `8 c% K7 k
  1372. (if (not (tblsearch "layer" "Defpoints")) (Command "layer" "N" "Defpoints" ""))# T3 m* U" |' k; h# l7 S
  1373. (initget "0 1 2 3 4")
    8 S# x! d& ?7 c' K
  1374.        (setq kho (getkword "\Kho A0 _ Kho A1 _ Kho A2 _ Kho A3 _ Kho A4 [0/1/2/3/4]? <0>:"))& x( f2 o/ Q* H& Z9 R  x+ t( G5 N
  1375. (if (= kho "0")+ `7 i8 K1 I$ V% _2 _  a7 O
  1376.      (progn* C3 N% y5 J$ R* d/ \7 b5 L, ^8 m
  1377.              (setq b (polar a 0 (* TL 1189)))1 q" L* ?0 l, q* W4 i& z  U
  1378.                      (setq c (polar b (/ pi 2) (* TL 841)))
    4 D( B( B0 o3 k# d3 Z! }7 |* @
  1379.                      (setq d (polar a (/ pi 2) (* TL 841)))7 p) v4 z" _& q2 i4 z
  1380.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))) Q6 H0 r% b' p+ ]4 X0 P; \( v
  1381.                      (setq f (polar e 0 (- (* TL 1189) (* TL 24))))
      W& C7 P9 w  s! Y
  1382.                      (setq g (polar f (/ pi 2) (- (* TL 841) (* TL 24))))# d" m$ C3 B/ e5 s0 V- u# L
  1383.                      (setq h (polar e (/ pi 2) (- (* TL 841) (* TL 24))))1 l, v; \" l$ ]) H7 j
  1384.   (command "Pline" e f g h "c")            
    3 Z) k3 U! J% N6 S6 l# _. S: m
  1385. (command "change" "last" "" "properties" "layer" "0" "")) l. ~9 j5 [8 M" I: t9 l+ |, J6 c4 `8 c
  1386. (setvar "cecolor" "4")
    $ k, S+ E9 r6 J+ T0 C: X' S0 ?
  1387.   (command "Pline" a b c d "c")
    3 h) n# \* [# u0 }; Y
  1388. (command "change" "last" "" "properties" "layer" "defpoints" "")))   
    $ C* G5 G3 Y! i6 }# G1 B
  1389. (if (= kho "1")
    ) I7 C' ^! A) j! J8 e7 L# {
  1390.      (progn- P6 Q, K0 T: e. l7 Q' X7 f, }. T' P
  1391.              (setq b (polar a 0 (* TL 841)))
    9 T3 O! F% |1 G* q
  1392.                      (setq c (polar b (/ pi 2) (* TL 594)))% q( j* O8 k9 z# X
  1393.                      (setq d (polar a (/ pi 2) (* TL 594)))% X) f( D& t9 Y
  1394.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))
    6 i3 G4 R: _  r
  1395.                      (setq f (polar e 0 (- (* TL 841) (* TL 24))))
    - x5 _3 h8 R* B8 n- q" w/ a
  1396.                      (setq g (polar f (/ pi 2) (- (* TL 594) (* TL 24))))
    ' o: J1 X3 U6 y7 l- Z
  1397.                      (setq h (polar e (/ pi 2) (- (* TL 594) (* TL 24))))+ n9 h+ }) T2 u
  1398.   (command "Pline" e f g h "c")            1 }6 p" _. b* U2 L6 L
  1399. (command "change" "last" "" "properties" "layer" "0" "")$ a  H; t& j2 m) W& ^
  1400. (setvar "cecolor" "4")
    & B9 v8 E: C  `+ }& D0 O' s+ @
  1401.   (command "Pline" a b c d "c")9 M/ G4 _$ G6 e% ~3 k
  1402. (command "change" "last" "" "properties" "layer" "defpoints" "")))) l# B8 M* [5 H5 I- _
  1403. (if (= kho "2")
    1 t/ o4 \: Q+ [' {
  1404.      (progn# r" Y; a0 P: W1 n  g
  1405.              (setq b (polar a 0 (* TL 594)))
    ! f/ z  O. E8 q: |; S
  1406.                      (setq c (polar b (/ pi 2) (* TL 420)))# `$ y- l3 p% n- a
  1407.                      (setq d (polar a (/ pi 2) (* TL 420)))
    ! w( K- {$ V& J7 j) m! a- q
  1408.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))
    8 H" a* ]) ^! b# g7 R* E, M+ ~
  1409.                      (setq f (polar e 0 (- (* TL 594) (* TL 20))))) H; g( A4 d  J$ t, v4 f4 @
  1410.                      (setq g (polar f (/ pi 2) (- (* TL 420) (* TL 20))))$ \, V6 b; i1 E' Z
  1411.                      (setq h (polar e (/ pi 2) (- (* TL 420) (* TL 20))))
    8 y% ]5 P+ i1 _: X0 i- s# @
  1412.   (command "Pline" e f g h "c")            
    " t; S1 {9 \% |& `) y- S* i: J8 j0 `
  1413. (command "change" "last" "" "properties" "layer" "0" "")
    : t! w# f) }: n8 Z
  1414. (setvar "cecolor" "4")4 C8 b1 O1 F& ?
  1415.   (command "Pline" a b c d "c")
    . N; \0 Q8 u- |; I
  1416. (command "change" "last" "" "properties" "layer" "defpoints" ""))), w4 g3 o  l3 A
  1417. (if (= kho "3")
    * g5 t9 M) V- p1 D  H' S
  1418.      (progn
    : Y$ c9 _' F* \4 D4 r
  1419.              (setq b (polar a 0 (* tl 420)))
    * S! A( f' Y" d% h3 R8 a7 N( h9 d
  1420.                      (setq c (polar b (/ pi 2) (* TL 297)))
    : g9 ?- @, Z& Y( w2 U' ~& \) {
  1421.                      (setq d (polar a (/ pi 2) (* TL 297)))
    4 [6 z2 @; c4 ]" y% Q8 a
  1422.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))
    & n3 ]* c- Q4 f% h1 m# A9 y9 U1 [
  1423.                      (setq f (polar e 0 (- (* TL 420) (* TL 20))))
    6 _$ }: U& t9 ?' r' I' B$ |
  1424.                      (setq g (polar f (/ pi 2) (- (* TL 297) (* TL 20))))  F/ L0 H5 f0 `2 j
  1425.                      (setq h (polar e (/ pi 2) (- (* TL 297) (* TL 20))))5 _6 P% Q! e* N2 [2 I; ~
  1426. (command "Pline" e f g h "c")
    3 G' H0 A2 e9 h* E% y
  1427.   (command "change" "last" "" "properties" "layer" "0" "")6 a6 Y" H( i5 q/ f" ^
  1428. (setvar "cecolor" "4")
    % E" R9 @: n0 s* v
  1429. (command "Pline" a b c d "c")
    7 K! P2 A+ \- X
  1430.   (command "change" "last" "" "properties" "layer" "defpoints" "")))
    / t7 S0 \3 x$ A# M  t  m
  1431. (if (= kho "4")
      W) L) T3 F' ~4 r9 f) S
  1432.      (progn
    $ k4 K! c1 c, b& F' C" p" S
  1433.              (setq b (polar a 0 (* TL 297)))
    & w3 j! t+ i! D# G
  1434.               (setq c (polar b (/ pi 2) (* TL 210)))
    + U5 a: o" T4 N+ M4 S4 y
  1435.                      (setq d (polar a (/ pi 2) (* TL 210)))0 H' L2 |3 {5 E# c, u' e
  1436.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 81)))))
    1 a2 E3 {( T* H: d
  1437.                      (setq f (polar e 0 (- (* TL 297) (* TL 18))))4 h5 \& J: ~! v' m
  1438.                      (setq g (polar f (/ pi 2) (- (* TL 210) (* TL 18)))): y5 y# P9 _5 Z* H% E5 m
  1439.                      (setq h (polar e (/ pi 2) (- (* TL 210) (* TL 18))))9 I1 O' f) h, D  v1 t. R
  1440.   (command "Pline" e f g h "c")            8 c. O6 Y- x) d* G
  1441. (command "change" "last" "" "properties" "layer" "0" ""), E6 x# R4 `! p/ t* `
  1442. (setvar "cecolor" "4"), P! u, ?7 x4 b  R
  1443.   (command "Pline" a b c d "c")
    & T: X5 h) D9 }. }5 X
  1444. (command "change" "last" "" "properties" "layer" "defpoints" "")))' h1 s3 G' M& R8 t7 `
  1445. (mapcar 'setvar (list "CMDECHO" "OSMODE" "cecolor") oldlst)
    ) J: }4 k" b3 D$ S2 ]
  1446. (command "undo" "e")
    ' O, Z4 s5 U3 U9 l
  1447. (princ))9 `! d% h' G$ Q# ?6 U% [
  1448. ;=====================================================================- v7 ]4 e2 D0 x  a: ^- i9 Q
  1449. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================+ l8 O7 f3 y3 W  Y4 h0 `: M; Q' E. \
  1450. ;=====================================================================$ I% y* [* A; m; m0 x$ \
  1451. 7 l2 j2 i0 t- k% b4 E1 F+ r
  1452. ;=====================================================================& v3 Q  n  K/ W- d; V) {$ [+ v. Q: L
  1453. ;===================DAT Ti Le Theo KHO GIAY BAN VE====================
    ' W/ W, A8 ~, P' _4 D& g
  1454. ;=====================================================================
    7 [+ {8 ]& u( B+ j
  1455. ) |  w- f2 }& s. V# n
  1456. (DEFUN C:SA6 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.1" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""* e  }" N+ V- t' S0 T
  1457.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.3" "": M& i5 u) j+ ~0 C0 M
  1458.                                            "M" "MANH" "C" "9" "" "Lw" "0.1" ""
    # V" h3 V  {/ S- W
  1459.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" """ d4 B0 P; X  M" E# T
  1460.                                        "M" "DIM" "C" "1" "" "Lw" "0.12" ""
    ( Z7 G5 h4 T( A: O& D9 m# a: @
  1461.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""
    ) U, p$ d* D, j. c/ X
  1462.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.12" """ y2 P) z$ O. }1 a! [
  1463.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" "". c( e- U" T3 F7 q' p
  1464.                                        "M" "COT" "C" "1" "" "Lw" "0.3" ""
    ' r3 B" |; L% W! E! t- [4 o% G
  1465.                                        "M" "Defpoints" "C" "7" ""2 g6 ?# u' f* ]+ J# |4 r, e# {2 P
  1466.                                        "M" "0" "C" "3" "" "Lw" "0.12" ""
    # ?/ V; T0 d+ z! _4 ?
  1467.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""4 _( }& y  ?) Q: w8 A
  1468.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    " }3 F9 l1 T. g  I8 p
  1469.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.1" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "3" ""))
    9 x1 U1 n. H4 i9 @( p2 ?3 I/ `
  1470. (DEFUN C:SA5 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.12" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "10" ""; t- X5 b, I; I- L, \
  1471.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.4" ""
    6 ?: p8 p2 E7 v' {. U. F) I
  1472.                                            "M" "MANH" "C" "9" "" "Lw" "0.12" "", d) D! Z. a  W  ?  a, R* I
  1473.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""
    * N7 ]8 ?( |8 X- ^) [0 T# X
  1474.                                        "M" "DIM" "C" "1" "" "Lw" "0.2" ""
    # D7 q- e6 w$ R$ R$ e8 Z
  1475.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""
    ; i' T4 L, `7 P2 J
  1476.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.2" ""6 C8 O. @+ ~* Z/ B, G: }0 n2 F
  1477.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""
    0 k* \0 t5 G" Y6 z# z
  1478.                                        "M" "COT" "C" "1" "" "Lw" "0.4" ""
    - S- ?' x- e6 R# L; J4 k, e
  1479.                                        "M" "Defpoints" "C" "7" ""; A. N' J* K# O. B. Z& O* w. l% i
  1480.                                        "M" "0" "C" "3" "" "Lw" "0.2" ""
    3 x; i, `+ `2 _2 x7 }; U$ z. s: j
  1481.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" "", S0 |& \8 ]; m% B' l5 `) S
  1482.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    * i- U' f  J1 }
  1483.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.15" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "5" ""))
    5 e# l; M& D# c+ Q8 I* Z3 K
  1484. (DEFUN C:SA4 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.2" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "20" ""4 W5 q. s1 k3 q+ f& r
  1485.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.6" ""
    0 Q& M5 X& p- N8 {9 Z* K
  1486.                                            "M" "MANH" "C" "9" "" "Lw" "0.2" ""4 C) t0 _: s6 N1 ^/ a
  1487.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""0 f  b9 a8 N% n% C
  1488.                                        "M" "DIM" "C" "1" "" "Lw" "0.25" ""
    $ K) _! S- j* ^1 _3 \7 a
  1489.                                        "M" "THAY" "C" "7" "" "Lw" "0.35" ""
    " m! t3 ?$ [& c. P7 Z1 Z1 y
  1490.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" "", R( W, W9 e0 [
  1491.                                        "M" "HATCH" "C" "5" "" "Lw" "0.15" ""9 ]' P  L% _0 n. N6 |3 `
  1492.                                        "M" "COT" "C" "1" "" "Lw" "0.6" ""2 _- S/ y/ M7 B
  1493.                                        "M" "Defpoints" "C" "7" ""& p2 z& M/ I* f" L
  1494.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""7 u0 }: f  A2 d
  1495.                                        "M" "CUA" "C" "6" "" "Lw" "0.25" ""/ C; ?- p9 L1 @( i' M
  1496.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.25" "": N3 E% v8 F' T
  1497.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.2" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" ""))4 z6 P! V* k* i, s; z4 q0 P8 j
  1498.         ; D% W5 Z$ R. u* s1 p/ W
  1499. (DEFUN C:SA3 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "30" ""2 Z6 q4 l) j1 g9 b  S! R" A
  1500.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""
    6 D2 N: {$ L, D0 b7 b- T# b
  1501.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    2 Z* Q9 i7 _/ u* r6 O) _
  1502.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""
    0 r' |6 D- p9 Y
  1503.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
      Q, }7 R/ e# a, X1 \! q6 L7 t
  1504.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""
    * ]( f/ H% q2 f3 f0 ~3 z0 P
  1505.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""
    ( E! _) E7 l" h+ U7 V
  1506.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    ' j7 X* R9 x/ E  N; h
  1507.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""
    $ l+ G7 J4 A8 i) u. H
  1508.                                        "M" "Defpoints" "C" "7" ""& N  O; y! G5 Z; u; n/ p' `; k
  1509.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""+ M- Y1 A/ \0 P  I$ p
  1510.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""# Q/ G$ t9 Z- T8 O, h
  1511.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" "") g6 U0 g2 {# \( a8 U
  1512.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "20" ""))(PRINC)
    , C7 W- e5 t8 |7 i/ d2 O( R

  1513. ) h4 B* H  N( v! p0 r9 U
  1514. (DEFUN C:SA2 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "45" ""% s% S& q  n8 M2 w0 }) }9 v
  1515.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""; G% p# d( C3 J* `. E+ d9 j, U
  1516.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    $ r  U& c& l7 K2 K+ d; F, ^. J$ q
  1517.                                        "M" "TEXT" "C" "7" "" "Lw" "0.25" ""
    3 j' S& @9 u# \
  1518.                                        "M" "DIM" "C" "1" "" "Lw" "0.3" ""1 n0 a$ D& S1 L5 i( g$ L/ a9 Y7 q
  1519.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""+ v6 n! Q9 k0 g0 a# M( `$ D" K& e3 y4 r
  1520.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.3" "", n; n  m4 \) \" x
  1521.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    $ F0 f4 S/ t$ Q- {' q1 i
  1522.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""
    ' I9 H. e1 w4 r* l$ U, Z" v6 A
  1523.                                        "M" "Defpoints" "C" "7" ""( B% t2 ]0 p( O: d+ ]/ p
  1524.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    7 I" W, Y: p( t: [3 Q
  1525.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""* }! S0 L6 [- _+ @
  1526.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""7 b# Y, j7 B! T4 ~( ^) g, c. ~
  1527.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "30" ""))
    ' |9 z% X" ~/ v& Z) e1 C8 r
  1528. / C3 N& x: q4 I* j6 Q6 o, H7 x; h. P4 V
  1529. (DEFUN C:SA1 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.4" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "60" """ J- U  W) ^' h* Q9 `) [
  1530.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.85" ""
    3 ^: H7 C4 K( Z
  1531.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""
    " a2 c+ `& A/ i+ u# T
  1532.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" """ Z& [- p! I/ U6 l
  1533.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    ) V1 _- s/ z1 H' @
  1534.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""9 q4 U* S  k" H# v8 T
  1535.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.35" ""+ Y% I8 j0 e+ j
  1536.                                        "M" "HATCH" "C" "5" "" "Lw" "0.25" ""( L: F7 ]/ D5 x" n9 K9 }
  1537.                                        "M" "COT" "C" "1" "" "Lw" "0.85" ""3 h2 b% Y% Z% ]
  1538.                                        "M" "Defpoints" "C" "7" ""
    5 j1 [) c- K' l, m  h
  1539.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    9 U: \2 Q4 P9 |9 Y
  1540.                                        "M" "CUA" "C" "6" "" "Lw" "0.4" "": G# ~3 ]7 H, W' F' L3 w# k
  1541.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.35" ""
    8 b$ d' ?4 T+ r
  1542.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.3" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "40" ""))
    . y4 H, ?9 m( ^# Q' e$ P0 z8 t
  1543.         " \  M8 h3 z" e* B+ f6 Q9 \
  1544. (DEFUN C:SA0 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.5" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "85" ""8 A0 E+ S3 Z/ u6 m- L: S1 P! ]5 Y3 b
  1545.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1" "". {5 a1 {8 L' G4 @& o
  1546.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""
    - t% `, e0 a; Y
  1547.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""$ R) E0 _& ~0 M& }# R2 u
  1548.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""- _* R+ \. H: V3 o
  1549.                                        "M" "THAY" "C" "7" "" "Lw" "0.5" ""3 C' a* O) }; ?
  1550.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.4" ""( i0 E  m6 t  ?
  1551.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""7 X9 d% v4 N! }
  1552.                                        "M" "COT" "C" "1" "" "Lw" "0.1" "") J/ G) r0 }! @5 D9 |0 [- j/ A5 v
  1553.                                        "M" "Defpoints" "C" "7" ""
    ) s$ L  v  v& n! E6 a
  1554.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""! A$ U4 u, f* g) o! O( G
  1555.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""3 f1 }8 [' F* z# z
  1556.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.4" ""8 z5 ~' g! i* c
  1557.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.35" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "55" ""))  G, _4 d8 x$ b
  1558. (DEFUN C:O   () (COMMAND "OFFSET"))9 p3 D2 Q3 I2 x, t7 I* C2 e
  1559. (defun c:s1 () (command "surftab1"))- c% w/ E3 T9 Q. c, E
  1560. (defun c:s2 () (command "surftab2"))$ p- O5 ]/ B* l" s" X
  1561. (defun c:ep () (command "explode"))4 @# `6 w/ k3 _  t; j+ ]. g' u- m
  1562. (DEFUN C:QS () (COMMAND "AUDIT" "Y" "purge" "all" "*" "N" "QSAVE"))
      _# M$ C. F# g2 b7 T9 i2 m6 W
  1563. (DEFUN C:QV   () (COMMAND "QSAVE"))
    4 _) F. j. T, i9 ^+ @8 d
  1564. (DEFUN C:S    () (COMMAND "STRETCH" "C"))0 E1 {( s+ ]7 D7 o. [( s5 e6 }9 t

  1565. 7 p& h' M. h7 s1 F+ V6 ]- i' Z
  1566. ;************************** CAT DIM **************************
      |1 N8 [( B, x5 N9 _& z5 P6 }

  1567. ' ?# b% v6 u" ~% ?; n
  1568. (DEFUN C:DC (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I; N0 c% Z  h3 j" x  Z
  1569.                 PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)
    : q" e0 m' E  |0 @
  1570. (SETQ CMD (GETVAR "CMDECHO"))3 ]" j2 O" o% H8 Q
  1571. (SETQ OSM (GETVAR "OSMODE")). @; s& ], W" z
  1572. (SETQ OLDERR *error*- T2 P; Y% ]/ [' k1 ~  A1 a
  1573.       *error* myerror). q1 Z8 @# B9 U6 ~3 i) u1 P7 ?8 ]4 i
  1574. (PRINC "Please select dimension object!")9 N0 n/ n, w0 N
  1575. (SETQ SS (SSGET))# g5 D6 x* ]  o- `
  1576. (SETVAR "CMDECHO" 0)
    # d9 g2 W, i1 O5 ?* N% c. o+ ^2 M7 ~
  1577. (SETQ PT (GETPOINT "Point to trim or extend:"))
    1 G! t( b0 G& L2 j/ N- P
  1578. (SETQ PT (TRANS PT 1 0))" R" E7 Z# A3 _! R& ?9 N
  1579. (COMMAND "UCS" "W")
    8 y0 i" D2 {  |) c8 M) ^# f3 q
  1580. (SETQ LTH (SSLENGTH SS))6 ^1 H- k) J( z
  1581. (SETQ DEM 0)/ O( |3 s8 T  x
  1582. (WHILE (< DEM LTH)
    3 V# }1 `! ^) @6 P2 A% W
  1583.     (PROGN& S" h" }- i% ]* \7 a# v
  1584.         (SETQ DS (ENTGET (SSNAME SS DEM)))
    2 o% `9 k- W1 o$ u
  1585.         (SETQ KDL (CDR (ASSOC 0 DS)))
    0 W* w! m( q* n0 C& n
  1586.         (IF (= "DIMENSION" KDL)8 h8 g0 ~+ f8 M3 X% E6 E
  1587.            (PROGN# q. ~  o3 R7 E; g( _4 O' z2 @/ \3 v
  1588.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    - K# ?6 ]4 n$ G3 O" F0 R5 \
  1589.                 (SETQ PT11 (CDR (ASSOC 11 DS)))- V8 M5 F; D7 G) M
  1590.                 (SETQ PT13 (CDR (ASSOC 13 DS)))+ F9 I. ~+ y4 H" Z7 P1 N) f
  1591.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    7 d! B1 g5 Q/ A" N) \
  1592.                 (SETQ N70 (CDR (ASSOC 70 DS)))
    , E8 z7 C/ g8 b8 m3 H; H; u
  1593.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
      T: {& p: [+ O' [4 W
  1594.                    (PROGN' I" D$ H% u; I. z! v" @2 {( f
  1595.                         (SETQ GOCY (ANGLE PT10 PT14))" ^6 y3 }6 N/ s" T: n
  1596.                         (SETQ GOCX (+ GOCY (/ PI 2)))4 g8 i7 n3 _! Z1 Z
  1597.                    )
      d8 w3 U: `2 |0 W. \: \" j
  1598.                 )( R; A2 Q5 c8 w
  1599.                 (SETVAR "OSMODE" 0)
    ' M; `, H% C% l: C* K  n
  1600.                 (SETQ PTI (POLAR PT GOCX 2))
    ( g) k0 q/ f6 Q' @1 H
  1601.                 (SETQ PT13I (POLAR PT13 GOCY 2))
    : N2 z1 c8 a  P
  1602.                 (SETQ PT14I (POLAR PT14 GOCY 2))
    * g- M/ W* I5 F& m9 T3 x" N
  1603.                 (SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
    : K$ s. z: S# R* w# o3 f7 s8 E. Z
  1604.                 (SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
      H4 L; Z. Y; V+ V4 x' C
  1605.                 (SETQ O13 (ASSOC 13 DS))
    1 v* y7 ?# F+ L3 |
  1606.                 (SETQ O14 (ASSOC 14 DS))
    / {4 [/ A$ Q/ x; d8 K% c
  1607.                 (SETQ N13 (CONS 13 PT13N)): ?6 `+ A( d2 p8 W, ^9 m
  1608.                 (SETQ N14 (CONS 14 PT14N))
    . }% ]7 O2 l) ^/ i1 v- _5 ]
  1609.                 (SETQ DS (SUBST N13 O13 DS))! E3 g6 A7 W" K6 y
  1610.                 (SETQ DS (SUBST N14 O14 DS))  [1 A8 r7 H9 f. l1 }7 [
  1611.                 (ENTMOD DS)
    ( Z% y+ W7 x# {. {  k$ j8 G
  1612.            )
    7 r* p5 Y5 O  d5 q" q
  1613.         )2 k% j  `# b0 s0 c9 U' }( e  e: n
  1614.         (SETQ DEM (+ DEM 1))" T; X9 h+ T- L3 W7 s; U
  1615.     )5 k4 I. Q- A/ y/ B
  1616. )
    7 r5 Y1 R3 E7 Q" h2 |
  1617. (COMMAND "UCS" "P")9 i+ o  T0 W7 X* G7 S0 h
  1618. (SETVAR "CMDECHO" CMD)6 ~9 {4 B+ ~3 y+ r0 d
  1619. (SETVAR "OSMODE" OSM); g6 d2 f& e5 l$ x7 x
  1620. (setq *error* OLDERR)               ; Restore old *error* handler8 \( }# J8 C! U! v4 X
  1621. (PRINC): W2 X! e3 U5 B. i& f- o* _
  1622. )
    / Q$ P2 e3 x& P! S. X3 M; _
  1623. 0 v$ |. v7 D0 L0 S0 f
  1624. (DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI9 @1 ~# [& F/ N# P* U9 v3 [5 k0 M! G, ^
  1625.                 PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR); q5 n% y( y; {  g& l% \
  1626. (SETQ CMD (GETVAR "CMDECHO"))5 Y, h8 ]5 g2 U+ `
  1627. (SETQ OSM (GETVAR "OSMODE"))) u& S( ?  ^4 R% D* i8 E* b- v
  1628. (SETQ OLDERR *error*& l# y: d$ ~' k
  1629.       *error* myerror)" g4 n0 s1 z8 D. y
  1630. (PRINC "Please select dimension object!")
    ' P9 n( _2 N6 `
  1631. (SETQ SS (SSGET))
    & y* Z* h& d. x1 p8 O8 d3 d
  1632. (SETVAR "CMDECHO" 0)
    ' l" l( `# n2 @" G
  1633. (SETQ PT (GETPOINT "Point to trim or extend:"))7 [' _7 J% c' l8 W/ a$ V
  1634. (SETQ PT (TRANS PT 1 0))
    , l* {1 ]7 e. z$ u0 k& T2 K) M- |0 _
  1635. (COMMAND "UCS" "W"), q; h8 }) O' D/ }
  1636. (SETQ LTH (SSLENGTH SS))
    . }- F) w; b3 F- K- e9 z
  1637. (SETQ DEM 0)
    % w6 E/ _, e" ?0 [5 q* L4 }$ X
  1638. (WHILE (< DEM LTH)0 I/ h; i! I( ?3 J4 e! |* u
  1639.     (PROGN
    # H  i' l; j: t+ E, x" E2 n
  1640.         (SETQ DS (ENTGET (SSNAME SS DEM)))
    1 {0 x6 |0 {0 w0 Q; ^
  1641.         (SETQ KDL (CDR (ASSOC 0 DS)))8 v0 [& T; e, j
  1642.         (IF (= "DIMENSION" KDL)* I; w1 m8 C$ U5 c- v* D/ [
  1643.            (PROGN- p& i! k6 P9 T, j
  1644.                 (SETQ PT13 (CDR (ASSOC 13 DS))). @3 T( ?+ q8 I! S' N, U1 V
  1645.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    ' `# L& d+ N& z" C3 y3 _0 A& a7 E
  1646.                 (SETQ PT10 (CDR (ASSOC 10 DS)))7 n0 I  T0 n3 }' W0 k
  1647.                 (SETQ PT11 (CDR (ASSOC 11 DS)))6 c& R& h0 @, F* t4 W
  1648.                 (SETQ N70 (CDR (ASSOC 70 DS)))
    # u' C) j* H  M) j4 m- H
  1649.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))' e7 `! d* o2 \  r
  1650.                    (PROGN
    : M. T, D: T& ?, s  l$ ?
  1651.                         (SETQ GOCY (ANGLE PT10 PT14))
      @4 A, q9 p# q5 j
  1652.                         (SETQ GOCX (+ GOCY (/ PI 2)))" S* x% U9 l( w2 n: @9 {0 `" `$ _
  1653.                    )
    ; V4 m+ N! t$ P( F, K! J5 _0 L/ ~2 u: `
  1654.                 )
    2 V2 J5 W: d: B3 `5 d$ I8 v
  1655.                 (SETVAR "OSMODE" 0)
    ! v1 \2 b& z3 d( a6 h/ U& U2 y
  1656.                 (SETQ PTI (POLAR PT GOCX 2))
    ; Y3 O/ S1 r! h1 z" l3 n
  1657.                 (SETQ PT10I (POLAR PT10 GOCY 2))
    , T' k  N% I8 v" O3 P$ X! x. v# w
  1658.                 (SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))3 V9 c; Z0 f# M" X. E
  1659.                 (SETQ KC (DISTANCE PT10 PT10N))1 a# u; r2 s) @$ n" S) Y& O
  1660.                 (SETQ O10 (ASSOC 10 DS))
    + x+ T4 w1 ?' w* Z- Y
  1661.                 (SETQ N10 (CONS 10 PT10N))4 n5 ?9 o1 b$ ?- Y) r6 F
  1662.                 (SETQ DS (SUBST N10 O10 DS))
    ! a) w, c" C# z$ d
  1663.                 (SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))9 m% Q3 l" x2 B) p1 t9 u
  1664.                 (SETQ O11 (ASSOC 11 DS))( |8 ~9 r+ L! u3 c; v( l0 _. |
  1665.                 (SETQ N11 (CONS 11 PT11N))
    * B' [1 R. F8 K1 Y7 ]" m" M. ~
  1666.                 (SETQ DS (SUBST N11 O11 DS))' Z# G( [  j; M3 w
  1667.                 (ENTMOD DS)9 i0 K* o6 X% m6 L% K
  1668.            )
    # h, f9 ~2 v# {" N. r8 e8 F
  1669.         ): c( e- B! l9 Y  u0 u6 s
  1670.         (SETQ DEM (+ DEM 1))
    + R2 @  d$ }) i
  1671.     )' E2 x5 f0 H' R0 \. l
  1672. )
    & _, K/ z5 ^5 ?" n
  1673. (COMMAND "UCS" "P")9 u" f" S6 _# ^! I, k- @
  1674. (SETVAR "CMDECHO" CMD)
    2 y  Z1 G# [9 o5 O" ]+ ]
  1675. (SETVAR "OSMODE" OSM)7 o6 w: z; t" m, c$ e* y
  1676. (setq *error* OLDERR)5 y9 k& D* R/ \! |7 K
  1677. (PRINC)4 ~7 F  l; f' G- a' t- l4 w
  1678. )3 g3 j! V9 v5 B4 j. a

  1679. / G& z0 c2 G! o6 h' U; g- G, P
  1680. ;;; ================ BAT - TAT CHE DO GACH CHAN TEXT (TU) =================* |0 ]8 T! X4 w

  1681. - c$ p) ?' n) K4 F0 p1 Z
  1682. (defun c:tu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can gach chan ")5 @# t6 q: B# G, s; L
  1683.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")9 ~( `, I* G  [) H* S' p2 h
  1684.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt9 b( ], t4 s9 `! ^* h! @
  1685.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    0 k6 u: s0 ?* w8 V+ z
  1686.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%u")- ?4 D; m" t2 Z0 E. t
  1687.         (= testxt "%%U"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%u" txttxt)))% \. m- h  e. Z
  1688.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))
    # @2 B4 f6 ^9 M& v8 H" b0 ]* o
  1689.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))) [% A! M) r: P, J9 X6 g; p

  1690. 8 ^1 i  }& t& G; o; n# O
  1691. ;;; ================ CHEN COT (TUU) =================) v- R) @, K: T* W6 `. S( [3 @. @( G
  1692. 0 I* d+ X3 w- A: L' g
  1693. (defun c:tuu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen cot ")
    / o0 E% n) R% J; M9 W9 P8 H
  1694.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")
    & n" ?9 m9 V* B. x/ i
  1695.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    2 x) j  e+ j6 l8 C5 R: z
  1696.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))! D' A5 p  g9 Y( l5 D& |/ t8 A2 n
  1697.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%p 0,000")1 o9 i+ f6 A" Q/ }5 N* G, O2 D0 Z
  1698.         (= testxt "%%P 0,000"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%P 0,000" txttxt)))
    + ^, |6 ~8 X' @  R
  1699.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))  j3 L% ^: Z  t2 W
  1700.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))- W5 q! u' E9 e  q
  1701. ( b4 S' {# W: M- Z
  1702. ;;; ================ CHEN KY HIEU THEP (TP) =================
    8 f- P: j5 M( n
  1703. " z2 }1 T/ X/ ~# }% X: ?
  1704. (defun c:tp ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen ky hieu thep ")
    / |3 Z( S( z4 N( r
  1705.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")
    4 T1 o- N% Q4 C8 |
  1706.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    0 D3 T' b5 v5 O
  1707.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))  p3 m* ^$ H5 R$ ?
  1708.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%c"); b; i- t9 [5 F7 g3 R& J
  1709.         (= testxt "%%C"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%c" txttxt)))) B+ S2 \: K# K6 ]3 _4 h0 j' F
  1710.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))- X/ J( Z7 p) R' ~( a* t
  1711.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    3 N! y) _8 z$ f

  1712. 1 C/ T! ]! y' @6 k1 w, {
  1713. ;=========================== TAM TUONG (TAM) =================================
    7 E0 ^8 V0 ]7 G9 x. l

  1714. # X  {0 g- o2 T( u4 ]+ }9 z- g
  1715. (defun c:tam(/ data_m)5 t2 K6 G1 ?. L$ w% {7 A7 ~1 T4 p
  1716.             (defun import_data(/ i)(setq data_m (ssget))(if (= nil distan_m) (setq distan_m 110.0))7 k0 z& E& m' a: @' V. N' G
  1717.             (princ "Distance (")(princ distan_m)(princ "):")(setq i (getreal ))(if (not (= nil i))4 e: E) B; ]) |& Z0 x' ?
  1718.         (setq distan_m i)))(defun process(/ ent check)(defun p_check()(setq check 0)5 e2 l4 z* c. f; H
  1719.         (if (= "LINE" (cdr (assoc 0 ent))) (setq check 1))(princ))(defun p_d_offset
    $ V% l$ _! ^6 n
  1720.         (/ p1 p2 p3 p4)(defun makeline(/ e2 e5)(setq la (list (cons 0 "LINE")(cons 5 (cdr
    . ]9 Y* g4 p  J8 ]
  1721.         (assoc 5 ent)))(cons 8 (cdr (assoc 8 ent)))(cons 10 p3)(cons 11 p4)))(entmake la)(princ)) F$ Q2 t7 Z, [2 `- ?8 u# |
  1722.         )(setq p1 (cdr (assoc 10 ent)) p2 (cdr (assoc 11 ent)))(if (not (= p1 p2)) (progn (if
    " f. o4 k2 r9 m. O5 v/ T( h4 P
  1723.         (< (abs (- (nth 0 p1) (nth 0 p2))) 0.000001) (progn (setq p3 (list (+ (nth 0 p1)% m8 y: a7 N% F/ W/ ^
  1724.         distan_m) (nth 1 p1) (nth 2 p1)))(setq p4 (list (+ (nth 0 p2) distan_m)(nth 1 p2)* D  U) t1 d( G
  1725.         (nth 2 p2))) (makeline) (setq p3 (list (- (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1)))1 o  e% e7 V- J
  1726.         (setq p4 (list (- (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2))) (makeline)))(if (<
    8 U3 A9 n- ~: G- [
  1727.         (abs (- (nth 1 p1) (nth 1 p2))) 0.000001) (progn (setq p3 (list (nth 0 p1) (+ (nth 1 p1)$ E" ]" {4 Z1 z! M  ^. X" S5 g4 q
  1728.         distan_m) (nth 2 p1)))(setq p4 (list (nth 0 p2) (+ (nth 1 p2) distan_m) (nth 2 p2)))
    : ]8 S9 d/ |6 `% \* Z+ \
  1729.         (makeline) (setq p3 (list (nth 0 p1) (- (nth 1 p1) distan_m) (nth 2 p1))) (setq p4  a) R3 R1 ]  ~4 v
  1730.         (list (nth 0 p2) (- (nth 1 p2) distan_m) (nth 2 p2)))(makeline)))))(princ))(if (not8 R  l  B1 ?* _$ T  t2 [2 c
  1731.         (= nil data_m)) (progn (setq i 0)(while (< i (sslength data_m)) (progn(setq ent (entget" t& B- c: p# e" B$ G7 |. n
  1732.         (ssname data_m i)))(p_check)(if (= 1 check) (p_d_offset))(setq i (+ i 1))))))(princ))
    5 K+ c" b. M- \" b+ ?  o0 L
  1733.           (import_data)(ai_undo_push)(process)(ai_undo_pop)(princ))! V! y! T( V+ ?# o

  1734. 2 F  C' G+ s( ?' ~
  1735. ;============ GHI CHU PHI (T1) ================
    " V) ~7 v0 i/ p; @6 A' h
  1736. : ^& H% ?, P) a6 R9 T
  1737. (defun c:DuongDan ()(setq D1 (getpoint " Diem thu nhat: "))(setq D2 (getpoint "Diem thu hai: " D1))
    ) P9 F( U. o2 Q( r% B
  1738.           (if (> (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (< (car D2) (car D1)) (setq D39 p0 W; E5 ^# l( R1 V
  1739.         (polar D2 PI 16)))(if (= (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (> (car D2)8 n2 T  F' a+ J1 n( T4 M* q
  1740.         (car D1)) (setq D4 (polar D3 0 3.2)))(if (< (car D2)(car D1))(setq D4 (polar D3 PI 3.2)8 }% ?+ t) B5 t- @1 G2 G, S
  1741.         ))(if (= (car D2) (car D1)) (setq D4 (polar D3 0 3.2)))(if (> (car D2) (car D1))
    / F3 z8 {1 ^8 F0 L+ L
  1742.         (setq D5 (polar D2 (/ PI 9) 3)))(if (< (car D2) (car D1)) (setq D5 (polar D3 (/ PI 9)4 f# z" o; s- v2 L
  1743.         3)))(if (= (car D2) (car D1)) (setq D5 (polar D2 (/ PI 9) 3)))(command "color" 1)
    1 L- R, a" c! a% k" {! H
  1744.           (command "line" D1 D2 D3 "")(command "circle" D4 "3.5")(command "color" 7 )
    5 w4 i2 z6 U% P9 P# F
  1745.           (command "text" "m" D4 2.5 0 "1")(command "text" D5 2.5 0 "%%c6a150")0 n7 D( t. Y; ~- m  \
  1746.           (command "ddedit" pause))
    ( e+ c* Y, S8 m2 Y4 W( z$ T

  1747. - x- P9 ~/ x  F
  1748. ;;; ========================== Join (J) =================
    : }. P9 e2 u9 X; h* ?* f

  1749. / R7 A" v5 q7 t' S2 x
  1750. (defun C:J () (Setvar "cmdecho" 0)(setq m:err *error* *error* *merrmsg*)(setq sset (ssget))
    , j0 B$ M2 m6 |" u. @0 F( A
  1751.            (if (null sset) (exit))(setq kt (getstring "\nJoin all (Y/N) <Y> ? "))/ m' Q* y) T2 x: T' X# d
  1752.           (setq ssl (sslength sset))(setq temp  (entget (ssname sset 0))etype (cdr (assoc 0 temp)
    ) Q0 u' f7 L8 M% y
  1753.         ))(cond((or (= kt "Y") (= kt "y") (= kt ""))(progn (cond((= etype "POLYLINE")6 N8 N1 N1 o2 Z3 w  P6 t
  1754.         (COMMAND "PEDIT" sset "J" "all" "" ""))(if (or (= etype "LINE") (= etype "ARC"))# }9 t. U: g  D2 A$ I1 n
  1755.            (COMMAND "PEDIT" sset "" "J" "all" "" "")))))((or (/= kt "Y") (/= kt "y") (/= kt ""))
    1 v. N, O+ Z7 X
  1756.         (progn (cond((= etype "POLYLINE")(COMMAND "PEDIT" sset "J" sset "" ""))  
    2 @4 q9 A2 D7 _' w4 S
  1757.            (if (or (= etype "LINE") (= etype "ARC"))(COMMAND "PEDIT" sset "" "J" sset "" ""))))))
    5 C, Q# U' s& Q8 F2 s9 J
  1758.           (setq *error* m:err m:err nil)(princ))
    & L2 W' \9 r' y
  1759. 5 ^5 R. N% @! j' I
  1760. ;=====================================================================/ ]* ^/ t/ ]7 W5 h  P/ p1 v5 S+ u$ Z
  1761. ;;; DOOR.LSP 1.0, Copyright (C) 1998 by CAD Department, HUCE.
    ) Q# O  W; X/ e4 z: P2 \
  1762. ;=====================================================================% m5 [+ @5 l; ?8 Z

  1763. & R( u3 j7 }! i0 l5 `
  1764. (defun C:D1 (/ p1 p2 p3 p4 side dis wid ang angsile old)
    . |8 ~4 P9 E; L) P/ k, M
  1765. (setq old (getvar "OSMODE"))
    3 v, [( v  _/ W
  1766. 4 I7 Q7 d2 j4 S* N2 A5 B9 ^
  1767. (setq p1 (getpoint "\nStart point:"))
    ) S( C  o3 q  H: ]) g: J( C
  1768. (setq p2 (getpoint p1 "\nEnd point:"))
    # w/ ?$ ]- M( e2 u# M
  1769. (setq side (getpoint p2 "\nOpen side")), o4 T: h/ ?% S; s5 Q. w. S

  1770. + H- I8 {! o! Q  y( O" d
  1771. (setq dis (distance p1 p2))+ }) @: P8 ]3 D: G8 O2 k$ l
  1772. (setq ang (angle p1 p2))
    : O- Z$ k" n* Q( e2 q
  1773. (if (< ang (angle p1 side))
    1 X3 y9 ?+ r2 j, x9 s: }5 v4 ^2 D! x
  1774.   (setq angside    (/ pi 2) )
    $ j$ Z; ?0 J4 z* k7 R
  1775.   (setq angside (- (/ pi 2)))$ d. O% N0 Z4 p' G  e, v) L& Q1 h
  1776. )
    . l, c6 z6 S; ]- f" w$ P
  1777. (if  (>= (- (angle p1 side) ang) pi)# h! f1 }) P% u% c7 W7 r
  1778.   (setq angside (- (/ pi 2))), m& a! _7 X1 y* k
  1779. )
    . r; }# Q' \) S
  1780. (if  (>= (- ANG (angle p1 side) ) pi)1 {- {9 ~3 u. v; Q
  1781.   (setq angside (/ pi 2))
    7 k: r4 c3 Y$ r. A0 L
  1782. ), C# P4 d3 m! v& N% Z7 r+ U/ K
  1783. 3 y0 F! r" d4 ?% v& R  [; l+ w
  1784. (setq p3 (polar p2 (+ ang angside) dis) )
    # I( z: Z, a& L6 K4 B
  1785. (setq p4 (polar p1 (+ ang angside) dis) )
    9 j3 L1 f1 X8 r& v. Y
  1786. (setq wid (/ dis 15))
    ' D4 \4 w- k  _
  1787. 8 ?0 G- m: u/ P6 O* p/ V/ X( C5 {( M
  1788. (setvar "OSMODE" 0)) Z. |. A/ x  h- H0 Q9 U
  1789. / [, S8 Q0 N$ ?9 s
  1790. (command "PLINE" p1 "A" "D" p4 p3 "L" p2 # H) P' G9 g: M( s( ^* b* s8 M
  1791.                   (polar p2 (+ ang pi) wid)
    7 K" _8 ?1 u4 D& r5 ]1 r7 |1 f" v
  1792.                   (polar p3 (+ ang pi) wid)
    3 |4 v6 M6 N; A- @
  1793. "")
    0 k% U% {" _" Z3 z

  1794. 9 p2 x4 {% }9 |- G1 }6 V
  1795. (setvar "OSMODE" old)
    % b$ r* ^3 I9 U4 R. l& Q4 B
  1796. (princ)( i+ b0 m8 N1 F( a- e
  1797. )& q9 W; [# m; G# ]1 @1 y* ~
  1798. / m1 G, s* \- \/ |0 Y- [* g
  1799. ;=====================================================================1 ], {  J1 R. @9 R3 T) f

  1800. 2 k$ r9 \" _3 E7 K+ R1 |1 a
  1801. (defun C:D2 (/ p1 p2 p3 p4 side dis wid ang angsile old)
    4 H9 Q% r# D( ^( D" d' C$ h  I6 J
  1802. (defun cua1 (pt1 pt2)
    2 U% L* y% h. F9 V9 e
  1803.   (setq p1 pt1
    & c3 }! Z2 u" `" L
  1804.         p2 pt2)4 S! j1 m5 \' T+ n# q# ]& ]
  1805. : N. |5 W7 c9 Q9 |& G
  1806.   (setq ang (angle p1 p2))3 V) m' q9 i4 O1 j8 H1 j7 j' Q$ ?
  1807.   (if (< ang (angle p1 side))
    ' j0 C8 V& Y7 f3 \7 ^1 f1 n2 J; F
  1808.    (setq angside    (/ pi 2) )7 |6 s- }% U& M; P$ [  z
  1809.    (setq angside (- (/ pi 2)))
    6 K6 J$ w# a# O6 c  Y$ S
  1810.   )
    & r; B- S& g0 m+ y; Z1 O
  1811.   (if  (>= (- (angle p1 side) ang) pi)1 w3 @! x1 f  e0 T3 r' Y
  1812.    (setq angside (- (/ pi 2)))) N% B6 Z: ?' m8 n
  1813.   )
    - R) G( K& t& g
  1814.   (if  (>= (- ANG (angle p1 side) ) pi)
    / Y7 I. X+ }; a) k9 v( {) a
  1815.    (setq angside (/ pi 2))
    , @+ S5 Y: u- P+ ?1 ^9 E- g  x
  1816.   )
    ( \. [: b( I, K+ l) r

  1817. : q# Z# k9 R- _$ q6 X  M
  1818.   (setq p3 (polar p2 (+ ang angside) dis) )5 k) }: |2 e7 K* Z
  1819.   (setq p4 (polar p1 (+ ang angside) dis) )
    ) h3 u! V, d6 ]4 E  T* q
  1820.   (setq wid (/ dis 15)): p/ X: U- z; ~3 P
  1821. + Z7 w6 l. T; Z' V6 Z3 r$ S
  1822.   (command "PLINE" p1 "A" "D" p4 p3 "L" p2
    / k+ D. a# e& b
  1823.                    (polar p2 (+ ang pi) wid) + d; [  m) s& e! K/ S0 t
  1824.                    (polar p3 (+ ang pi) wid)
    " a' G* k  W# I& p4 S- J; p' s
  1825.   "")
    5 e$ D/ H: V$ s6 J8 A% V7 F6 [
  1826. )9 X5 t* u7 Y9 f$ y7 l2 y
  1827. ;=====================================================================2 S  M( {  Q1 j+ p& j- }
  1828. (setq old (getvar "OSMODE"))
    , n/ S4 n0 }' t+ P* c7 w8 Z
  1829. 7 l8 v" j  W+ f8 E( E
  1830. (setq p1 (getpoint "\nStart point:"))7 @3 D( I/ t. X5 w
  1831. (setq p2 (getpoint p1 "\nEnd point:"))
    ' p8 D1 i, s  ?) M6 m& h
  1832. (setq side (getpoint p2 "\nOpen side"))
      X8 E0 H+ Y, q; A. p; M
  1833. - C- _$ q# O' f* \
  1834. (setq dis (distance p1 p2))8 ~- }* ?0 D) s/ m
  1835. (setq dis (/ dis 2))
    7 O5 S8 l- u$ [, l
  1836. 7 u" t' l( x9 z6 N1 E: r0 k! R
  1837. (setvar "OSMODE" 0)
    - l! m+ s/ u, T, `" t8 V$ E* b8 T

  1838. 9 u5 X" |& ]9 J& E
  1839. (setq p1 (polar p1 (angle p1 p2) dis))
    2 o, G. B/ E7 d# ]5 f
  1840. (cua1 p1 p2)  
    6 \  L7 N3 Q$ o" [% u( U- W

  1841.   y5 P% x% C( q2 I( R# j
  1842. (setq ang (+ ang pi))# [. J9 b: ]( b) |. e
  1843. (setq p2 (polar p1 ang dis))9 [, K, q- z/ C) r
  1844. ; (setq side (polar p1 () dis))3 [  L& H! F6 {5 r/ U! m. x- Y5 ~- G6 L( |
  1845. (cua1 p1 p2)  . n# U: e! ~7 S; r# m* H/ X( k

  1846. . S, S4 X0 @" _7 B
  1847. (setvar "OSMODE" old)8 |0 A$ ~: H; c; J& |
  1848. (princ)
    4 }6 t, p$ I6 _$ H) m7 q8 H
  1849. )
    & A0 d0 m" b5 P( \

  1850. ! V* R% n( Q9 f3 z% R
  1851. ;=====================================================================
    $ s: ?  n- t/ F
  1852. ;"Glue" text strings.  All adopt first's properties.
    1 X$ w* n8 _( }
  1853. ;        Author:6 v& P* M  \9 f( H4 ^3 c4 V
  1854. ;                Henry C. Francis" D  p+ W% w* k3 K
  1855. ;                425 N. Ashe St.
    9 x" l7 g4 m. A
  1856. ;                Southern Pines, NC 283870 [  H: |$ M& Z; l# G; y$ {
  1857. ;        http://www.pinehurst.net/~pfrancis8 Y/ T, ^( w9 z& E8 ~( x. d
  1858. ;        e-mail hfrancis@pinehurst.net' q4 Z! w' A# H( {1 o- X# a/ U, I
  1859. ;        All rights reserved.# i: [, @" a8 ]9 `4 {
  1860. (defun c:gst ( / ename ent1 ent2 old1 oldsl old10 old11 old40 old50 newstr newsl new1 new10 new11)9 X: `( h2 i0 Z" ^
  1861. (while+ Y& v( |& v' A* ^1 p1 r& T  P
  1862.   (not, S& V: ~- Y  `! M2 F
  1863.     (and% Z" j7 Y' d% S# j
  1864.       (setq ename1 (car(entsel "\nSelect first text string to join: "))); l* j* c9 k: N$ j+ k) t7 A% {; F: A
  1865.       (setq ent1 (entget ename1))0 o& ]0 Z2 |7 R$ _
  1866.       (eq(cdr(assoc 0 ent1))"TEXT")
    ' f; }" }# M! l" F# u
  1867.     );and3 z! @9 N$ `+ B/ H0 g
  1868.   );not
    , D9 y- ]8 T" S$ f$ V7 I* G% s* P2 C
  1869. );while; E: ~( o4 g" X- y3 E
  1870. (setq old1 (cdr(assoc 1 ent1)))8 [! f% I1 _$ H5 ~9 Y
  1871. (while. B! T; c% A; V! Y
  1872.   (not
    $ G/ o  a+ g4 U) q: P  @% E( v4 W
  1873.     (and
    % \. U/ E0 }0 V* Q' D8 y4 J
  1874.       (setq ename2 (car(entsel "\nSelect second text string to join: ")))
      M; Z! h3 }, `" ?$ H
  1875.       (setq ent2 (entget ename2)): I% e0 Q' p1 g" Y
  1876.       (eq(cdr(assoc 0 ent2))"TEXT")
    9 o: j7 ^$ i6 V$ S
  1877.       (not(eq ename1 ename2)): f5 m8 R% g  f$ C
  1878.     );and+ d. C1 S3 ]' C# J
  1879.   );not
    9 y1 N8 ]( R' F( l. v- B* i7 D
  1880. );while
    : Q* I9 ~: [- x7 ^  {- b
  1881. (setq old2 (cdr(assoc 1 ent2)))+ P/ [3 `% c; w$ Y  |
  1882. (setq new1 (strcat old1 " " old2)! X6 a+ d- p- Q0 n+ o+ D
  1883.       ent1
    7 q* d5 p* r. v# f) D! E* x
  1884.         (subst (cons 1 new1)
    0 K! x. U( q9 t8 E! e+ w* k
  1885.                (assoc 1 ent1)
    " @! R3 w8 Z: H- c& |4 L, N4 \0 D
  1886.                ent1)1 x. n; E! H0 a1 ~) a6 A  v4 r
  1887. );setq
    : g3 h, S5 C' A( `, o" J
  1888. (entmod ent1)0 x8 M  g' @: q+ @1 K
  1889. (entdel ename2)
    - W* e4 M" d1 i* F+ ^
  1890. (princ)9 r5 e& L3 g8 `" }; k' z
  1891. );defun
    ; A9 \0 r- A* `7 m3 [* ?

  1892. / j% M2 A2 ~+ e* J. i
  1893. ;=====================================================================
    % {* y; b' K9 y( ?# W4 T! G( S5 h
  1894. , r6 [( s6 E: H/ ^9 e0 F* ^  A
  1895. (defun c:nt (/ g1 g2 ss1 olderr nterr l i temp e1 e2 new old dd dc)( m6 q% x+ L8 |. |

  1896. ) C" Z9 Y7 K- R7 d7 c( P/ o# n
  1897.     (defun nterr (s)
    ( |3 q  g3 u. `2 @+ S9 o9 A1 \* K
  1898.         (command "_.UCS" "" "_.UNDO" "E")- w! g4 n3 A0 E; j
  1899.         (setvar "cmdecho" 1)
    6 c1 L) q3 ^% x- n* x/ E
  1900.         (setvar "blipmode" 0)
    1 s- f* ?9 ^, K2 o$ e2 @8 n/ U
  1901.         (setq *error* olderr)
    ; l* n6 m( k) ?3 \
  1902.         (setq g1 nil g2 nil ss1 nil e1 nil e2 nil olderr nil 5 E1 Y  T" O6 q
  1903.                 nterr nil temp nil i nil l nil new nil old nil dd nil dc nil)( s3 A7 U8 F3 {- D. I1 i5 v
  1904.         (princ)
    8 W  t) C" N* f* q( M+ d4 F( B; S
  1905.     )
    ' g( J* C! n  K

  1906.   @% ]) Z  B) k% {, Z
  1907.     (defun tim_in (dt / p01 p02 ktra)
    3 \1 `+ G* P4 q/ j6 c) X
  1908.         (setq p01 (cdr (assoc 10 (entget dt))))
    $ i/ o6 k& t, ], f
  1909.         (setq p02 (cdr (assoc 11 (entget dt))))% B9 p8 q, p7 d: F% b6 ]: h1 `) P
  1910.         (setq ktra T)
    4 b( W: }% ~7 k0 Q8 l+ _& T
  1911.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2))
      {* P/ k) E' f
  1912.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    $ N; f: E$ L0 F) p& R- ~- ^5 G
  1913.             (setq ktra nil)7 ^7 J9 B0 ]- _: t6 A7 k. P- }6 P- s
  1914.         )9 |4 V3 u8 M/ X3 V9 S
  1915.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2))
    0 S3 ?! V  o7 Y  ]; ~
  1916.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))- p$ ]3 E& Y( D% ^6 S! a+ T" D
  1917.             (setq ktra nil)
    3 n4 e# J( }6 s# M- y+ N3 p
  1918.         )
    ' ~4 `$ P3 k$ H3 c# e/ @; B
  1919.         ktra, f3 Q6 i8 v# m3 Z+ e
  1920.    )9 u1 ^) ~. j# J( g# Q

  1921. ' h" T2 U- J0 c1 P; V0 T9 d
  1922.    (defun timdt (dt1 dt2 / p01 p02)
    7 k: |1 n4 G+ {, u9 i
  1923.         (setq p01 (cdr (assoc 10 (entget dt2))))+ n" J+ }$ |9 S, n
  1924.         (setq p02 (cdr (assoc 11 (entget dt2))))
    8 M2 A8 W- J( x/ K) w
  1925.         (setvar "ucsicon" 0)
    & y  G& ?4 c3 E: _
  1926.         (command "_.UCS" "E" dt1)2 L+ v$ j% [- O7 G/ z1 B
  1927.         (setq p01 (trans p01 0 1))
    , u1 I: e+ _, \6 k* K5 l
  1928.         (setq p02 (trans p02 0 1))( I0 z/ X9 a" O( m& O0 k
  1929.         (command "_.UCS" "")7 V9 G2 S& u/ I/ C7 ?  E# x
  1930.         (setvar "ucsicon" 1)" {4 s' P$ B; i* Z6 F
  1931.         (if (and (equal (cadr p01) 0 0.001) (equal (cadr p02) 0 0.001))
    4 [7 e1 V/ M4 n& B( R6 m$ U
  1932.                 T+ ?8 R+ W3 L; u# q7 v
  1933.                 nil7 q8 g/ i4 S; m  E4 V- `
  1934.         )
    * s5 s7 z  ^6 }7 A  Z; ~: [
  1935.    )9 W. F/ X0 c8 y* V+ q& W1 x
  1936. . l9 Z4 K/ N' ]! z
  1937.     (defun tim_out (dt / p01 p02 kt)
    * a- U" A' N6 z: O
  1938.         (setq p01 (cdr (assoc 10 (entget dt))))
    - d: `, e% c7 ]% M
  1939.         (setq p02 (cdr (assoc 11 (entget dt))))6 d* z8 O2 Q  \, ?$ w0 g! {- P; _! x: U4 ]
  1940.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2))
    . T+ O# ?/ V) s7 p
  1941.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    8 p& z! H6 k5 a8 i% @$ |
  1942.             (setq kt p02)
    3 S$ C# G1 \6 `2 a" V$ r
  1943.         )
    7 W) M, e  Y3 s0 u5 I+ d
  1944.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2)) - d2 J* k( K+ R
  1945.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))6 \' a1 \: @/ h
  1946.             (setq kt p01)& f5 A6 J+ R$ M+ J3 ?6 M  y& P( }
  1947.         )* N- Z/ c! a- D2 b3 I' t
  1948.         kt        
      V" R9 k* B4 ?2 v; r/ m9 ^
  1949.    )
    * [9 L) y4 k; O2 ^" Q

  1950. # n1 K: b4 |. _" f* O) u# [
  1951.     (setvar "cmdecho" 0)+ [* Z. h  P" i" `: v
  1952.     (setq olderr *error* *error* nterr)
    9 Z: B7 J9 }, A7 m4 t! @
  1953.     (command "_.UNDO" "G" "_.UCS" "")7 m0 u2 B7 E+ h* A& v
  1954.     (while (null ss1)
    / n* ]& |' W# S/ [/ h5 [& ^6 u9 a
  1955.         (princ "\nChon tuong muon noi...")$ D  d; R- V8 G
  1956.         (initget 1)
    : A3 G" t! z" J( Y; V: ]4 {5 O4 @
  1957.         (setq g1 (getpoint "\n>Goc thu nhat:"))) c8 r0 B$ w: j
  1958.         (initget (+ 1 32))
    + S' i+ L- Q9 b
  1959.         (setq g2 (getcorner g1 "\n>Goc thu hai:"))9 k* k( C5 t; p: \
  1960.         (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    ( L6 _5 m- _) y* H( C# J2 G, J
  1961.         (if (null ss1) (princ "\nKhong tim thay doi tuong!"))( }3 c) {8 X6 A9 m9 ^5 r  p
  1962.     )# N; w- a% F% o& Q0 h9 J
  1963.    
    ; W  F7 S. E' v' _
  1964.     (setq temp (list (min (car g1) (car g2)) (min (cadr g1) (cadr g2)))+ I4 M7 x+ e! [
  1965.           g2 (list (max (car g1) (car g2)) (max (cadr g1) (cadr g2)))% J5 {* f5 e. ], k+ m, Q0 c5 V9 h
  1966.           g1 temp)( V* ]  N. ~1 \3 Y) A
  1967.    (setq ss1 (ssget "w" g1 g2))
    5 J2 f' S5 D. p  N
  1968.    (if ss1 (command "_.ERASE" ss1 ""))" d: _6 N2 n$ L' D4 ~9 i$ j3 a' ]
  1969.    (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    : q# N# t  V! h& a3 `
  1970.    
    ( Z2 B; M+ u' R/ T" m
  1971.     (setvar "blipmode" 0)5 e( d) A$ r6 v! X8 `& ]7 z
  1972.         (setq i 0 l (sslength ss1)), j! Z5 I% ]* f! H# _* c8 \/ i& R  X
  1973.         (while (< i l)
    7 A! K) e5 H. @3 x  g& L
  1974.            (if (tim_in (ssname ss1 i))# u/ P: P" T1 ]
  1975.               (progn
    ; z( F2 V( t$ J3 T3 r
  1976.                     (ssdel (ssname ss1 i) ss1)
    0 Z0 J  r" }3 J0 w0 M2 l
  1977.                     (setq i 0 l (1- l))' s# }: U/ A  Y2 y6 {1 @
  1978.               )        
    8 x  {3 ^$ d/ q7 V# i! K# @: a3 B
  1979.               (setq i (1+ i))
    $ L8 r% q! ?" [* Q6 @: F0 `
  1980.            )
    1 R0 T2 o" s5 X9 t
  1981.         )9 Y# u: ]4 j5 F( G0 W
  1982.         (setq l (sslength ss1))
    # c/ i6 c( L; @
  1983.       (while (>= l 2)
    7 k9 p( u! o9 q9 @6 A4 \
  1984.         (setq e1 (ssname ss1 0))! b. a9 g* p" I. x: c4 L  K
  1985.         (ssdel e1 ss1)6 {2 ~7 W, c$ _% K. u" [
  1986.         (setq e2 nil i 0 l (sslength ss1))
    9 l0 A( \+ [9 E/ Z5 p/ G) P
  1987.             (while (< i l) 7 A2 v( u/ m% T0 B
  1988.                 (if (timdt e1 (ssname ss1 i))4 j4 H1 i- b) H  Y
  1989.                     (progn) [3 u! w6 C% Y  l3 H1 q$ J* t
  1990.                         (setq e2 (ssname ss1 i))4 r, Z# K* y- y0 C
  1991.                              (setq dd (tim_out e1))' {" n' A( J/ b$ i/ ~# P
  1992.                              (setq dc (tim_out e2))
    8 l3 d/ N6 }  [9 O( H- o4 M
  1993.                     )
    * M0 t( d2 L9 m6 q
  1994.                 )' {0 T. ^" ?! J9 ~+ z- |' @" }
  1995.                 (setq i (1+ i))( n! @- P, q. D" y
  1996.             )
    1 r5 w6 C2 x& x0 ]
  1997.             (if e2 (progn: C: t* L4 U8 L4 U) C4 G8 G% A4 j
  1998.                         (ssdel e2 ss1)                        7 W! k& ^7 Z4 V( L8 s) k5 A% e' F. _
  1999.                         (command "_.ERASE" e2 "")) Y' A+ Y% U) T( B# w
  2000.                         (setq temp (entget e1))
    - u/ Q- v) {' V
  2001.                         (setq old (assoc 10 temp))
    & p' z1 ~4 I" c  Y  ]" m6 r* q
  2002.                         (setq new (cons 10 dd))
    ' i( t) i  Z7 l* q
  2003.                         (setq temp (subst new old temp))
    5 K9 O0 o4 j$ b  v1 J$ x
  2004.                         (entmod temp)5 t4 m9 f/ n4 X9 ]0 \9 u3 b9 p
  2005.                         (setq temp (entget e1))  W2 O3 ~8 x  y2 K  v
  2006.                         (setq old (assoc 11 temp))4 o" U" j4 d8 B9 U6 l  e$ d( v
  2007.                         (setq new (cons 11 dc))
    % n6 Q. I6 n% i5 l5 T+ C
  2008.                         (setq temp (subst new old temp))
    2 s( w/ M; t9 G# C( }& A! q5 n
  2009.                         (entmod temp)
    0 x0 E# w( l, s
  2010.                         (redraw e1)
    2 p* {( y. I& i  s
  2011.                         (setq l (sslength ss1))
    ( S) ~7 U/ y/ o+ C3 q
  2012.                    )
    ! k2 ]( p% y6 R
  2013.             )
    ; T$ F0 j% S7 ~9 t
  2014.         )
    , t( U7 Z5 b' S1 Q
  2015. , S. j. J# i# M2 M% h$ D) W
  2016.         (command "_.UCS" "" "_.UNDO" "E")5 J- s  r3 K( B. r7 b2 z
  2017.         (setvar "cmdecho" 1)& o7 W$ O  ?* R6 g% L% m
  2018.         (setvar "blipmode" 0)5 J) i: l/ @0 p) u7 u! a, M' R$ |
  2019.         (setq *error* olderr)
    & M6 ^7 W+ y: ?/ S' X, l
  2020.         (princ)1 L; O/ F2 h7 V* Q" q
  2021. )
    9 Q' V" E/ n# Q7 J
  2022. ;*********************************************************************3 J0 u2 [( z# x$ X* x; B! |/ y
  2023. (defun ketthuc ()! P; r" i8 [) B, Q' I3 w6 F" L# B- J: I
  2024.         (setvar        "cmdecho"        luuecho)
    : a' _$ c- r! C! c8 C
  2025.         (setq *error*        luu5 Q2 m1 G, z( n4 S  [
  2026.                 luu                nil        
    $ a8 R  b- m0 I8 C+ R- N8 k: T
  2027.                 luuecho        nil; q- }6 M+ M6 ?( a
  2028.         );setq, t' Q) Y  S. n  t; }9 d4 s" D2 Z4 ^
  2029.         (princ)
    ) ]# e# s" J0 i1 I7 l
  2030. )               
    , m% j" B( @: C0 z3 `' c% _
  2031. ;*********************************************************************
    9 Q: T! e" O! u# c
  2032. (defun modau ()& H; ~$ ~: L& w* G7 M
  2033. (setq         luu *error
    - w7 V, ^& i0 w5 P' w
  2034.                 luuecho        (getvar        "cmdecho")3 Z9 ]7 n9 j' t$ Z& L
  2035.                 *error        (ketthuc)" I+ {3 C+ i" B4 W( c
  2036. )$ F+ q# V  w; c  G; F
  2037. )
    ! N5 C& h6 I# _; [0 P9 K
  2038. ;*********************************************************************
    / W: w: y  O& f/ b( g
  2039. (defun xulytext (text / kytu ma sokt luusokt lui )1 {8 i2 a) d$ U+ E( t4 ^, k
  2040. (setq         kytu        (substr text (strlen text))
    ' H$ D0 `# }0 u7 d' [; ]3 ~
  2041.                 ma        (ascii kytu)2 S$ \4 X. d* u3 o, E; x# N1 B
  2042.                 sokt        (read kytu) 7 o4 y) d) `9 p6 c) e; f3 D
  2043.                 lui        1
    2 ]3 d$ E9 R, o0 Q/ t$ V
  2044. ); L' t+ p/ h7 r- v" j9 }: l
  2045. (if (numberp sokt): @( F5 i- ^1 m. G
  2046.                 (progn
    8 v. A2 l+ x$ ~! I! o
  2047.                         (setq luusokt        (1+ sokt))" W1 B5 O% ]0 j6 n
  2048.                         (if (and         (numberp sokt)
    1 j; T& P9 n3 J8 w
  2049.                                         (> (strlen text) 1)
    * c, z; y5 P8 E* i& r
  2050.                             )        
    . v+ S5 `2 ^: M: D
  2051.                            (progn* A0 a: n: a, i8 o. @" u! J
  2052.                                 (setq         kytu        (substr text (1- (strlen text)))
    # {# x1 M3 ~4 \2 c8 v" a0 }
  2053.                                                 sokt        (read kytu)
    # S. o" e. H6 `8 |7 F6 J
  2054.                                                                                 )
    # K: q+ h  L, |7 ~- S
  2055.                                 (if         (numberp sokt)   C. |0 U: _% E( j& h0 S: W6 R
  2056.                                         (setq luusokt (1+        sokt)5 t5 e6 W0 G6 v4 \1 T! d6 u
  2057.                                                         lui         2
    $ V, H* ~8 b4 I1 s$ I7 v0 a
  2058. - `1 ^1 R6 m9 n, B0 r! j
  2059.                                                 )' o( s# z- y4 \8 Y4 h/ C  Z
  2060.                                 )
    1 i  C/ G# w  n2 B
  2061.                             );progn        5 k) n& \0 ]! ?7 Q, M
  2062.                         )
    . v& ^  p% Y3 a2 n0 p8 f5 f5 \
  2063.                         (if (= luusokt        100)        (setq         luusokt        0))  L/ L" x$ k' U$ U/ S
  2064.                         (setq         kytu                (rtos luusokt 2 0)  V% R0 R  r' l+ n( u
  2065.                                        
    " a. w" t% k; F+ s$ j( R+ q2 O
  2066.                                         text        (strcat        (substr text 1 (- (strlen text) lui))  kytu)9 a- t* x5 X" w% a& K1 F
  2067.                         )5 |& D, C/ ]2 p2 V% l
  2068.                 );progn                        
    & {2 t' |4 _8 Z# ]6 w+ _) p
  2069.                 (if   (or         (= kytu "z")
    4 @$ _) T2 o" L, m; t) H2 N
  2070.                                 (= kytu "Z")
    8 s) X/ _: s  `- w- n% `
  2071.                         )
    : l2 K; y* \/ Y
  2072.                         (setq         text                (strcat         text        "0")2 J: r0 r1 Z: x
  2073.                                 textxl                "0"# N; y* i( {; y/ \  O: D
  2074.                         )" f; }) d4 F# D9 n6 U
  2075.                         (setq                ma        (1+        ma)& q/ l+ X' X- k8 ]7 H
  2076.                                         text        (strcat        (substr text 1 (1- (strlen text)))  (chr ma))
    , }4 W- C6 [6 ], I' [2 U) c
  2077.                         )
    7 t! ^$ {8 [- C! Z
  2078.                 );if
    # H3 t3 C! b: k$ R4 D! ?4 R
  2079. );if' d3 q' Q3 `: `; ]; O
  2080. ). f7 a/ |. g  |0 X* P
  2081. ;*********************************************************************
    1 o! h) n4 G; ]" T3 k/ v
  2082. (defun doitext(tendoituong / chuoi doituong thoat tam dsach kieu text vitri10 vitri11 dem canle)2 [( t0 c0 M. N. M/ a( }
  2083. ;Neu doi tuong la text thi tiep tuc
    & D+ }; i+ P  g3 m! x
  2084. (setq         doituong         (entget  tendoituong)( |, \6 W" k  ~& q2 A' |% R
  2085.         kieu                (cdr (assoc         0        doituong))
    ( g. ]" [( N- t! F( V- j6 V1 y
  2086.         canle                (cdr (assoc         72        doituong))) R& x& g+ v4 ]! ?( G
  2087. )        & N# ?' l1 {- R8 `) |
  2088. (if (or (= kieu                "TEXT")
    5 e0 I2 H7 ^* Q3 @. Q
  2089.         (= kieu         "MTEXT")        
    - N4 \/ i& {5 z' v1 N
  2090.     )         6 Q6 c' P7 R1 [: V, V; q
  2091.         (progn
    $ X9 p3 G* K/ e7 d% o) ?
  2092.                 (setq        textxl        (xulytext textxl)
    , [7 Z+ z: a' i2 a& P/ U" `- m
  2093.                         text        (cons 1 textxl)4 A% Z" j# o( N2 l4 s, t; k
  2094.                         vitri10         (cdr (assoc 10 doituong))' f  ?3 ~  y4 c/ E" C* ?7 z/ S
  2095.                         vitri10         (list (+ (car vitri10) (car vitrilech)) (+ (nth 1 vitri10) (nth 1 vitrilech)))
    2 N; |; x, ^: o- }
  2096.                         vitri10                (cons 10 vitri10)* _! A# v! B6 M
  2097.                         vitri11         (cdr (assoc 11 doituong))) S6 J& h+ z. T3 a$ s# I: v2 u
  2098.                         vitri11         (list (+ (car vitri11) (car vitrilech)) (+ (nth 1 vitri11) (nth 1 vitrilech)))% X/ V) g  x5 l8 Q  h7 j. u8 _
  2099.                         vitri11                (cons 11 vitri11)1 b& l( h  N  v
  2100.                         dem        0' e% o* ?5 S+ z) \( i
  2101.                         dsach        nil
    ; Z, m1 [) c7 p/ D0 r
  2102.                 )5 }- o: W+ Q" G. W# p9 q
  2103.                 (foreach tam         doituong
    6 K  s, F$ s1 D' A
  2104.                         (cond( l; h3 m3 f4 p$ s# T8 z
  2105.                                 ((= (car tam)        1)        (setq dsach         (append dsach (list text))))
    ) u  g7 q2 r- X- k- i
  2106.                                 ((= (car tam)        10)        (setq dsach         (append dsach (list vitri10))))1 y: R, L; q! S# r" i& e7 z; m  |
  2107.                                 ((= (car tam)        11)        (setq dsach         (append dsach (list vitri11))))
    $ ]% f8 q, _' C9 k, n+ F* _$ n2 f
  2108.                                 ((setq dsach         (append dsach (list tam))))
    / R0 |( L& M! ]' n: i
  2109.                         )( g  r2 @. ]8 F% p4 ]
  2110.                 )
    , k9 d. w) Q" o3 V( u0 P  ]
  2111.                 (entmake dsach)
    7 ?5 |6 |* }1 Z- q2 s0 |  _
  2112.         );progn
    , @0 b$ z2 L4 V+ u
  2113. );if+ g( Q" l8 |1 r5 g7 G3 E& M4 [
  2114.         );6 ^$ `8 |. ~0 l  q. [$ U
  2115. ;*********************************************************************. i8 s/ P6 \8 L9 h3 Z1 V( \
  2116. ;sao doi tuong cu sang vi tri moi
    + J7 t. c/ c1 o

  2117. ' O$ [; \4 Y, o: C( a. R$ w% r
  2118. (defun copy_dt (tendoituong )+ f' a+ e0 h5 V- Y: S6 z0 ^7 i
  2119. (command "copy" tendoituong "" goc toi )9 D, s. l% {  \
  2120. );defun, t( L* R: F5 W0 ]( q' q8 w
  2121. ' g( D8 r+ l2 h' N0 y( D
  2122. ;*********************************************************************
    - D3 z  N6 ~" V& X  v

  2123. , J3 ^3 D! u. i6 p5 Z$ Z* c
  2124. (defun c:ct ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)
    ' `( N/ i1 X0 O( R
  2125. ; Khoi dau cua chuong trinh4 W6 B8 f7 ?2 s7 U9 u8 l* i$ N
  2126. (princ "\nCopy Inteligent...\n"). t- T% f- T& |& ^
  2127. (setq         luuecho        (getvar        "cmdecho")
    " A7 s2 b& L- [  M6 I1 {. ^  V9 k
  2128.         luu        *error*
    ) ]2 R. g( @. I! Z. L
  2129.         *error*        ketthuc" P* ]5 H% @$ y# ^- A9 F( @8 r# L
  2130.         cumdt         (ssget)
    ! s$ m0 x3 @! Y( u, g
  2131.         dodai         (sslength cumdt)1 f9 ?8 O3 y3 D( J! o6 w+ w
  2132.         goc                (getpoint "\nSelect base point:")
    " m$ i0 Z9 Y, i6 C- V6 m
  2133.         thoat                nil
    , R# o- ?" m0 v: a7 H' U& u
  2134.         dem                0
    0 E0 _+ W1 X8 E- n  U1 f, E; F
  2135.         textxl                nil
    - H" V7 `2 w+ e2 C4 q
  2136. );
    / q5 [! q) A* G; v& e* }/ ~: Q# I
  2137. (setvar "cmdecho" 0)+ U: J' T9 F0 P8 z/ |+ _! r! E4 _6 ]
  2138. ; Loc ra duoc ong text de xu ly
    / L" R$ R: C6 W  t& y; d
  2139. (while        (and         (= thoat        nil)0 v8 b$ t4 \+ w( q5 Q: U2 F$ B
  2140.                 (< dem        dodai)
    3 J( d( w2 H  U3 x
  2141.         )% x6 e5 j9 G) n! z7 t* `
  2142.         (setq         ten        (ssname cumdt dem)
    / W4 `, X% _- c9 P
  2143.                 dem        (1+         dem)
    4 `. y% ?( R; ?6 |
  2144.                 doituong (entget ten)0 h& f  U- O5 H4 J
  2145.                 kieu         (cdr (assoc         0        doituong))                        ! J6 F7 d5 c/ v" j* B; [5 V8 W
  2146.         )/ D/ _9 u( m5 s/ ^7 ^
  2147.         ! Z# r/ p* i' L* J* z
  2148.         (if (or (= kieu                "TEXT")2 z" Y# f- J* V: [( B
  2149.                 (= kieu         "MTEXT")        - f3 v$ l8 G& L7 E8 u0 D
  2150.                 )7 z7 ?& T9 _0 |5 w, e7 ?
  2151.                 (setq         thoat        T8 s" }6 Y. I0 L! I9 ^. ^. `
  2152.                         textxl         (cdr (assoc 1 doituong))         
    * I% _/ W/ a6 d& `4 X- q
  2153.                 )
      |) K0 A- _. T3 P* u
  2154.         )% }1 j1 B. P/ g0 |5 Z6 n6 `
  2155. );
      O- O. \: r* E" m- ?
  2156. (while T
    7 v" m' Y/ P- d0 s6 d
  2157. (setq        toi                (getpoint "\nSelect next point: " goc)/ c5 x, W# l2 x% }$ m( \- l
  2158.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))
    8 e- y, Q( Q. s! k' l" N
  2159.         dem                0
    , J8 [* U7 i1 i& a
  2160. )
    3 i# d" R! o& w# p
  2161. (while        (< dem dodai)  Q# m5 M/ H- o4 J
  2162.         (setq         ten        (ssname cumdt dem)
    0 i0 G' U* z4 E- x; A6 Q% E
  2163.                 dem        (1+         dem); F) x( W$ G: d4 P: B2 M
  2164.                 doituong (entget ten)
    ' K* Y) h+ ~( p6 Y4 g9 @
  2165.                 kieu         (cdr (assoc         0        doituong))                        7 \$ N% R9 [" G% ~
  2166.         )
    / L$ Y6 v7 O) d* B$ {# H
  2167. + Z- u- U& e  y/ o/ x, E$ M2 L* M
  2168.         (if (or (= kieu                "TEXT")
    / }. {& H1 C' }  _9 x% C( u- B
  2169.                 (= kieu         "MTEXT")        $ p* Y6 p9 O6 u0 j4 E
  2170.                 )
    & `" a' a9 F9 V; e/ m% g- w' e
  2171.                 (doitext        ten)
    / n1 I! N$ R. w6 p
  2172.                 (copy_dt        ten)' d- A8 H6 Y* b
  2173. " K* i- \5 W) s% X: B
  2174.         );if
    ( J6 W! F$ {$ R3 w0 _* ~, W
  2175. )( Y" \5 ^. _5 @8 l: n1 a
  2176. );while, G% A! A: D2 g+ h5 K; t
  2177. (ketthuc)$ ], o2 r: Y( B. f, V1 S: X7 o
  2178. );defun( x- Z8 I" g1 T' W
  2179. (princ "Type \"DG\" to start")- \  U* ]* w, r0 e1 ^$ e8 k; V
  2180. ;Note: bien toan cuc: textxl vitrilech
    3 N& a+ k- b) C- H  a

  2181. 5 E, q% [+ y3 }$ B6 w) ]# F% j  }
  2182. ;=====================================================================
    : r% W3 K- c9 {& ~# e+ s7 R
  2183. ;;; PLJOINFUZZ.LSP
    $ x3 q8 t# G: m) P* z/ X2 s& L: W
  2184. ;;; Joins lines, arcs and polylines using a fuzz distance
    6 x* @. ^4 J2 C1 P3 P
  2185. ;;; If only one object is selected it tries to join to all objects that are possible& L2 [( r' O$ L. @( Y
  2186. ;;; By Jimmy Bergmark
    , N9 u8 P& ~5 L1 t* x% D" h1 b
  2187. ;;; Copyright (C) 2003-2004 JTB World, All Rights Reserved$ A' H0 h5 T  Z3 W0 t; M
  2188. ;;; Website: www.jtbworld.com
    2 n. w; b2 x: @( z% Y
  2189. ;;; E-mail: info@jtbworld.com8 r$ v  M3 d$ e/ {- v
  2190. ;;; Tested on AutoCAD 2002,2004 and 20051 k/ W; \7 p0 {- w
  2191. ;;; Latest revision made 2004-11-11
    " P2 h! o; v) W4 E$ t
  2192. ;;; Minor code cosmetic change made 2004-11-13- R$ l& h! m# c& U  @; r: j
  2193. ;;; Bug corrected 2004-12-23% J: r7 C) d  A

  2194. % l- h; V0 w3 ]1 S* [9 M9 A
  2195. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf
    & v8 G  z" E' V& e/ n5 x$ ]
  2196. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
    : `+ P5 n* V+ Q# J* H) _
  2197.   (setq oldcmdecho (getvar "cmdecho"))
    + U; K- d! f. v, E
  2198.   (setq oldpeditaccept (getvar "PEDITACCEPT"))
    2 X( |$ ?4 Z9 @" I0 e
  2199.   (setvar "cmdecho" 0)+ G! @$ s% V" o2 D, @
  2200.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16")), e: I% X. b$ l, f4 k* `9 e" m
  2201.   (if A2k4 (setvar "PEDITACCEPT" 0))
    / @7 C9 i$ s0 t  {% \. N
  2202.   (setq        okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
    3 s9 r' B' [$ m
  2203.   (princ "\nSelect object to join: ")
    9 q5 c* v' ~) ]( y( m- |1 p- l! M
  2204.   (setq ss1 (ssget okObjects))
    4 Y: Y1 F6 G, Z) M: V7 l% r9 ]
  2205.   (setq fuzz (getdist "\nFuzz distance <0>: "))
    ) g6 Z! G& y+ w
  2206.   (if (= fuzz nil) (setq fuzz 0))
    & ?% D, i3 {5 y, |
  2207.   (if (/= ss1 nil)& k: q1 _- v/ o7 [( R0 }
  2208.       (progn# z" ?5 B: J) A8 x9 Q1 d: X
  2209.         (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))) a' f# O5 g/ l  o9 \. M) U- ~- O
  2210.         (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))( I, p9 H' [# G
  2211.         (if (member objType '("LINE" "ARC"))
    ( ?% {+ X4 O4 B( Q; K/ G
  2212.           (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")* I2 {7 H  B" t# D; E7 Z) d, O) s& d
  2213.           (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz ""); X; Q! c3 z. u* O- v' O
  2214.         )! F0 ~9 e  [1 }4 Q
  2215.       )
    + P; [- z3 Z. N& ?  M9 r; V
  2216.   )2 w7 ?$ I# j  ?
  2217.   (setvar "cmdecho" oldcmdecho)8 z$ h& {8 {+ |
  2218.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
    $ E- l# n4 b! ?/ J
  2219.   (princ)+ P& L  }' c, Q# q3 e7 t
  2220. )
    ( P( u5 y- o( K: ~) R  W' X
  2221. % X' \1 R* M% p3 T% N( y
  2222. ;===========================VE CAO TRINH===========================
    " Y! ~. }7 M" e0 P4 W% Y1 M

  2223. 5 x% i& E% C7 v( ?
  2224. (DEFUN C:Cotcao (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL
    ( g! ]9 B* k0 h/ g4 e. `
  2225.                 CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)
    ' e  J+ D% R6 _# p" n0 i
  2226. (SETQ OLDERR *error*
    : L- ^* t3 y' P9 u# b5 j( h! V
  2227.       *error* loisb)
    * q/ p* r9 J0 z- @7 S9 Z
  2228. (command "layer" "m" "dim" "c" "" """")
    ! b8 r# {  r5 N
  2229. (SETQ CMD (GETVAR "CMDECHO"))
    7 |& |: ]  L( ^5 |2 f3 @$ V1 K
  2230. (SETQ NBC (GETVAR "CLAYER"))5 I: m6 a7 X* w. Q
  2231. (SETQ OSM (GETVAR "OSMODE"))8 l: Z9 a9 `9 M, A) }3 ?
  2232. (SETVAR "CMDECHO" 0), h' T) r; |# m7 c
  2233. (SETQ PT1 (GETPOINT "\nDiem cao trinh:"))  k, u$ q% Y$ k
  2234. (SETQ TX (GETSTRING "\nCao trinh:"))
    8 Q" V: C' G+ k" C' _8 E2 Z
  2235. (SETQ FCH (SUBSTR TX 1 1))  _3 X  h6 i- \$ z
  2236. (IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
    , t* c, J, |4 O1 T# K5 b: s
  2237. (SETQ CRST (GETVAR "TEXTSTYLE"))) B& N5 P+ u, s8 ^- u- A
  2238. (SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST)))). _% N& X* d; e  `; I; n& g
  2239. (SETQ TSIZE (GETVAR "TEXTSIZE"))
    . g/ Q$ X! }, c1 L1 E) C
  2240. (SETQ STR (RTOS TSIZE 2))
    % |1 q% Z/ F8 z9 @/ Y' n4 R
  2241. (SETQ PRMT (STRCAT "\nText height <" STR ">:"))
    " Q, \; L# d  [
  2242. (IF (= RSIZE 0)
    : i2 W8 f" Y- ~
  2243.   (PROGN6 L  Y' G+ v% ?4 u
  2244.         (INITGET 4)
    + h/ Q, m- X, I
  2245.         (SETQ TSIZE (GETREAL PRMT))
    8 A$ @$ f6 J! \" }. Z/ m; j
  2246.         (IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))
    ! U3 D% w+ M: T; @& x9 e" P- {
  2247.                           (SETVAR "TEXTSIZE" TSIZE))
    ; B( M' h& t* u
  2248.   )7 a/ `, U& J, n) c
  2249. )
    ! A: T6 ~: }5 i, F
  2250. (PRINC), g1 W" x7 D3 G% m6 r* N( m
  2251. (SETQ TL (/ (GETVAR "TEXTSIZE") 2))
    5 X! ?) y- c3 L
  2252. (SETVAR "OSMODE" 0)
    5 i/ _& g9 N" t  q" Q
  2253. (SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))$ s! P! \  Z1 q# K; }# z0 v$ v
  2254. (SETQ NPI (/ PI 2))% L5 F3 ]- j9 P4 w7 V4 ^. Y
  2255. (SETQ PT4 (POLAR PT1 NPI (* 1 TL)))+ ~2 H* X4 q, s; R7 [& W" e
  2256. (SETQ PT2 (POLAR PT4 PI (* 2 TL)))9 Z; x1 M; _, N1 ^6 K- q
  2257. (SETQ PT3 (POLAR PT4 0 (* 2 TL)))
    . q# [1 k3 ^8 E: B6 u8 B
  2258. (SETQ PT5 (POLAR PT4 NPI (* 5 TL)))
    2 I) o7 d6 M! ?3 R+ O/ u
  2259. (SETQ PT6 (POLAR PT2 NPI  TL))* d' F( `* J/ J: l
  2260. (SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))
    * f% A8 d' _8 q- K) u/ U3 B
  2261. (SETQ PT8 (POLAR PT6 NPI (* 1 TL)))+ Z6 ~" h8 x, w0 F  p
  2262. (SETQ PT8 (POLAR PT8 0 (* 2.5 TL)))
    1 m6 q& ^; G% x1 O( F' L1 b  I
  2263. (SETQ PT9 (POLAR PT1 pi (* 2 TL))): h9 w+ j* D8 S) U) h  J
  2264. (SETQ PT10 (POLAR PT1 0 (* 2 TL)))/ n/ j/ u# ~: a+ i+ T
  2265. (COMMAND "COLOR" "7" ""); n9 G7 L/ W' ?9 M! G8 H
  2266. (COMMAND "STYLE" "COTES"  "Verdana" "" "" "" "" "")
    3 G9 Z2 G" B7 U6 F; C5 S$ X
  2267. (IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))" R- ~' h6 ~$ N
  2268. (COMMAND "COLOR" "BYLAYER" "")8 S0 y5 c! Z' A1 w
  2269. (COMMAND "SOLID" PT1 PT2 PT4 "" "" "pLINE"  PT1 pt3 pt2  "")
    2 G- E( {  f2 t  }: C
  2270. (COMMAND "COLOR" "BYLAYER" "")! S) _0 j) s! T3 g6 A7 X* f& R
  2271. (COMMAND "pLINE" PT1 PT5 "" "pLINE" PT6 PT7 "" "pLINE" pt9 pt10"")
    - a9 M+ H4 V7 j3 b" Q% E3 W( O; a
  2272. (SETVAR "CLAYER" "0")
    " G: B' f+ c7 ^6 U2 D& _( j
  2273. (command "ddedit" pause)' z, y/ G0 B7 P) H5 B
  2274. (COMMAND "COLOR" "BYLAYER" "")
    3 S: R4 J6 U% _& T
  2275. (SETVAR "CMDECHO" CMD)
    ! A$ ]7 V  g7 o" {8 Q
  2276. (SETVAR "CLAYER" NBC)3 z' S" W! V# `5 p1 P
  2277. (SETVAR "OSMODE" OSM)7 p& u0 R( R3 X6 R+ a3 r2 j8 E
  2278. (PRINC)
    - d6 t) T. r" O5 u) b) }+ F* w7 e
  2279. )
    7 d& |# C4 P' r- C
  2280. . l6 c: m5 E! n7 L
  2281. ;;; =========================== VE NET CAT CHEO (GC) =============================1 h( e" L) u; p5 ^
  2282. + O! d' u4 e' l# [
  2283. (Defun c:G1(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang)) t. N; i3 {% z
  2284.         (setq x (getvar "osmode"))
    - \6 z# U, X4 y; Z  c- \
  2285.         (setq p1 (getpoint "First point : ")
    ' Z% j& y3 G7 W, c6 ^
  2286.               p2 (getpoint p1 "Second point : "))7 J& b$ R2 Q* l9 e, Y2 M
  2287.         (setq l (distance p1 p2))/ M3 D% o2 ?9 b3 C8 w! J
  2288.         (setq p11 (polar p1 (angle p2 p1) (/ l 5))
      [" j/ z9 Z% Y9 y+ j6 t* ]1 f" u" B
  2289.               p12 (polar p2 (angle p1 p2) (/ l 5)))
    % P( f: J4 G4 \/ c& k& l
  2290.         (setq ang (angle p1 p2))
    / Z$ T& X# d3 m7 t& k
  2291.         (setq p3 (polar p1 ang (/ l 2.5))8 ?& U0 b) h3 O' o/ S8 x
  2292.               p4 (polar p3 (+ (/ pi 2) ang) (/ l 5))
    " {! Y$ r( a$ M
  2293.               p5 (polar p3 ang (/ l 5))
    # y' e/ q4 G& U
  2294.                 p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))  ?* [4 O8 D$ U) u! m! f
  2295.         (setvar "osmode" 0)
    : Q* \' \9 G6 {: J; Z3 O7 l
  2296. (command "pline" p11 p3 p4 p6 p5 p12 "")$ k# P1 e5 P$ Z9 [9 K- S/ P
  2297. (setvar "osmode" x)0 E! j& O  l9 {* k
  2298. ). ]' ^; e# y7 L) d8 z
  2299. ;----------------------------------------------------------------------------------2 J3 p! S) K7 m& N4 m
  2300. (Defun C:G2 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6; r# f' V' \! ]/ t
  2301.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))* d; d' T6 |1 t  L- x- j
  2302.    (setq ps1 (getpoint "\Chon diem thu nhat: "))8 L4 J, B/ ~- ~: v% r
  2303.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    & |* U. q9 x- {: `; N
  2304.    (setq sb 50.0 sh 200.0 se 20.0)  z" i' \0 P2 t
  2305.    (setq ang (angle ps1 ps2))1 R$ ^2 t6 v( |4 e
  2306.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    ' N) a' c9 ]$ f* f; H! R
  2307.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    ; \: O: v1 E/ U/ N& R) C
  2308.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0))); f! \( q9 T$ E7 s$ ?, y
  2309.    (setq pf5 (polar pf2 ang sb))
    $ O0 k4 b: @9 S- _2 _% H7 ^" A1 N
  2310.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))) U" |7 ^8 b* Y' t! L  `* L
  2311.    (setq pf6 (polar ps2 ang se))1 D7 f1 D3 O( [3 j. i, ^
  2312.    (setvar "OSMODE" 0)
    ' N4 n8 o; L; c5 V
  2313.    (setvar "BLIPMODE" 0)
    ! d# ]" N+ _1 i: N" J
  2314.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")- R8 K4 J: S, j' o6 Q+ S
  2315.    (setvar "OSMODE" 703)% H( A1 I# J! ]* B4 ]
  2316.    (princ) ): j/ _2 O' ~* X0 n0 C3 H
  2317. ;----------------------------------------------------------------------------------! X7 N& W1 }4 \# r; y4 m( n1 B
  2318. (Defun C:G3 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    % J* }1 ^& C6 t! Z, F/ k* |
  2319.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))
    5 f2 s3 g. X7 i% a$ R' o) y5 R+ V
  2320.    (setq ps1 (getpoint "\Chon diem thu nhat: "))
    $ {5 w6 `" u% \0 m2 x2 t
  2321.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: ")): S/ r9 U% Q% `/ N" x+ @6 ^# p
  2322.    (setq sb 100.0 sh 150.0 se 20.0)
    8 {5 J" \4 M4 j6 }
  2323.    (setq ang (angle ps1 ps2))+ e& ]2 Z: X. y' m9 z& U
  2324.    (setq pf1 (polar ps1 ang (- 0.0 se)))6 z* |, O( J$ G- T, P$ d
  2325.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))2 n+ _- b1 P( T( e
  2326.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    % ?8 y& u& Z* g$ q) `9 ]' |
  2327.    (setq pf5 (polar pf2 ang sb))
    0 R" f2 l0 l- V. n5 J
  2328.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    ) z% l& L4 F7 A5 z6 F
  2329.    (setq pf6 (polar ps2 ang se))+ |( R+ m) V+ T# g3 N
  2330.    (setvar "OSMODE" 0)
    6 e2 g$ W9 D6 r! q
  2331.    (setvar "BLIPMODE" 0)
      ]# `: d2 Y" C  }4 C6 m0 {
  2332.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    2 ~1 t' I) q( `7 p
  2333.    (setvar "OSMODE" 703)8 o: @: l; {2 Y6 |( U$ `
  2334.    (princ) )
    8 i2 F9 @* S) k& H) N- e
  2335. ;----------------------------------------------------------------------------------
    3 R! ?. n8 e5 o* \2 U! i* a
  2336. (Defun C:G4 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6: J& _1 U$ U. b1 u, {# p
  2337.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))
    0 ^; H; c! W' z0 P2 ?
  2338.    (setq ps1 (getpoint "\Chon diem thu nhat: "))/ P! s% h# q& C: k, b3 t% _5 D
  2339.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    & m( ^; q  i+ [( x; B
  2340.    (setq sb 100.0 sh 250.0 se 20.0)
    8 l% n) \8 K: q3 K
  2341.    (setq ang (angle ps1 ps2))
    1 q. c* V) g& a# S
  2342.    (setq pf1 (polar ps1 ang (- 0.0 se)))1 z; `. q2 U! |$ m
  2343.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))$ z$ I0 P7 q& t
  2344.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))+ U! u5 o/ f( V: Y7 K
  2345.    (setq pf5 (polar pf2 ang sb))8 N1 m5 r- ]; B
  2346.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))9 l+ k: y) e, G4 i
  2347.    (setq pf6 (polar ps2 ang se))
    5 x- A' P  Q9 E
  2348.    (setvar "OSMODE" 0)9 n) K+ D1 g6 N
  2349.    (setvar "BLIPMODE" 0)& C" ]' F* v9 G) Y7 Z! D
  2350.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    - ~2 {6 v. @, c! p
  2351.    (setvar "OSMODE" 703)4 s& _6 I- R) a  n8 v7 N
  2352.    (princ) )
    3 }6 E' j) \6 q# S% s  a: i

  2353. ; M/ Y6 ]! I  r  s6 r  g
  2354. ;==================================================================================, o8 o3 q: |; s* m+ O1 ]; D
  2355. (defun c:ang (/ ent pt1 pt2 ang)
    , |: S; j* s; O2 y
  2356.    (setq cmd (getvar "cmdecho"))
    $ ~5 o% T, k$ [) o3 |( g: _
  2357.   (setvar "cmdecho" 1), c( y6 i, M& @4 E1 ?5 z
  2358.   (prompt (strcat"\nThay doi truc toa do theo duong thang chon truoc"))
    $ ^& f0 A; v) N
  2359.   (setq ent (entsel "\nChon duong thang:"))
    $ R: R9 Z  U8 k, L5 N
  2360.   (if ent
    3 J) _% @1 X8 C" x
  2361.    (progn; |. M, L( {6 C( n6 A
  2362.     (setq ent (entget (car ent)))
    $ P2 M- ~0 k0 L5 Y0 `9 N* [0 |6 u
  2363.     (setq pt1 (cdr (assoc 10 ent)))
    7 S( F) a; o& n1 l
  2364.     (setq pt2 (cdr (assoc 11 ent)))( ^" T: g7 [5 H: _) E' u; _# w
  2365.     (setq ang (angle pt1 pt2))
    " ?* M7 J  d6 p) o3 X1 }
  2366.     (setq ang (/ (* ang 180.0) pi))
    ; J; m# x' @1 e* y  S
  2367.     (setvar "cmdecho" 0)
    " F7 V9 M* p1 Y* `7 r
  2368.     (command "setvar" "snapang" ang)1 Y% V# L9 V1 [( w$ b
  2369.     (princ "\nGoc cua truc toa do moi : ")7 A, {, Z. t% W+ E) i; K
  2370.     (princ ang)
    0 v  V" [2 e  @) W- L0 s% ^( U
  2371.    )
    ( H* o) S- \: U) l& _! n8 x
  2372.   )
    " T0 D0 H' ~; E
  2373.   (setvar "cmdecho" cmd)( |# |# F* h, v. Q0 s: ~  K- m
  2374.   (princ)9 a$ w5 y' K0 v: t5 ~7 g' x% E* `
  2375. )
    $ l; C7 q) e. i! x
  2376. ;==================================================================================
    * X- V. z& [8 a
  2377. ;==============================   KY HIEU DOI XUNG   ==============================7 a0 c: w# p' s4 q7 t
  2378. ;==================================================================================
    6 |  O' e6 J* A1 u9 k
  2379. , U/ V" S# W$ Z8 I8 O3 P3 |
  2380. (DEFUN C:DX (/ CMD OSM OLDERR PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 PT9! q% G1 v1 E, F7 V  O) y
  2381.                 SZ G45 G135 G90 G180 SS loi)
    0 Z& C' _) w+ M  ~+ m) ]* Q8 E
  2382. (defun loi (s)
    , U. j! n0 t! V! b+ e, N/ u
  2383. (if (= s "Function cancelled")
    * [$ T; f7 b, N1 y( _3 |7 }! Q
  2384.      (princ)
    ' Z7 |2 ]) T1 j
  2385.      (princ (strcat "Error:" s))& l$ a# }- |( z. d' Q3 l3 B
  2386. )
    # l. F$ z( k, W7 x6 D% l
  2387.          (SETVAR "CMDECHO" CMD)
    ( m" k/ I: {3 B9 F; y$ F
  2388.          (SETVAR "OSMODE" OSM)
    5 U% u, ^' {+ `' |* Z  O; h
  2389.         (SETQ *error* OLDERR)
    8 `4 k! M, r! V
  2390.          (PRINC)6 K' q  a5 m( m3 y4 X; @% p
  2391. )
    : T9 }: A8 N- O0 x
  2392. (SETQ CMD (GETVAR "CMDECHO"))
    % |4 c. T" s1 L5 V$ k# U. Z& T
  2393. (SETQ OSM (GETVAR "OSMODE"))
    * w3 L' `. ~+ ]1 }& X  a
  2394. (SETVAR "CMDECHO" 0)
    - C: W( f7 b. D' ]) X
  2395. (SETQ OLDERR *error*9 [( k& R0 y9 U: g8 e
  2396.         *error* loi)4 B! Z3 H# S+ d  G/ U
  2397. (SETQ SZ (GETREAL "Size <1>:"))- H; a0 C9 s) x, a0 x  d# O
  2398. (IF (= SZ nil) (SETQ SZ 100))& }4 v/ R1 n8 w9 k# [3 c
  2399. (SETQ G45 (/ PI 4))7 F- P# C" j# ]
  2400. (SETQ G135 (* 3 (/ PI 4)))
    * R: T' \/ g$ Z0 k. }! H4 T5 e
  2401. (SETQ G90 (- G45 (/ PI 2)))' X! R7 q8 e$ _6 W' j3 M  J# O
  2402. (SETQ G180 (+ G135 (/ PI 2)))
    % V% E9 {7 Y% X: b) {
  2403. (SETQ PT1 (GETPOINT "\nDiem doi xung:"))
    " _/ R7 J! H( w# P+ M% G6 ]
  2404. (SETVAR "OSMODE" 0)$ T7 B: ~( k9 b( I
  2405. (SETQ PT2 (POLAR PT1 G45 (* 2 SZ)))8 ^( o1 o8 }/ U) s
  2406. (SETQ PT3 (POLAR PT2 G90 (* 2 SZ)))
    ) x1 ]. `8 N5 |. l* }) N
  2407. (SETQ PT4 (POLAR PT1 G45 (* 1 SZ)))- A1 G+ l/ j% w% O1 k, l
  2408. (SETQ PT5 (POLAR PT1 G135 (* 2 SZ)))
    9 @' n4 ]* N; |8 {: m, y5 s
  2409. (SETQ PT6 (POLAR PT5 G180 (* 2 SZ)))! Y. v( y6 B  @8 c3 T2 S% a. W1 e
  2410. (SETQ PT7 (POLAR PT1 G135 (* 1 SZ)))4 C8 j/ R; v  @7 t1 N" N
  2411. (SETQ PT8 (POLAR PT1 G45 (* -0.7 SZ))); i; b  ^2 {* n, w" M
  2412. (SETQ PT9 (POLAR PT1 G135 (* -0.7 SZ)))
    8 o/ B. Y+ R2 b/ g+ c
  2413. (PRINC "\nGoc quay:")
    / r5 {' }7 o5 B7 |; P6 M
  2414. (SETQ SS (SSADD))
    3 s4 ~2 G2 u$ b3 }7 r' }- B* m% H# c
  2415. (command "layer" "m" "Dim" "c" "" """")0 R  W) ]; J9 p3 G
  2416. (COMMAND "COLOR" "1" "")5 ?( B3 J2 `' W4 |4 p
  2417. (COMMAND "LINE" PT8 PT2 "")0 J# R6 S0 x+ V  g6 Y7 j6 D3 e
  2418. (SETQ SS (SSADD (ENTLAST) SS))
    : X: R' |) X" P! n9 N! O
  2419. (COMMAND "LINE" PT9 PT5 "")* u: x- \9 D7 {- o& q
  2420. (SETQ SS (SSADD (ENTLAST) SS)), F& q/ E# {0 z4 Z* m
  2421. (COMMAND "COLOR" "1" ""): u3 c5 a+ s; m& {
  2422. (COMMAND "SOLID" PT2 PT3 PT4 "" "")* t0 k6 c4 _  M
  2423. (SETQ SS (SSADD (ENTLAST) SS))! Q0 P/ i1 M) Y- i: Q6 V
  2424. (COMMAND "SOLID" PT5 PT6 PT7 "" "")
      I& a0 R: ^' k* [# s4 L
  2425. (SETQ SS (SSADD (ENTLAST) SS))2 G% G" c% s5 p/ f
  2426. (COMMAND "ROTATE" SS "" PT1 PAUSE)$ V; G8 _' E6 O5 n% z) c7 ?/ y) L
  2427. (COMMAND "COLOR" "BYLAYER" "")
    ; d9 Z6 G- a- o
  2428. (SETVAR "CMDECHO" CMD)
    8 K; K, \% v5 Q8 s! v; I9 Y) x& ?
  2429. (SETVAR "OSMODE" OSM)# O+ a/ y2 F) g" @
  2430. (SETQ *error* OLDERR)
    + S# |) k1 L- U, Y
  2431. (PRINC)- ]5 w* }: E! Z; H: P
  2432. )8 V, a1 o5 M& E: U2 o
  2433. ) u: x; D$ [/ N7 f9 c3 x" `. q
  2434. ;==================================================================================
    , }7 {( Y( Z) E0 L" J$ F; F
  2435. ;=================================   KY HIEU TRUC   ===============================
    ! W  D4 X0 N+ [* ^
  2436. ;==================================================================================
    2 c: V! L6 v8 m- r( R

  2437. / I# q) t6 b) {9 ]% ?. w# |
  2438. (defun C:vetruc ()8 o; _: z5 o5 p4 T
  2439. (setq bk (getvar "USERR3"))8 ]! e2 ?; s9 K& X9 p
  2440. (if (= bk 0)
    # u8 U" w% W/ D- n' h+ q; H
  2441.   (progn
    6 S# c+ k+ U' C$ i
  2442.     (setq cont "1")
    , i! `, Q. r% b
  2443.     (setvar "USERR3" 1)' T- }! }" Z5 ^
  2444.     )
    4 h% P, @* Z8 ]9 \( C
  2445.         (setq cont (rtos bk))6 U, c& A+ e$ t% A: ]/ L
  2446. )5 X2 Q' a  z) e& q* W  F
  2447. (setq pt1 (getpoint "\n Nhap diem dat:"))
    " ^1 N' L, g' R  W5 T
  2448. (command "layer" "m" "Dim" "c" "" """")
    # ?* N5 S9 B$ O) T: }
  2449. (command "osnap"  ""): z( t' d2 R, h! A
  2450. (COMMAND "COLOR" "7" ""): W2 ~& z! n. l, N
  2451. (command "circle" pt1 150 "")6 P' O# i( O. R: A: y/ d
  2452. (setq pt2 (polar pt1 0 150))$ b5 U+ H' F: f. r4 N
  2453. (setq pt3 (polar pt1 (/ pi 1) 150))# ?: }! s' Z  H; e
  2454. (setq pt4 (polar pt1 0 300))4 [. y. l: E6 m
  2455. (setq pt5 (polar pt1 (/ pi 1) 300))% M1 [4 V5 d, ~. j' W/ l( r
  2456. (setq pt6 (polar pt1 (- 0 (/ pi 2)) 150))3 S  t6 d; l" y& e; E8 G2 ?
  2457. (setq pt7 (polar pt1 (- 0 (/ pi 2)) 300))
    ! L- J  g/ k$ h' |  b
  2458. (setq pt8 (polar pt1 (/ pi 2) 150))  m$ f/ j) `6 g6 {$ y* N# v* F
  2459. (setq pt9 (polar pt1 (/ pi 2) 300))
    5 m$ }) N3 K% f7 r
  2460. (setq pt10 (polar pt1 0 150))# }  @) `$ I* T( a% a! P
  2461. (setq pt11 (polar pt1 (/ pi 4) 150))
    4 J3 c- |$ Q0 B( Y# u
  2462. (COMMAND "COLOR" "BYLAYER" "")
    3 G" ~9 j) G& m% h) U1 E( P
  2463. (command "line" pt2 pt4 "")
    ( y3 L8 N- s2 J
  2464. (command "line" pt6 pt7 "")' l1 ~6 ^" |3 j2 X, p
  2465. (command "line" pt3 pt5 "")
    " d& L5 ?, s0 O8 V4 d, Z# [3 `: e' l
  2466. (command "line" pt8 pt9 "")
    5 t' C" R2 o2 H1 k6 ]* h# n
  2467. (setq dk (strcat "\n Size:<"cont">")); X( o  z! P! }) g
  2468. (setq bk (getreal dk))
    2 Y8 I: l5 ?# G$ E7 ^
  2469. (if (= bk nil)
    1 h' m0 r; ?5 ]+ @6 d- C; }
  2470. (progn* X( p2 v, H7 J# {- B
  2471.   (setq bk (getvar "USERR3"))7 L/ b* e+ Y' V# @
  2472.         )/ ^+ A5 B9 ^1 f6 [
  2473.   (setvar "USERR3" bk)/ }8 F8 B9 |6 Q$ C0 Z% H
  2474.   )  \0 H5 x  N- k% a. @$ b
  2475. (command "scale" pt4 pt5 pt7 pt9 pt11"" pt1 bk"")7 n7 d3 Y, `5 B; ^1 B7 Y
  2476. (COMMAND "COLOR" "7" "")9 `/ ?8 q' k7 w2 L0 m) r: ~- t. H
  2477. (COMMAND "STYLE" "Truc"  "impact" "" "" "" "" "")$ s3 U1 I) S  o1 d# N' d
  2478. (command "text" "j" "mc" pt1 (* 150 bk) pt10 "A" "") 7 d# c# i2 c. D* y. ^! M, G/ S) F( Q& @' f
  2479. (COMMAND "COLOR" "BYLAYER" "")
    ' Y2 D% @" G$ m& k9 d* D9 L, y7 l
  2480. )
    + [9 W, z6 g  V9 s, E
  2481. ( K, O% D3 `! P* N) {4 b
  2482. ;=====================================================================/ K+ m2 o# b5 r
  2483. ;CA - Reverses the case of text.  (Upper to Lower and Lower to Upper.)
    % f- j% J& D7 r2 U5 w4 e
  2484. ;
    ) k9 |( A1 e3 S& D
  2485. ;Jeffery P Sanders
    ) g6 I/ i) U; c+ _$ |" _+ O
  2486. ;
    ) }: ^0 D+ D$ C1 Q" c
  2487. (defun C:CA(/ en enlist tx newtx cnt tp asc note)
    ; w( b, M! q& V" c2 ]4 R3 Q* u$ }4 x
  2488. (setvar "cmdecho" 0)
    2 k( ]+ A# n7 L: B
  2489. (if(setq en(entsel))
    9 l4 @/ a. r( j: I- S7 N
  2490.    (progn
    + a! H9 ?0 K1 u3 Z# [' z# @( U# L3 J
  2491.       (setq enlist(entget(car en))). g6 ?% q( v) ]' u0 M
  2492.       (if(= "TEXT"(cdr(assoc 0 enlist)))
    & s: j7 W- g' l! b& D
  2493.         (progn# o6 ?! ~" R3 R) O8 R5 `9 g
  2494.           (setq tx(cdr(assoc 1 enlist))
    , I; g' `7 _: p* N: h: C% Q
  2495.              newtx "" cnt(strlen tx)
    . _9 J; R7 }: L. U! v
  2496.               note "\n...CASE Reversed. \n "
    2 {& e( t, t- {: U  X5 g
  2497.           )
    ( T1 {, U6 j( [! @
  2498.           (while (> cnt 0)3 S+ p( B# T( l+ u% S3 `
  2499.              (setq tp(substr tx cnt 1))+ x9 g4 E8 f4 W) X/ k- O
  2500.              (setq asc(ascii tp))
    ; |6 k0 P1 h" ]' W4 Y
  2501.              (if (> asc 96)2 i/ t- }0 {7 ^) s! u) Q& r
  2502.                (setq tp(strcase tp))
      [4 ~: `2 y# J; F% |
  2503.                (setq tp(strcase tp T))# `4 w4 ^0 r* g- x5 K) v! Q+ B# b
  2504.              )& B+ U5 |) l1 j3 ]" ?1 C
  2505.              (setq newtx(strcat tp newtx))2 m( O& g5 B  t& S7 R1 _! T
  2506.              (setq cnt(- cnt 1))$ I: C5 p% w7 ~: s
  2507.           )6 n9 v# l, \2 G7 U+ E
  2508.           (setq enlist(subst(cons 1 newtx)(assoc 1 enlist)enlist)); x) W/ T9 f2 O
  2509.           (entmod enlist)5 \2 [: O# z* y$ ]* }6 B
  2510.         )2 E/ o) V/ t: `* @0 F! m4 d9 T* X
  2511.         (setq note "\n....Text Only Please. \n ")  l+ V( |) g0 s
  2512.       )! D, J  B9 _  h) J% x& U
  2513.    )
    1 y5 _, ^" a% E, a* o1 S0 _9 r
  2514.    (setq note "\n....Nothing Selected. \n ")  Y3 p2 W; [( N8 J/ W9 S0 G
  2515.   )
    / O7 }$ L  Y  r
  2516.   (setvar "cmdecho" 1)0 v# J9 Q! c# C% |
  2517.   (princ note)
    % O8 o* P" G9 E
  2518.   (princ)! h! A" I# i' C
  2519. )
    ) I' t% M% b% E. f8 F7 h
  2520. 1 x, f+ r$ [# s! e3 @
  2521. ;=====================================================================
    0 z4 R8 E# u" P+ S, N" Y
  2522. ;==================== NEW TEXT STYLE UPDATE ==========================  ~( V5 W! |- }' _* R' ~" a
  2523. ;=====================================================================
    9 |7 U# R, O. x& d) s# R/ \& {

  2524. 7 D; [# R9 {" n2 q, g  K# ]% _6 \
  2525. (defun c:nS (/ tdt ssdt sodt index). W9 T( f/ b2 a! T0 Q& U7 F* Q
  2526. (defun ObjName (ssdt /)
    $ A1 V$ Y, ~1 P6 H1 z' D8 u
  2527. (cdr (assoc '0 (entget ssdt)))1 e! L- }: M; S6 k2 N
  2528. )
    & h1 \$ [( g! p2 |
  2529. (defun MoPL (ssdt /)3 c- f  l. g( H8 y$ m
  2530. (= (cdr (assoc '70 (entget ssdt))) 0)0 k2 I* w. |$ |; @9 H( @
  2531. )9 o. _; |/ t1 S0 _% p( ~
  2532. (defun NoiPL (ssdt /), b' i, `( v& c$ s0 c6 x$ y
  2533. (if (MoPL ssdt)# i$ Z- h6 |) |6 `+ O
  2534. (command ".PEDIT" ssdt "J" "All" "" "X")
    # o0 ]4 J- b, N" b5 ?- e
  2535. )5 _: w; H2 i6 @. ?' X* s, ~
  2536. )0 ]% F7 ^  P& h- n
  2537. (defun NoiLC (ssdt /)! Y9 i0 n+ v( z. r8 J
  2538. (command ".PEDIT" ssdt "Y" "J" "All" "" "X")
    + I5 t* c' Q. x( M' ~
  2539. )
    " s% t2 r/ E% U) N! d, w+ Q2 x
  2540. (setq
    3 a9 X$ y: M4 u8 @! B
  2541. tdt (ssget)4 Y8 u8 A1 F$ F, B) p! {$ ?
  2542. sodt (sslength tdt)
    ; O2 Q' n- t6 I0 H* }6 ^4 ]
  2543. index 0
    : H9 Z; ]% _. c4 f
  2544. )
    2 e2 l5 g: ^4 o# P- b
  2545. (repeat sodt
    5 c: |; P) C7 I
  2546. (setq
    8 a, Y" J+ b; i
  2547. ssdt (ssname tdt index)4 g/ c- R6 \2 N3 {
  2548. index (1+ index)
    9 n: C: a6 @; }1 r- t
  2549. )) L' Q! }" X% ^& T" u. x
  2550. (if (or (= (Objname ssdt) "LWPOLYLINE")
    4 @' ?- W1 P) f* F, B7 ~
  2551. (= (Objname ssdt) "POLYLINE")* O$ b/ J* C2 S+ h$ z: T9 X, H
  2552. )$ |/ n2 n% b) Z+ R* C$ m( W
  2553. (NoiPL ssdt)% O8 ~7 e$ ^! D
  2554. )
    $ j# l  K1 u3 J* Q, x
  2555. (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
    9 q  n6 B  G& f! |% y
  2556. (NoiLC ssdt)' j( e. G; \, s0 L8 q: l
  2557. )
    9 g5 J% M% \: j2 z$ u/ E) J  M3 z
  2558. )
    ) _& `0 F7 x' |+ R
  2559. (princ); @5 Y1 J- r0 U& }. J, J
  2560. )
    ; m) P5 p% \+ `) z' k5 g8 H& \
  2561. 5 V9 p0 D, Z7 _4 M, p; d
  2562. ;=====================================================================  J3 K9 D0 a9 [$ `" l2 a
  2563. ;;; AREAM.LSP" M  `" ?4 d/ `$ P5 [
  2564. ;;; Function: Calculates the total area of selected objects
    3 F- ^# M, f) h  I
  2565. ;;; By Jimmy Bergmark4 C7 q1 K8 R  J% }' r. t
  2566. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
    4 y$ `8 ~/ i2 S) D- i5 u( F
  2567. ;;; Tested on AutoCAD 2000
    8 s5 E. [5 |  b* k. a- f% S' L

  2568. 4 A; C, i2 [5 @, D5 _
  2569. (defun c:ea (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)
    6 j" @& q1 ?7 O0 k; m, h* w( }
  2570.   (defun errexit (s)
    % N. J; m- E/ g9 Y3 ^% x4 O
  2571.     (restore)
    " i  {6 w/ Y2 v3 v
  2572.   )
    $ U8 v& L0 y* l4 {0 w* ?3 X) N

  2573.   K" b2 K  \: n
  2574.   (defun undox ()
    # A: |4 m8 y" |% m( e4 H' m
  2575.     (command "._undo" "_E")
    ) m/ h' T3 c* c. \7 r+ [
  2576.     (setvar "cmdecho" oldcmdecho)- _5 w# }0 t% D9 I! V% [0 ~
  2577.     (setq *error* olderr)
    . E* a$ H3 b$ v2 d
  2578.     (princ)
    8 R% W- P" h3 T% V% B& b: t
  2579.   )9 ~% x0 Q+ I% c0 S2 ^+ L

  2580. 6 l: ]1 v7 n3 m8 H  X
  2581.   (setq olderr  *error*$ [. t# M# a# g6 |+ o. i/ |
  2582.         restore undox# J- t7 I& N! z8 e; u" ?$ h  z' x
  2583.         *error* errexit
    0 |1 x) k5 ?+ J
  2584.   )  Y+ C/ K# J0 N. V3 f/ s7 @. t2 i
  2585.   (setq oldcmdecho (getvar "cmdecho"))
    & b$ t+ C- x; Q. _% r( M% |( n
  2586.   (setvar "cmdecho" 0)5 N0 i6 U* j1 g
  2587.   (command "._UNDO" "_BE")1 u" }6 D0 r! A0 o& W+ d/ i
  2588.   (if (setq ss1 (ssget '((-4 . "<OR")
    7 |+ C! K! x& i6 n  }1 [
  2589.                          (0 . "POLYLINE")$ {4 a7 L4 S, I# C; N
  2590.                          (0 . "LWPOLYLINE"); `5 a9 }% j0 |$ J
  2591.                          (0 . "CIRCLE")
    8 ^+ I# Q; m% @% v
  2592.                          (0 . "ELLIPSE")7 }( \1 O1 d5 Z3 X
  2593.                          (0 . "SPLINE")5 x0 O9 s/ Y4 W8 P7 n+ E
  2594.                          (0 . "REGION")
    % E5 Y* c4 m4 u3 g7 f% z+ }
  2595.                          (-4 . "OR>")7 Y3 D& E. s& g
  2596.                         )
    % H+ y1 O) ^# j2 B; a) s7 L
  2597.                 )2 X9 V7 [* L. l1 b1 Z
  2598.       )
    # t( D2 U6 T7 V! q
  2599.     (progn7 s3 z$ Q5 G3 H6 Y) Q1 ~
  2600.       (setq nr 0)! L* ?+ s7 f/ R, o
  2601.       (setq tot_area 0.0)
    % F- }, D6 b7 X( n- X2 L3 a
  2602.       (setq en (ssname ss1 nr))" C3 @6 y" l: h6 _
  2603.       (while en. i4 X8 Q+ M6 k7 t4 Y6 O: a
  2604.         (command "._area" "_O" en)1 Y( J, ^2 a3 e9 `: G5 e5 h. @
  2605.         (setq tot_area (+ tot_area (getvar "area")))4 J9 \4 ]9 I+ I
  2606.         (setq nr (1+ nr))
    : [9 r" y& _4 _6 b9 G
  2607.         (setq en (ssname ss1 nr))
    / `( e8 k. |3 S6 r
  2608.       )
    0 @( H% E4 `9 \
  2609.       (princ "\nTotal Area = ")$ D; r! u8 [; N9 T8 H* J
  2610.       (princ tot_area)
    5 B& {: Q: g2 M% s6 u, n
  2611.     )3 [' p" K! C. `' ]3 L/ S- u
  2612.   )" L! j' m$ }! N0 H7 }& S/ h
  2613.   (restore)& H. X- c1 k# ^/ c" L
  2614. )
    + q' V" Z! b3 w# V
  2615. 7 o" ~% W$ i# N  y0 I
  2616. ;=====================================================================
    / \, h/ n' B+ @2 y. c+ M- v$ a1 p5 Y
  2617. ;;; By Jimmy Bergmark8 R0 M$ z$ r  h* v
  2618. ;;; Copyright (C) 2008 JTB World, All Rights Reserved
    7 \' N* ~* k. a9 [
  2619. ;;;* w& J' a% y' S, n
  2620. ;;; Created: 2008-03-31
    0 ]7 t" @6 |4 _; N: s8 R
  2621. ;;;3 N2 j1 C2 E' G" ^! H
  2622. ;;; Convert Attribute definitions to mtext
    ; t( _$ b  Y  M( Z  O$ L0 i3 |
  2623. ;;;
    1 W8 `& X$ X( x7 m- Y2 i/ r

  2624.   H0 V, G+ N: H
  2625. (defun c:ATB (/ eset1 blkcnt en enlist tag1 ht pnt vl space)
    ) s1 ~4 D# I! c# ]7 L" M4 P- I
  2626.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))& t+ A9 \# S  R9 \
  2627.         blkcnt 0
    ' x( Q7 K3 J7 p, G. e3 u
  2628.   )
    $ s9 s. V9 s; y6 f; T

  2629. $ u' h  u% w7 m
  2630.   (if eset1
    ; j0 V7 U7 W/ ^9 ~' I3 B0 `) }
  2631.     (while (<= blkcnt (- (sslength eset1) 1))
    , `: G* q( l9 K9 ?, V
  2632.       (setq en           (ssname eset1 blkcnt)  D+ Y/ r& \) n! \
  2633.             enlist (entget en)
    0 b$ ^; Z4 y! ?# s) K" ?2 R  m) X4 U
  2634.             ht           (cdr (assoc 40 enlist))
    ; U2 n  o1 A' E9 j& Y7 s
  2635.             pnt           (assoc 10 enlist)# c* \, o3 Q$ [8 \( d1 [) D4 W
  2636.             pnt           (subst (+ ht (caddr pnt)) (caddr pnt) pnt)
    * m4 a- e2 I7 Y6 ?3 _0 [
  2637.             space  (cdr (assoc 67 enlist))1 m$ P  ]" Y6 g2 s% j! J
  2638.       ); `2 n7 t+ N; t# w
  2639.       (setq vl (list
    ) L* m! ^3 v6 a' H; h5 E
  2640.                  (cons 0 "MTEXT")2 n9 O, Y2 M, c! G9 k! F" R
  2641.                  (cons 100 "AcDbEntity")' L+ @4 x( q( K1 M
  2642.                  (cons 100 "AcDbMText"), g& O& y& I/ |6 z/ T
  2643.                  (assoc 7 enlist)
    ( W- H" A7 \5 B
  2644.                  (assoc 8 enlist)
    . y8 e0 p3 h1 j0 u
  2645.                  pnt$ c7 Q; g7 {+ i& l
  2646.                  (assoc 40 enlist)
    ! q  S+ G8 Q: ^+ Q& U! [
  2647.                  (cond ((assoc 62 enlist))
    : x' r( g9 ~2 g
  2648.                        ((cons 62 256))' t" O8 L' Q$ Y1 c+ I' Y0 A1 ?1 ^
  2649.                  ): |" [# Q  i8 Y: D, J4 }/ ~. k
  2650.                  (cons 1 (cdr (assoc 2 enlist)))
    3 F; A2 x' I, v2 b
  2651.                  (if (= space nil)! \. P7 p4 T4 n6 Z
  2652.                    (cons 67 0)3 U- U0 q1 {9 O7 n
  2653.                    (cons 67 space)4 Z8 |9 b4 ]3 S5 l
  2654.                  )5 F+ i7 o. u2 e/ r' a  Q
  2655.                )9 E' Y" Q& ~2 Q. u
  2656.       )
    9 ?: @9 B& g+ q* B) B6 |1 W
  2657.       (entdel en)
      e( O. e- F; @
  2658.       (entmake vl). c, y9 l- c8 Q
  2659.       (setq blkcnt (1+ blkcnt))) u9 F' S# g  |+ K# I6 N" d6 e
  2660.     )$ D2 K9 }" G$ J: `( c
  2661.   )! t: z' t7 H  G9 M% f
  2662. )
    ' x7 \* D( F; z3 D& `

  2663. 7 ~0 t. L3 N) m' w8 B
  2664. ;=====================================================================
    3 X/ b1 P0 A% H. P6 h' k9 N
  2665. ! ^1 v/ Y! D: I% w
  2666. (defun c:xxx ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)( N' T6 _1 `1 s8 y
  2667. ; Khoi dau cua chuong trinh
    1 k* A9 }- |; Y( v# G% w; n
  2668. (princ "\nCopy Inteligent...\n")
    $ l. s, L9 \* H# h
  2669. (setq         luuecho        (getvar        "cmdecho")
      C: ?- n3 ^* q6 f6 n% f
  2670.         luu        *error*7 \2 {9 h. n$ A3 k0 A% A3 Y* {' B
  2671.         *error*        ketthuc4 K5 L1 k/ x, {! g3 s2 s
  2672.         cumdt         (ssget)
    - K$ B8 [8 d0 h  T: Z; w
  2673.         dodai         (sslength cumdt)
    : i3 r0 P- H' E0 [* T
  2674.         goc                (getpoint "\nSelect base point:")
    % \- I9 l+ F3 |4 l# e
  2675.         thoat                nil
    ) k6 V4 t+ |0 }, B
  2676.         dem                0- ^- v( [6 p; R, s" g
  2677.         textxl                nil* W+ X9 q' f4 ]- D# \: f# |
  2678. );: X, ~2 {, P7 v" q6 A: ]# B5 t7 m
  2679. (setvar "cmdecho" 0)2 K; A3 o) }+ x. i( Q4 {
  2680. ; Loc ra duoc ong text de xu ly
    & O9 B" O# Q+ O
  2681. (while        (and         (= thoat        nil)5 k* O  [" L, L1 J& C3 y
  2682.                 (< dem        dodai)
    5 Z% l  |$ D% O* C
  2683.         )+ B5 O; l" Y9 F
  2684.         (setq         ten        (ssname cumdt dem)
    / v- s& T0 x3 y: _, K/ i7 N! e
  2685.                 dem        (1+         dem)( T7 n5 H8 [# e, Z# L5 u) E% h& x3 {
  2686.                 doituong (entget ten)
    6 H. _4 E+ L" T4 K
  2687.                 kieu         (cdr (assoc         0        doituong))                        $ d3 Q+ h7 d, P9 i* y# b5 n8 k. q
  2688.         )5 X3 A1 U8 L9 A+ D: {9 `* T
  2689.         
    / J" q9 `9 p  ^: Z) P! L
  2690.         (if (or (= kieu                "TEXT")  h; X" L9 U6 B# p5 y- F+ [
  2691.                 (= kieu         "MTEXT")        6 V8 k7 q: y1 O- p7 m; ^
  2692.                 )# K( o# J" Y3 N. X
  2693.                 (setq         thoat        T
    * p) l1 W( o- L8 K* B
  2694.                         textxl         (cdr (assoc 1 doituong))         
    & P/ @7 T" c4 d7 H2 f4 B3 _  w
  2695.                 )9 x+ K/ l% X9 Y/ N& t1 q) U) I3 K
  2696.         )
    * p5 D! E3 X  G. k% }0 L( d
  2697. );, j$ Y6 z! z8 x
  2698. (while T
    5 m0 y+ H  z4 f; ^
  2699. (setq        toi                (getpoint "\nSelect next point: " goc)
    ( D1 Q# M  d6 L; }8 `( A
  2700.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))8 q. ^9 b  \6 \+ O
  2701.         dem                0
    ) H3 v2 E; Q4 z# r* G4 O
  2702. )
    0 }) W5 N: O. }  ^6 e
  2703. (while        (< dem dodai)1 w8 F/ s6 r. A
  2704.         (setq         ten        (ssname cumdt dem)$ ~. g8 O+ Y2 q2 O1 j8 q) x( O
  2705.                 dem        (1+         dem)9 {# ~5 `* `- t# R, e0 v/ ^8 o% G
  2706.                 doituong (entget ten)
    8 a8 F9 l9 r) C( g! P5 Y
  2707.                 kieu         (cdr (assoc         0        doituong))                        
    9 M  t! o6 }) L' H+ J
  2708.         )
    7 f3 V0 n' K+ p, U3 v9 l

  2709. 8 e* H3 ~, g- ~) o( ]7 R
  2710.         (if (or (= kieu                "TEXT")
    8 s. E3 x; P/ V3 J- Q( Q
  2711.                 (= kieu         "MTEXT")        ' x5 E7 l6 H- J# i. }
  2712.                 )6 Q. B' E# j4 n  Q/ S
  2713.                 (doitext        ten)
    . m: R  W7 @) N/ T2 U/ n9 p. {! C
  2714.                 (copy_dt        ten), _" g6 a. N7 `9 D

  2715. 0 p  {  \2 ~! V9 m# v/ t6 z
  2716.         );if$ [. i) H/ E# D; l* e2 F# o
  2717. )
    0 @. h: C5 ?' o
  2718. );while
    ( n" y) Z8 ~& b: r# [; a2 A7 ?' p+ |
  2719. (ketthuc)
    2 U% _4 o- @1 e, Q8 @) t9 \7 K
  2720. );defun
    ' q# X  I/ S, c# K" t
  2721. (princ)
    & ]" A$ X& g1 Z5 f' m; s

  2722. ) }/ B0 Y' d+ E8 c7 S% s" e
  2723. ;=====================================================================  P$ `! v% H% t$ B" ^
  2724. ;;; By Jimmy Bergmark
    . x. v" a: }1 ]1 c
  2725. ;;; Copyright (C) 2008 JTB World, All Rights Reserved+ P: b9 K$ t( b: h+ e* c' ]4 C
  2726. ;;;! q7 a$ k1 @8 L7 e
  2727. ;;; Created: 2008-03-31
    3 S/ ~, C  m! [& k% i5 D
  2728. ;;;
    2 B7 x% [" L! f
  2729. ;;; Convert Attribute definitions to text0 M$ Q( `3 }! s) R& {/ u) a9 g
  2730. ;;;, `1 ~+ m0 b& F8 i% x

  2731. 6 U$ M; r. V% F: j, T, U
  2732. (defun c:ATT (/ eset1 blkcnt en enlist vl space)
    6 R9 u1 y' u5 d& u/ K% p* s  h
  2733.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))
    7 g* z9 I, s9 c6 B7 y/ K/ ?# e
  2734.         blkcnt 0
    % _0 O( m& v* U* ~# i# Y
  2735.   )
    - c4 }2 F& E! q4 T4 m

  2736. ) t" ~$ h4 |: H2 s' V2 y
  2737.   (if eset1
    , F  g3 t+ f$ K4 R' N$ A
  2738.     (while (<= blkcnt (- (sslength eset1) 1))! n  n+ G& q7 T0 p/ A
  2739.       (setq en           (ssname eset1 blkcnt)  G3 Y, N4 ]- P
  2740.             enlist (entget en), q# ]% j' y" [7 i8 D% j
  2741.             space  (cdr (assoc 67 enlist))
    8 o/ J; _6 [7 C" Z& b
  2742.       )
    3 H8 G( Z( |% V& v$ E5 S! b
  2743.       (setq vl (list* q5 g5 i) V1 k( M
  2744.                  (cons 0 "TEXT")
    ; n% y. i) q' K1 r. c; U
  2745.                  (cons 100 "AcDbEntity")
    * P* N) |' S5 A/ `* O+ k
  2746.                  (cons 100 "AcDbText")
    ( i; _  N. o7 W! p% L2 g7 s" U
  2747.                  (assoc 7 enlist)
    8 A' a7 d' T& A+ s
  2748.                  (assoc 8 enlist)4 [9 C/ r4 W3 C+ X" L) s8 ?+ q$ W
  2749.                  (assoc 10 enlist)
    $ r$ `; r! s0 a2 p  f
  2750.                  (assoc 40 enlist)
    5 C5 f$ \/ p# O6 j
  2751.                  (cond ((assoc 62 enlist))
    7 J; |9 c& e+ g0 L6 R
  2752.                        ((cons 62 256))
    ! c% {) W; l6 i0 n0 w+ \  u* U: A
  2753.                  )
    " |1 X5 S! U% l. Q4 y& k( l
  2754.                  (cons 1 (cdr (assoc 2 enlist)))
    ' B7 i6 H2 `# i5 D
  2755.                  (if (= space nil)
    3 G5 @; h1 ]) R- w& t, y4 ?/ T
  2756.                    (cons 67 0)5 w- G! t9 n0 x
  2757.                    (cons 67 space), t7 D, @8 [6 V" G
  2758.                  )" W! e' v1 l7 [  _' M! a
  2759.                )
    : R/ t/ S7 ^" ~
  2760.       )
      c- l$ H& A5 ~  M; y6 T" u  L$ c
  2761.       (entdel en)* c) s0 S7 d* C+ `! ?
  2762.       (entmake vl)3 d0 ~% s2 f, ~" G% O
  2763.       (setq blkcnt (1+ blkcnt))
    / N. A% c6 s% t; W
  2764.     )
    ) m" C+ a" {; i
  2765.   )# `9 e2 C! q7 b' r
  2766. )
    2 K9 h) ?/ h4 g0 r5 V1 E
  2767. ;=====================================================================
    4 u: F' o1 w5 O  a" n! ]$ s
  2768. ;============================ Doi Truc ===============================; y$ A: B+ z' [
  2769. ;=====================================================================# h3 h8 c5 d6 |

  2770. 7 \0 A0 d: G+ G' m$ Q
  2771. ;=====================================================================$ H, p* T- |, Z7 y2 I- W
  2772. ;=============== FUNCTIONS GA 1+3+5+7+9+11+13+15+17+19 ===============
    7 [) {) j; I( l
  2773. ;=====================================================================
    ( L( x! W% v2 n. U2 Q* i( Y
  2774. (defun c:ga1 ()
    : g% s6 N' x* H1 o* B  s/ Y* F: q
  2775. (setq a (getpoint "\nChon diem: "))
    9 M) ^6 j7 J' V, ^8 T5 r0 c4 m2 h% N/ s
  2776. (setq b (getpoint a"\nChon diem: ")), e" s0 R8 b( M+ y6 Q0 x! B8 J6 w
  2777. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))% |  N* p" M( r# A& u
  2778. (command ".circle" c a)# D9 `  W4 p' J) C4 M4 z& [
  2779. (command ".line" a c "")
    5 d  n4 J# m8 j; p! g
  2780. (command ".array" "last" "" "p" c "1" "" "")
    ) Z2 Z8 m: p" B' |8 q: _
  2781. (princ))
    7 Z, t( Z$ @" i
  2782. 5 {6 O- F8 y* ?# N0 }: q
  2783. (defun c:ga3 (), V8 J/ {- [2 o7 q; A8 i
  2784. (setq a (getpoint "\nChon diem: "))- Q: Z2 s+ |4 o  o+ ^7 G3 Q" k) L
  2785. (setq b (getpoint a"\nChon diem: "))
    8 X. z1 Y2 v) l5 I: i- i+ r: G
  2786. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    / Z8 E3 k' H, c) V1 V
  2787. (command ".circle" c a)
    . ?$ S8 C. b$ R) a8 H. T* u
  2788. (command ".line" a c "")2 K. K6 Z# T/ o4 N
  2789. (command ".array" "last" "" "p" c "3" "" "")
    2 U2 w$ s" [( [. w2 b. z3 m, t6 j$ ^
  2790. (princ))
    9 ?8 \+ B9 G1 x  Z: N6 G
  2791.   q. v7 H9 S( W8 C6 _! ~
  2792. (defun c:ga5 ()
    ) K/ K) P3 Y9 E; O" e8 k$ l* G! f. N) T- G
  2793. (setq a (getpoint "\nChon diem: "))
    ; _% Y; G7 C, P8 z8 K6 y9 d7 V
  2794. (setq b (getpoint a"\nChon diem: "))1 R. q$ j, O8 ^  D
  2795. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))/ ~2 H( B( L$ V0 s% W
  2796. (command ".circle" c a)2 ?+ M3 Z; Y8 V; H+ \$ W& r1 L
  2797. (command ".line" a c "")
    6 K* J; I- x" \, @! u
  2798. (command ".array" "last" "" "p" c "5" "" "")& i4 k9 D9 X% s1 g8 O5 L8 S3 e
  2799. (princ))8 }3 Q4 s6 ^1 |) |: o  o1 C. w

  2800. & s" j) _; Z9 e
  2801. (defun c:ga7 ()# Y/ [7 I" ?# i, S
  2802. (setq a (getpoint "\nChon diem: "))
      ]* y; c: h; H; o
  2803. (setq b (getpoint a"\nChon diem: "))
    5 b! l' q) ?* e# H" k9 [  M* a
  2804. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))$ h6 g6 O' ?* n+ J2 s
  2805. (command ".circle" c a); @$ M9 ^9 [& W# _. V
  2806. (command ".line" a c "")
    2 ?2 i& L4 U# z/ }7 m7 P9 `& y6 D4 \/ _
  2807. (command ".array" "last" "" "p" c "7" "" "")
    ) ?- g* h5 l6 Y  R' c
  2808. (princ))
    ' `6 L' T- v* H7 x' {3 \

  2809. # m( }. U: e4 o2 h
  2810. (defun c:ga9 ()
    + x# n# O' m$ i) V& K# j2 p- ]2 x
  2811. (setq a (getpoint "\nChon diem: "))( ^; F6 x/ U# ]) Y4 ]  Y
  2812. (setq b (getpoint a"\nChon diem: "))! E0 ]' G. l" C3 B$ i/ |; s1 Y
  2813. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    4 t. l. S% q! m
  2814. (command ".circle" c a)
    $ Y; k6 B; H' M- r. N! f
  2815. (command ".line" a c "")
    7 W# v) h" o9 C! J& \: V
  2816. (command ".array" "last" "" "p" c "9" "" "")( u/ \! d4 i1 l- N# d7 o6 h# l
  2817. (princ))0 [) ?. T- m7 C+ \' h5 L( }, X

  2818. 3 l8 s9 Z/ e+ S9 k" W  c2 y: [
  2819. (defun c:ga11 ()
    3 _! \+ k! S/ x) z/ Q% @
  2820. (setq a (getpoint "\nChon diem: "))& R' c" K8 o) |, Y( E9 k
  2821. (setq b (getpoint a"\nChon diem: "))$ d+ w% Z- P5 u( n( ]2 i
  2822. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))" ]. E* D* b% s7 S
  2823. (command ".circle" c a)( q* l6 p- D- I6 k+ c& |  v
  2824. (command ".line" a c "")0 `1 W8 m- x9 c# F. f4 J! ^
  2825. (command ".array" "last" "" "p" c "11" "" "")8 H6 P9 S0 u, |. @
  2826. (princ))
    4 O; x: Q# t* L- e
  2827. # f! o' {/ }, _9 V( a. g( k' A: I
  2828. (defun c:ga13 ()9 J% @# j# v5 i; c4 ~5 B. v) @5 V1 ~- y
  2829. (setq a (getpoint "\nChon diem: "))
      x# [- v1 V/ F# S  Y& c7 x% }" u
  2830. (setq b (getpoint a"\nChon diem: "))
    9 b5 ^" w+ ?- ?- O1 ~1 M* y+ {
  2831. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ( ~6 c5 `5 @0 J8 _
  2832. (command ".circle" c a): X, i7 ~2 ], i1 m) K- D: m# D
  2833. (command ".line" a c "")
    8 Y8 b( L* m- ]0 u. \; m* _
  2834. (command ".array" "last" "" "p" c "13" "" "")
    7 H" h9 |, X. i' a7 E. N" q
  2835. (princ))
    # Z) J" K- {2 S: _! x

  2836. : Z: R! c" r9 F: C4 f$ c1 x
  2837. (defun c:ga15 ()
    % Y. G' X! ?6 l0 g' z+ |0 R8 m
  2838. (setq a (getpoint "\nChon diem: ")). |" L* i1 c% R" M' G9 P
  2839. (setq b (getpoint a"\nChon diem: "))1 f: h; {; T+ i( N; A" q
  2840. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))): F# a' \) v7 U3 F$ J0 B7 P
  2841. (command ".circle" c a)! ~  b+ Y' H9 L( c; I' f. u
  2842. (command ".line" a c ""); Q2 }* Q' i3 X5 g+ \
  2843. (command ".array" "last" "" "p" c "15" "" "")
    + |. \' H* @6 G3 C0 l; D
  2844. (princ))+ ^3 e0 s7 V; S* N( u% f

  2845. 1 u. n4 {. K5 [: w, I
  2846. (defun c:ga17 ()" w3 V! J; m; j. K+ p
  2847. (setq a (getpoint "\nChon diem: "))
    1 [. `- `9 @' d* o( o
  2848. (setq b (getpoint a"\nChon diem: "))
    + s; K$ k; a4 }8 H4 d- \6 h
  2849. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))& B  x+ k) y+ `1 V; ~  e9 B+ W7 V
  2850. (command ".circle" c a)
    , }- A/ x* N; r8 p' ]6 v; t: g( a
  2851. (command ".line" a c "")
      ^, X: @( a' \3 w: V: y8 s
  2852. (command ".array" "last" "" "p" c "17" "" "")
    : C5 B* ~- V- ~# Q$ `- i/ P
  2853. (princ))4 P/ r  k7 J  ~" j* u9 f7 v5 F
  2854. # N3 N' F/ \% q. `, ?( Q) T
  2855. (defun c:ga19 ()" ]- `( h% \- h8 t9 v+ z, Q: B& w( T
  2856. (setq a (getpoint "\nChon diem: "))
    / s1 o4 `  N7 N" E1 V3 x
  2857. (setq b (getpoint a"\nChon diem: "))
    ; P9 @/ A: }  @: c7 e0 H
  2858. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))" ^, i( @4 G1 p. `4 e0 J- L
  2859. (command ".circle" c a)
    5 p9 n' L% j! O; z" W& ]
  2860. (command ".line" a c "")
    ( s" n0 [9 s* H8 j4 x6 n2 z- Z) B
  2861. (command ".array" "last" "" "p" c "19" "" "")1 [4 |; M0 r3 t/ ^( ]
  2862. (princ))
    4 N/ [, K; f7 Q; @. h  ?' k

  2863. 0 h/ L, a: U( k7 q; w7 j
  2864. ;=====================================================================
    2 m$ v6 T+ I6 |: l6 q
  2865. ;============== FUNCTIONS GA 2+4+6+8+10+12+14+16+18+20 ===============; N6 _) D0 D- w! _- @, v# I* }
  2866. ;=====================================================================, J$ X3 ?+ c) Y) @9 o% d) l$ q( g
  2867. (defun c:ga2 ()
    9 ^! z/ g1 Y. c" Z( N: J0 e& f
  2868. (setq a (getpoint "\nChon diem: "))/ g2 S' `4 a! {4 o6 k% ]8 ^
  2869. (setq b (getpoint a"\nChon diem: "))9 M) g3 ~$ C& ^# }+ K3 U0 j
  2870. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    8 C% o- Y$ Q: |4 F
  2871. (command ".line" a c "")0 m' m) }! C/ o1 ^& f
  2872. (command ".array" "last" "" "p" c "2" "" "")
    9 x" w* ^) c9 O- }
  2873. (command ".circle" c a)% t+ e/ O4 U. @( f3 H* x3 y
  2874. (princ))
    4 t6 ~3 |. `( K8 w0 r/ n0 f" I7 D
  2875. - {" t% @, u- k  y( j
  2876. (defun c:ga4 ()# K: ]" c7 s8 c3 h% a
  2877. (setq a (getpoint "\nChon diem: "))$ W& y& D5 k; R% u
  2878. (setq b (getpoint a"\nChon diem: "))
    & Y- }7 a: \0 H5 G: @
  2879. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))). f1 M0 l9 @9 [* z
  2880. (command ".line" a c "")
    7 M( P. J! E4 [( Q' U, e% J& P9 ]
  2881. (command ".array" "last" "" "p" c "4" "" "")& V5 f5 A% s6 t* Y
  2882. (command ".circle" c a); |. O  n- E1 r' a* c
  2883. (princ))2 P  J' E1 N) v( Q6 f3 N: c
  2884. ; T- e: R/ a6 N' \1 A& d
  2885. (defun c:ga6 ()
    " d/ h7 x& j7 Q8 w, e4 n3 B
  2886. (setq a (getpoint "\nChon diem: "))* E3 I! q7 j0 C/ s( p1 V* w! R
  2887. (setq b (getpoint a"\nChon diem: "))
    7 m% @% Y% Y/ {8 @
  2888. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))). s) y" Z: a' O1 Q$ w4 s
  2889. (command ".line" a c "")% b! o9 Y8 j5 h
  2890. (command ".array" "last" "" "p" c "6" "" "")" D/ R& P& P1 Q4 D7 o
  2891. (command ".circle" c a)
    & e  j) _/ c$ _0 c
  2892. (princ))0 y4 I$ L* X0 l- ]9 ?* F" A

  2893. - [" M# c1 p  k2 l
  2894. (defun c:ga8 ()9 P. x; D, L, Y  Q. i- d: T5 V
  2895. (setq a (getpoint "\nChon diem: "))& K4 R# e* C3 X" ^$ [
  2896. (setq b (getpoint a"\nChon diem: "))
    & n' t8 e6 Z$ u. y
  2897. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))8 q2 {( Z/ A1 G  i& P) Y8 a' R: w
  2898. (command ".line" a c "")3 z, r2 r( h9 L+ d) I. h* o% j. @6 J
  2899. (command ".array" "last" "" "p" c "8" "" "")
    1 @# H/ U/ B: w, S) m
  2900. (command ".circle" c a)4 L: u6 L' s' `9 q' J+ }/ g7 Z$ R
  2901. (princ))$ l+ B+ j( v1 v
  2902. 2 r2 f9 a" O! M( k$ N9 W9 e/ N6 V
  2903. (defun c:ga10 ()
    ) Z7 O- x' a5 G0 f  f6 |
  2904. (setq a (getpoint "\nChon diem: "))
    2 B2 U- P9 {7 ~1 Z1 K1 P- f! F
  2905. (setq b (getpoint a"\nChon diem: "))4 D5 @( E$ B3 Q' {. N
  2906. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    / V5 R5 i6 a6 s) \2 B
  2907. (command ".line" a c "")+ j! n7 u# O9 n. C7 |$ ?' C
  2908. (command ".array" "last" "" "p" c "10" "" ""); x: d3 Q( a5 N
  2909. (command ".circle" c a)
    ( h3 t: x) D/ ]* A
  2910. (princ))4 P" j/ d; L% h4 [
  2911. ( E6 t; ]! [3 G5 o# h
  2912. (defun c:ga12 ()8 I& \6 y6 D- u5 v3 M* z
  2913. (setq a (getpoint "\nChon diem: "))
    3 K4 F9 N# K$ z' v) Y! L
  2914. (setq b (getpoint a"\nChon diem: "))- ^6 V5 e. t! s' N& y" D: @' |" z5 H
  2915. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))/ l3 S0 N% {& Y; M# ~! C$ U
  2916. (command ".line" a c "")
    + X" v- N  B5 X. D  O
  2917. (command ".array" "last" "" "p" c "12" "" "")) \5 Q( q% E2 g
  2918. (command ".circle" c a)
    # `+ {4 `+ E' n, w- c. `) ^+ ]5 R, o
  2919. (princ)); E4 `$ n+ c- E* v- [/ o* G# U0 Z

  2920. * ]& E0 v0 \: \% d, ~. P0 Y' G
  2921. (defun c:ga14 ()) I: ?& @& r; m9 B# b
  2922. (setq a (getpoint "\nChon diem: "))) ?' k* l, y8 Z9 a- J/ h
  2923. (setq b (getpoint a"\nChon diem: ")). S5 E! L. i" p1 M
  2924. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    , R8 j. z; K/ K  ?
  2925. (command ".line" a c "")% \/ |; e2 `- l1 w
  2926. (command ".array" "last" "" "p" c "14" "" "")
    1 w! |* e1 M0 t. b5 T
  2927. (command ".circle" c a)1 a  z/ }- d9 R$ h
  2928. (princ))
    ; g2 `1 M* p' o- A  a

  2929. 5 j$ ?9 S$ l0 F8 L. c' s  v
  2930. (defun c:ga16 ()8 x. m4 h0 J( b5 ~( i. b
  2931. (setq a (getpoint "\nChon diem: "))- I  V' v, a; h: r$ `" n  @4 ]
  2932. (setq b (getpoint a"\nChon diem: "))
    : A* o( e" L8 K4 x" Y% z
  2933. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ( X# K6 R. E5 T* [/ Y5 t, Q6 Z4 Z# x
  2934. (command ".line" a c "")
    # i0 p% @0 \& k8 R# n' W/ V
  2935. (command ".array" "last" "" "p" c "16" "" "")* N4 q  A0 e$ c* \, H/ n
  2936. (command ".circle" c a)
    6 r& h1 f) n  Q7 ]- J
  2937. (princ))
    0 c+ l; ?1 v; n( ?4 \% d

  2938. ' s0 Y$ C- v2 a* Z" e
  2939. (defun c:ga18 ()
    0 T* j7 B4 F& X% y
  2940. (setq a (getpoint "\nChon diem: "))9 Q3 n/ X* G, ~. M( g
  2941. (setq b (getpoint a"\nChon diem: "))4 i+ q$ Y3 P4 @* A3 Q
  2942. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))+ c- @3 y2 p1 y- M) t! p1 z% [! q+ \
  2943. (command ".line" a c "")/ C+ `& A  x$ y2 b  m5 T
  2944. (command ".array" "last" "" "p" c "18" "" "")
    ' O; l+ m% T# {' l9 N
  2945. (command ".circle" c a)) W( }' {1 J, d1 ]$ ?- J
  2946. (princ))
    & x7 a. z! U4 ]0 O0 X# C5 J" @

  2947. : \- X9 p1 R8 u1 Q, X% |: E- o
  2948. (defun c:ga20 ()# U+ K3 F. _! u
  2949. (setq a (getpoint "\nChon diem: "))& b7 y" @- h$ a; d
  2950. (setq b (getpoint a"\nChon diem: "))
    7 ^7 V& n; N) {4 s$ E; W- f1 f
  2951. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ; c; M: S) s: \# L2 P4 y' j, l
  2952. (command ".line" a c "")% e. p8 L2 Z/ J& ]
  2953. (command ".array" "last" "" "p" c "20" "" ""), B8 ]# O3 t# a1 O! _# y9 @* H- [# `
  2954. (command ".circle" c a)8 s8 N$ s- |  G9 g4 o' O6 \
  2955. (princ)). R5 |7 j% P4 y

  2956. 5 D# P$ b  C2 i. h% y
  2957. ;=====================================================================
    4 f7 ^# v: W+ j8 {1 [  x
  2958. ;============== FUNCTIONS GA TUY THICH : EVERYTHING IF ===============
    $ ~+ ?, G1 L6 f# c2 d
  2959. ;========================== 06-11-2016 ~ 18h00 =======================
    2 B1 X6 k4 J" l
  2960. ;=====================================================================
    2 j8 u0 U' f/ W. t1 {
  2961. (defun c:ga ()
    ) H6 E# B* P$ j/ P" b6 |
  2962. (setq a (getpoint "\nChon diem: "))
    8 g  |: t4 D3 G) E9 ^# i
  2963. (setq b (getpoint a"\nChon diem: "))
    & ?& F5 W7 ]& C& ^- }* j/ j. _) _
  2964. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))3 U  ~" R! [  p; E) d0 P
  2965. (command ".circle" c a)) `' V! S! h* T9 O
  2966. (command ".line" a c "")  K, t- v6 E% X5 o3 e/ k/ g
  2967. (command ".array" "last" "" "p" c "NUM" "" "")
    7 m  c, c4 x( u) s$ Z2 @0 I
  2968. (princ))
    ; _+ Z/ E2 M6 N

  2969. 8 i! X) ~7 c4 r
  2970. ;=====================================================================6 O0 Y- V8 t/ @
  2971. ;=========== FUNCTIONS HOA THI TUY THICH : EVERYTHING IF =============
    ! c( D% F8 V# C0 S" G
  2972. ;========================== 06-11-2016 ~ 18h40 =======================6 m2 Y% E& C+ V0 N9 K
  2973. ;=====================================================================% `$ G% o( e. B
  2974. & O8 n5 J1 Y( K
  2975. (defun c:hoathi ()
      S! e+ e! b  }
  2976. (setq a (getpoint "\nChon diem: "))% `6 o5 w: E* Q* Z5 c
  2977. (setq b (getpoint a"\nChon diem: "))
    ' A9 p3 r+ p! t5 ]$ ~' V2 w0 N
  2978. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))3 h0 J( w/ g2 d# V% c4 S) A
  2979. (command ".line" a c "")
    / y$ m( _" c& e
  2980. (command ".array" "last" "" "p" c "NUM" "" "")/ F& A5 X' }5 P; X
  2981. (princ))5 r' j+ x4 h7 R9 ^& t. V' S! }
  2982. 9 Q' t2 M9 B+ H: H6 b# v  I
  2983. ;=====================================================================  M4 ?+ ~- N' q
  2984. ;============= FUNCTIONS CUNG TUY THICH : EVERYTHING IF ==============( w6 r/ p% q2 c  [8 b; B. @' l
  2985. ;========================== 03-11-2024 ~ 19h33 =======================
    / }5 E; U$ p% l' e& N. @4 f& f9 s9 a
  2986. ;=====================================================================
    5 Z- F6 v! t0 c& f3 ]4 h* [
  2987. / q3 s& W: \, T) G" I
  2988. (defun c:cung (): a" f: _$ K% ^
  2989. (setq a (getpoint "\nChon diem: "))3 e1 R3 K( d. O6 V* |1 i- u
  2990. (setq b (getpoint a"\nChon diem: "))2 f5 \) J- J- [* ~
  2991. (setq c (getpoint a"\nChon diem: "))' t3 B+ z; [. Y# ~
  2992. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    % e, k& N' R  W' K" B4 ?9 [' K2 S
  2993. (command ".arc" a b c "")
    / J2 k4 U" ?2 [) h1 J  k/ J$ N
  2994. (command ".array" "last" "" "p" c "NUM" "" "")
    4 x0 k7 u: `0 U& p# p+ f, ~# J
  2995. (princ))
    , n5 E, R! `! n! K

  2996. ( j1 }% c; r. C
  2997. ;=====================================================================
    $ I" w  c& w, x- a) b9 P
  2998. ;============ FUNCTIONS HECLOIC TUY THICH : EVERYTHING IF ============
    & z0 e" f5 K4 M
  2999. ;========================== 03-11-2024 ~ 20h02 =======================
    ' g; K$ e9 Q7 |9 R2 e
  3000. ;=====================================================================2 c7 F+ u; G! l3 g0 k; [; q4 [

  3001. 4 T7 G( K$ W3 ^) c, I
  3002. (defun c:hecloic ()  Q( l! \3 G8 B4 s: F* t4 {
  3003. (setq a (getpoint "\nChon diem: "))$ H6 P6 \% H" u% D! _  I
  3004. (setq b (getpoint a"\nChon diem: multi "))
    7 c/ U! p7 S( E2 A( F
  3005. (setq c (getpoint a"\nChon diem: "))(princ)$ K3 f% y* J$ [% m( d1 D
  3006. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    $ M6 D( G: I' C  j% b1 d# n# ~
  3007. (command ".arc" a b c "")) D2 C! w* p2 A4 \) `; ]# r1 r
  3008. (command ".array" "last" "" "p" c "NUM" "" "")
    : b/ |2 R4 B2 g6 |) |% ?
  3009. (princ))
    ! _  _4 h) L( |- Q% r, J
  3010. # W1 S' K" d- s2 s  w' t
  3011. ;=====================================================================5 w2 @- P/ K% F" C; o2 @
  3012. ;============== FUNCTIONS GAY TUY THICH : EVERYTHING IF ==============
    6 K: z7 i, n& E% W( u! n. C- [
  3013. ;========================== 03-11-2024 ~ 19h38 =======================4 Y) x- L/ H! J+ U
  3014. ;=====================================================================
    - O' V) B. t4 i

  3015. # F# e4 q) m! k
  3016. (defun c:gay ()! D: y4 e. ?# f  a: b! U7 O
  3017. (setq a (getpoint "\nChon diem: "))* w  }3 u& }) U1 i7 d6 h
  3018. (setq b (getpoint a"\nChon diem: "))
    4 H: D- |9 l, g+ t+ u' t) r0 S
  3019. (setq c (getpoint a"\nChon diem: "))(princ)
    2 b% Y2 Q% x$ k  g2 t% \  M, X" q
  3020. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))0 o7 G3 \0 R" y2 ?+ }
  3021. (command ".pline" a b c "")
    ! N& n1 s% O% s
  3022. (command ".array" "last" "" "p" c "NUM" "" "")9 H% p$ g4 t: x7 l
  3023. (princ))0 [) A/ A- D; e2 s' K7 x. H3 ]% H
  3024. ! q5 A) k; Q& c$ C' B
  3025. ;=====================================================================, M' V. u7 ]) ~  n: F; w! R
  3026. ;============ FUNCTIONS HECLOIT TUY THICH : EVERYTHING IF ============
    # x- _0 b% l% y; v. l) C
  3027. ;========================== 03-11-2024 ~ 20h02 =======================
    0 |" k+ K: ^& Y
  3028. ;=====================================================================
    8 N- z3 u' z! Q' z8 _
  3029. . F) R; m5 O0 Y# J# Q; j( p
  3030. (defun c:hecloit ()! K5 C. Z# E+ I! M! F
  3031. (setq a (getpoint "\nChon diem: "))
    ) \* `7 X( ]' o# K  n
  3032. (setq b (getpoint a"\nChon diem: multi "))$ ~2 b# Q) M) R5 C7 l( b
  3033. (setq c (getpoint a"\nChon diem: "))(princ)1 ~* G: y8 r( n, ~
  3034. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))9 k, H& P6 V9 s$ ^7 o) f& z( H2 N1 w
  3035. (command ".pline" a b c "")! U) H/ @6 m+ V& [9 _) x4 V
  3036. (command ".array" "last" "" "p" c "NUM" "" "")
    " w# G. D1 A8 m1 r; L. y& M
  3037. (princ))
    0 p* Q' f2 {1 P0 E) r9 v

  3038. $ ?  p0 Q- Q' ^) ], ^( G, n
  3039. 2 a/ x! ^$ u& L. H* h; i( B- `/ O
  3040. ;;; ============================ Merge Hatch =============================' E! p; K( x( u* M

  3041. 9 }: ~% D" W( ]5 t0 e
  3042. (defun c:mh (/ ss entht sl i dt dtht)
    ( J3 O- }+ g1 h- B" I% D

  3043. " D/ k$ l# c0 T0 o1 o9 Z
  3044.   (princ "\nMerge Hatch - free lisp from CADViet.com")+ \4 \4 {( Q7 J# U, V: ~& z! v$ y4 o, x
  3045. ' J9 a) M6 j$ I* S- _8 x2 `7 t
  3046.   (setq# ~2 ?0 ~/ N( w( |
  3047.     ss (ssget '((0 . "HATCH")))* o2 A6 v; k; n7 ]+ [
  3048.     sl (if ss8 P% x9 `. d; I# t/ u( v
  3049.          (sslength ss)
    ) J- K6 Z9 ^* }1 V# \2 \4 h3 k
  3050.          0) f4 X9 c+ B: Z( c$ J) k" |
  3051.        )9 m# e& e) j$ L- z: A6 g/ o* ?0 w# {
  3052.     i  0
    # P9 u( Y% X8 K, y8 N8 \" g% `. Q
  3053.     l  0$ [5 h9 O8 @9 }$ F6 ]- o0 Z2 J" T
  3054.   )0 V, |! r. N- v" u0 L# |

  3055. ! P8 O9 d/ I* P
  3056.   (repeat sl
    ' j- |$ z+ E  A" q. J
  3057.     (setq
    7 C. U* z, S4 h# {% s
  3058.       entht (ssname ss i)6 k6 }* s4 L! }: V1 s: K; u( A5 J
  3059.       dtht  (getbdata entht)- N+ s$ m  s+ ]1 }& B9 e
  3060.       dt    (append dt dtht)
    ; R/ o* c$ J% d7 n6 L. `
  3061.       l            (+ l (cdr (assoc 91 (entget entht))))% @8 ~( G  Z0 E: b% U
  3062.       i            (1+ i)
    + W/ F' ?0 \+ H" B1 ]! r. b% y
  3063.     )
    8 h, O% p0 t0 I+ k; e
  3064.   )4 n) a" S/ ~5 k4 M$ [
  3065. . |& O/ [" D* T! J" b# k% t
  3066.   (setq        ent  (ssname ss 0)+ p; L5 T- c! j" I, _; [: X
  3067.         ss   (ssdel ent ss)
    # [$ }. a9 `) o/ x# D
  3068.         tt   (entget ent)+ p  Y7 g+ a$ t$ G; \
  3069.         duoi (member (assoc 75 tt) tt)
    ; n' x' S) h# o# V5 l* t) ?
  3070.         dau  (reverse (member (assoc 91 tt) (reverse tt)))! t" C( S- \9 M) U
  3071.         tt   (append dau dt duoi)2 ]8 K# e6 {" a# F% ]
  3072.         tt   (subst (cons 91 l) (assoc 91 tt) tt)( T) H$ U: T) Z' U0 J  }' }* \
  3073.   )
    & P- B& P' P+ B) ^) N
  3074.   (entmod tt)6 ?6 A" i9 |! J2 w

  3075. 3 U6 Y1 K: N9 R! g* @% Y5 \/ g* z
  3076.   (command ".erase" ss "")
    ) I5 ]/ O( b  ~  |
  3077.   (princ)% ]& N% L% c1 a
  3078. )
    + [% o2 i$ Y5 R3 k
  3079.   ?  g% {+ U, N
  3080. (defun getbdata        (ent)
    ( T7 L; W  _6 t. ~: ]: V
  3081.   (setq        tt (entget ent)6 S/ M: B6 g' U. r- s
  3082.         tt (cdr (member (assoc 75 tt) (reverse tt)))$ s' s3 G( S! v& R+ V9 R
  3083.         tt (cdr (member (assoc 91 tt) (reverse tt)))
    % h6 x/ L$ M/ B' j) n
  3084.   ), m% n( [& U! `! B' h/ }2 P
  3085. )# ^+ \$ ]. ^& o- S. n
  3086. 4 \, T, O$ K( `/ {5 _
  3087. / T0 q9 k" \: t
  3088. (princ)$ G5 z7 E  O( J1 Y' l8 `( V1 N

  3089. 0 b! j9 ?' X4 X; D
  3090. ;;; =========================== CAC LENH LAYER ==============================- @3 @2 N) y3 g4 j) F! v9 G0 l1 r
  3091. ;;; =========================== Layer hien hanh =============================
    % [: n/ p% E; L( d5 Z% @

  3092. 8 W6 c' ]- ^. d4 ~" u/ |, w
  3093. (defun layset (/ LAY) (setvar "cmdecho" 0)
    $ |" e4 ~" N# o& ^' z8 u
  3094. (setq LAY (entsel "\nPick vao doi tuong muon Layer hien hanh la Layer cua doi tuong do : "))2 I. Z% I/ j1 ~. g2 {0 A
  3095. (if LAY     (progn     
    6 T7 |  ?0 I6 b0 u/ D/ k
  3096.   (setq LAY (cdr (assoc 8 (entget (car LAY)))))
    3 g" C5 m1 Z# M; Q( F: D- R8 s2 \
  3097.   (command "_.layer" "set" LAY "") (princ (strcat "\nLayer : " LAY " da la hien hanh."))  )# @0 M; ]. F4 i- }* Y7 [
  3098.              (progn
    2 R9 q5 c1 D! U& D6 x# {
  3099.       (if (not ddlop) (load "ddlop"))  (if (setq LAY (ddlop))
    1 z! Z/ e9 M, A) N9 z
  3100.              (progn
    8 m- D( ], D- E" R
  3101.             (command "_.LAYER" "ON" LAY "THAW" LAY "SET" LAY "")  (princ (strcat "\nLayer : " LAY " da la hien hanh.")) ) ) ) )(princ) )9 Q5 a2 _& M$ [; M9 H" j, D" W6 p
  3102. (defun c:LLL     () (layset))(defun c:LAYSET () (layset))
    5 B: Q2 q# \. Q& k! L# E% t. E! d

  3103. 6 I1 ?( c, n/ ~* `
  3104. ;;; ================== Cap nhat doi tuong vao layer hien hanh ==================
    7 g; a8 x  \$ j. Z3 ?+ Y

  3105. 5 q5 `1 B& ~9 H# d
  3106. (Defun LAYCUR (/ SS CNT LAY)  (setvar "cmdecho" 0)# |! g) U! T4 f/ ~
  3107.   (if (not (setq SS (ssget "i"))); E9 G1 i. G% g* Z1 e: i
  3108.     (progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: ")
    2 c, G' U/ e4 g6 j
  3109.       (setq SS (ssget))    )  )
    - y0 F8 W: x6 y) k; X( W
  3110.   (if SS    (progn( I  v$ d% {; S7 w( i
  3111.    (setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " doi tuong tim thay."))                  (command "_.move" SS "")                      * p  r7 o5 k- B/ @( N0 y
  3112.       (if (> (getvar "cmdactive") 0)               
    , d# ~% G  r3 y- H, o3 \
  3113.         (progn
    , m4 [7 O9 F: L& a) y' ^- y- d8 O9 A: |
  3114.           (command "0,0" "0,0") (setq SS  (ssget "p") CNT (- CNT (sslength SS))    )   )
    2 H$ o$ F# Y( A+ Y( m2 U& F
  3115.           (setq SS nil)     )  (if (> CNT 0)                                 
    # `3 w( |& R8 _
  3116.           (princ (strcat "\n" (itoa CNT) " doi tuong tren layer LOCK.")) ) ) )
    8 l3 ]7 N9 Q1 C4 F1 i3 N2 N" u
  3117.   (if SS    (progn
    & ?! M. a; @7 O% V( ^% Q. o* r
  3118.       (setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")
      b8 P; D! h- q  C, b8 m
  3119.       (if (= (sslength SS) 1)1 o6 W1 I6 t9 V, S
  3120.         (prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))
    & w( z: n4 a2 Q; [
  3121.         (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) ))  (princ) );end) [$ \! q5 K3 C) A
  3122. (defun c:LAYCUR () (laycur)) (defun c:LHH    () (laycur))
    ! K( i' {0 b  }; A! q" O
  3123. " H* _- e) w" {7 x$ m% n6 B
  3124. ;;; =========================== Layer Iso ===================================
    0 `' U9 Y" m' ?# ^3 o6 X

  3125. 5 f; v: c. o) R4 W" k' f; y6 W
  3126. (Defun LAYISO (/ SS CNT LAY LAYLST VAL)  (setvar "cmdecho" 0): O- H% Q- _& c) [
  3127.   (if (not (setq SS (ssget "i")))    (progn( h! `. v) N  K) ]
  3128.       (prompt "\nChon doi tuong tren layer(s) muon lam viec doc lap: ")
    3 _1 D5 V& t( S
  3129.       (setq SS (ssget))    )  ); M, k; D) R9 Q, z8 K. \8 f+ |
  3130.   (if SS    (progn      (setq CNT 0)
    , P9 E2 a6 X6 t* d5 j* u, r7 u
  3131.       (while (setq LAY (ssname SS CNT))
    3 F6 k' j2 J6 ?
  3132.         (setq LAY (cdr (assoc 8 (entget LAY))))
    , b' m0 K/ C7 D1 v- `* L2 M2 O
  3133.         (if (not (member LAY LAYLST))1 @  i, y( B+ U, H5 F
  3134.           (setq LAYLST (cons LAY LAYLST))        )
    6 e# i7 x* G0 g9 s8 h  \
  3135.         (setq CNT (1+ CNT))      )
    : T0 |: r/ k% N' r6 X5 `
  3136.       (if (member (getvar "CLAYER") LAYLST)
    9 y" U. x8 z$ p' r' h
  3137.         (setq LAY (getvar "CLAYER"))
    ) R$ S2 A* K6 f( \+ j
  3138.         (setvar "CLAYER" (setq LAY (last LAYLST)))      )2 K2 V# P) w9 s- V
  3139.       (command "_.LAYER" "_OFF" "*" "_Y")
    ! t+ i# \" Y# T9 b
  3140.       (foreach VAL LAYLST (command "_ON" VAL))
    7 I1 u: ^' X3 }8 F! S
  3141.       (command "")            (if (= (length LAYLST) 1)
    7 f- F$ a% F5 I) w% n
  3142.         (prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))
    4 b/ k% {( i6 Q0 G) K
  3143.         (prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "% ?$ g0 I4 j1 k8 G6 c* R6 H
  3144.                         "Layer " LAY " la hien hanh."   )  )  )  )  )  (princ) )
    7 R  }$ n: d1 k  Y$ A, {
  3145. (defun c:LAYISO () (layiso)) (defun c:LI () (layiso))
    6 r' U$ w4 C$ I- X' Z

  3146. $ n& B! C; D8 F9 F' C) \
  3147. ;;; =========================  Layer Match ==================================
    - h# r, ]  E' q' q( g4 `

  3148. 8 I; A& l' }# g9 D/ `5 P
  3149. (Defun LAYMCH (/ SS CNT LOOP LAY ANS)$ S# ?& V1 N' i$ ]$ L# Z
  3150.   (setvar "cmdecho" 0)
    6 M% p7 {, o# O* F0 M2 [
  3151.   (if (not (setq SS (ssget "i")))    (progn* G7 }$ i8 O, \' p
  3152.       (prompt "\nChon doi tuong muon thay doi Layer : ")
    2 M- r/ W, C, T1 e  P2 w/ a
  3153.       (setq SS (ssget))    )  )
    - l: g7 h- f. G* u9 H; C- b1 s
  3154.   (if SS    (progn. l  P' o! Z/ Y' |! ?# {+ k+ l
  3155.       (setq CNT (sslength SS))
    " P4 N0 r" N/ G
  3156.       (princ (strcat "\n" (itoa CNT) " found."))  (command "_.move" SS "")                        1 A. ~, \$ W& }
  3157.       (if (> (getvar "cmdactive") 0)   (progn
    " ]7 o9 \$ G; ^' Q/ k; s  t
  3158.           (command "0,0" "0,0")  (setq SS  (ssget "p")
      [; s4 d; u; n. ?6 P# N" S7 A
  3159.                 CNT (- CNT (sslength SS))    )    )
    * }2 o$ `* N  a& `0 _
  3160.         (setq SS nil)      )  (if (> CNT 0)                                    
    5 K/ K# |$ u6 T; J% x
  3161.           (princ (strcat "\n" (itoa CNT) " tren layer LOCK.")) ) )  )$ f) g% h- J2 k$ z
  3162.   (if SS    (progn! ~& O  }. K' Z& f0 |& g) s
  3163.       (initget "Ten")  (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")  LOOP T  )
    . S* U" y; U+ Z' m/ b. p
  3164.     (while LOOP        (cond
    7 }2 \+ R" z8 h+ M- \1 {; ^
  3165.           ((not LAY)0 b1 f2 h/ l6 p, V- Y& b
  3166.             (prompt "\nKhong chon doi tuong.")
    $ o% }( z# Q, Z$ E5 g8 f
  3167.             (prompt "\nSu dung layer hien hanh? <Y> ")
      F+ D5 |& Y+ u+ l  |/ ~' i
  3168.             (setq ANS (strcase (getstring)))
      ~! S% g, T, i8 H( ]4 S2 K
  3169.             (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))1 K3 u8 G) k8 `  W; a3 A5 ^8 {6 k
  3170.               (setq LAY  (getvar "clayer")  LOOP nil )  )  )
    0 z* z; r4 T0 `4 m
  3171.           ((listp LAY)  (setq LOOP nil) )
    4 ^- N, k- [' H0 t' W
  3172.           ((= LAY "Ten")
    , I& a. ], G. @1 D
  3173.             (setq LAY (getstring "\n>Nhap ten layer: "))
    - i8 P% m8 D; ~; h7 G- y
  3174.             (cond
    3 [! l5 [/ q4 e6 L: d* \& g
  3175.               ((tblsearch "LAYER" LAY)  (setq LOOP nil)   )
    & X: ^/ s( o+ V0 |, v
  3176.               ((/= LAY "")
    & I! d5 k5 L0 T9 ?$ x
  3177.                 (prompt "\nLayer chua co trong ban ve. Tao layer moi? <Y>: ")* K& E3 q; o* N4 C% Q( Q$ X
  3178.                 (setq ANS (strcase (getstring)))/ [8 V9 N5 Y' @. j3 n9 u& b7 n- G; M
  3179.                 (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))
    % v4 U0 `4 n, O/ `3 ^9 ?- i& s- D& g( T
  3180.                     (progn( o! z% D) e: B% g2 K5 ?
  3181.                         (command "_.LAYER" "NEW" LAY "")  r% Q0 S, w$ [$ n5 l) ]  Y
  3182.                         (setq LOOP nil)   )
    ( q* Y6 y; m2 D. ]4 A4 j8 I
  3183.                     (prompt "\nLoi ten layer.")   )   )  )  )   )6 h: Z: [4 h. g/ K5 @9 _' J
  3184.         (if LOOP  (progn (initget "Ten")
    + Z1 b: \9 g5 U
  3185.             (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")) ) ) ); while LOOP8 b, Z# X! ]: [
  3186.         (if (listp LAY)) b7 N! f0 i3 X+ Y5 l. P$ i
  3187.         (setq LAY (cdr (assoc 8 (entget (car LAY)))))      )
    " j+ c! P3 t$ D4 S
  3188.       (command "_.chprop" SS "" "_la" LAY "")
    , n0 G% z* {- O% J& Y. p' [
  3189.       (if SS  (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong thay doi toi layer " LAY )) )2 x. C0 s9 Z8 k2 G$ c0 W
  3190.       (if (= LAY (getvar "clayer"))% h; K* s5 N1 N4 u7 t, ?
  3191.         (prompt " (layer hien hanh).")  (prompt ".") ) ) )  (princ) )
    ( l; C% \. K+ R$ g
  3192. (defun c:LAYMCH () (laymch)) (defun c:CLL    () (laymch))3 k! j/ ~& R; h; d6 F; }0 U

  3193. 2 X; n# c4 ?3 H8 l: U" B  Y
  3194. ;;; ============================ Layer OFF =================================7 I) s! c  Q0 \2 H1 r
  3195. % Y8 D+ N0 n( Q
  3196. (DEFUN C:LJ (/ SSET SSL ENT LAY I MODE)
    5 J$ ~/ V. z! |1 U  H. V
  3197.    (SETQ SSET (SSGET))
    2 ?' R1 I* l- t7 Z7 _8 z( C
  3198.    (IF (/= NIL SSET) 9 w% {% S6 z; {7 M- I
  3199.     (PROGN
    1 j- K1 K, d: ?! n; [4 p7 Z  v
  3200.      (SETQ SSL (SSLENGTH SSET))
    1 G# g6 r0 i! a3 S  f- K, Q
  3201.      (SETQ LAY "")2 y( k4 Y+ S# X" T" I
  3202.      (SETQ I 0)
    . b1 [: {( x+ w/ \
  3203.      (SETQ MODE 0) ' p6 o7 ^( e' B, Q9 R
  3204.      (WHILE (< I SSL)
    2 L+ e2 n9 B& q
  3205.                  (SETQ ENT (ENTGET (SSNAME SSET I)))
    3 }* a5 J+ e/ o+ k, `8 }
  3206.           (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )2 u8 \, r8 L8 |$ K' A
  3207.           (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) ))
    + ?6 [, K# p8 T
  3208.           (SETQ I (+ I 1))
    ; S, }9 e2 m- m
  3209.      )- z7 p( u$ X/ I
  3210.      (COMMAND "LAYER" "OFF" LAY "")5 k& A) B: g" _) {! {- f& |
  3211.      (IF (= MODE 1) (COMMAND "") )
    5 F- ~7 Z2 c6 X
  3212.     )
    ; f  O* X5 ~$ B' J7 {* v# n9 f
  3213.    )( F& ]; Z5 [5 f
  3214.    (PRINC)% d2 b# ?7 p5 d# G: b
  3215. )- I7 W0 v) @; U1 _# I

  3216. ; k" D  P; m; h1 `) I; c2 {- a5 o
  3217. ;;; ================================ Layer ON ==============================
    ; O9 H+ a. K& \. I2 }+ ]* B' J

  3218. 1 r7 U/ \7 j! O8 M0 s6 D
  3219. (Defun LAYON ()  (setvar "cmdecho" 0)
    & A1 D2 b' D; @8 x- B! x
  3220. (setq Lay loff1) (setq Loff1 Loff2) (setq Loff2 Loff3) (setq Loff3 Loff4) (setq Loff4 Loff5) (setq Loff5 Loff6) (setq Loff6 "0")
    , o$ ~$ s. I$ k6 e- Y/ n! w' ?
  3221.   (Command "LAYER" "ON" Lay "") (princ (strcat "\n      Layer : " LAY " da ON."))  (princ))# a7 u# S' H. Z( v9 P. w$ r
  3222. (defun c:LAYON () (layon)) (defun c:LOO   () (layon))
    : E: x) f* c$ |0 F, c
  3223. (Defun C:LO () (setvar "cmdecho" 0)  (Command "_.LAYER" "_ON" "*" "") (princ "\nDa ON toan bo cac Layer !") (princ))
    # s1 p! V: I8 r6 @

  3224. 6 `. i' Z% z' M, C* a8 i" _; M
  3225. ;;; ============================== Layer Freeze ===========================
    $ D1 _/ W; [  O; P
  3226. 5 ^" M* V1 i8 ^7 a& H
  3227. (Defun LAYFRZ (/ LAY TEMP)(setvar "cmdecho" 0)
    . s! V" m: J$ E4 k4 E
  3228. (prompt "\nChon doi tuong tren layer(s) muon FREEZE: ") (SETQ SSET (SSGET))% C6 f9 ?9 I& s
  3229. (IF (/= NIL SSET) (PROGN
    ) E4 u1 ?- N$ ]6 V
  3230.      (SETQ SSL (SSLENGTH SSET))  (SETQ LAY "") (SETQ I 0) (SETQ MODE 0)
    9 a9 `1 d- ^2 n0 ?: ?* I
  3231.      (WHILE (< I SSL)% j6 t! W3 r6 O: {+ W& Y! D
  3232.        (SETQ ENT (ENTGET (SSNAME SSET I)))6 u# J# P  \- o  I2 ^0 u7 X; k
  3233.        (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
    $ W: @- B0 B1 L
  3234.        (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )) (SETQ I (+ I 1)))
      b$ A. i1 N; _+ ?; z2 c" h! t! R
  3235.      (COMMAND "LAYER" "FREEZE" LAY "")
    0 L3 g. P0 Z- I" U
  3236.      (IF (= MODE 1) (COMMAND ""))))0 w/ s$ q$ E# w' w( x
  3237. (setq Lff6 Lff5) (setq Lff5 Lff4) (setq Lff4 Lff3) (setq Lff3 Lff2) (setq Lff2 Lff1) (setq Lff1 LAY)+ t6 j* M9 T2 R$ v1 v4 v/ N
  3238. (princ (strcat "\n      Layer " LAY " da FREEZE."))(setvar "cmdecho" 1) (princ) )9 N* e0 b2 S& B% Z$ z- b, m5 {  X
  3239. (defun c:LAYFRZ () (layfrz)) (defun c:LF     () (layfrz))
    0 k4 \% h3 [% P; x0 _; s# ]. c
  3240. 9 A' V2 w" G2 ^& c
  3241. ;;; ============================== Layer Thaw ===============================
    ( F* C7 k5 `! X9 D0 r4 |% C& l

  3242. + ?$ E0 V* d+ X1 R; K" G  ~1 A$ Y2 ]
  3243. (Defun LAYTHW ()
    6 J& o$ z' p# f
  3244.   (setvar "cmdecho" 0)
    # Y. Z+ a0 m+ O. G& x
  3245. (setq Lay lff1) (setq Lff1 Lff2) (setq Lff2 Lff3) (setq Lff3 Lff4) (setq Lff4 Lff5) (setq Lff5 Lff6) (setq Lff6 "0")
    " z6 Q. ]3 D3 y, S  b/ ~0 J
  3246.   (Command "_.LAYER" "_THAW" LAY "")
    - a$ \) f* J% B* {
  3247.            (princ (strcat "\n     Layer : " LAY " da THAW."))
    & v1 d+ |, O! v" c
  3248.            (princ) ): q; }5 F: o* r9 Q
  3249. (defun c:LAYTHW () (laythw)) (defun c:LW    () (laythw))
    9 v9 f% E" g6 o6 o/ `, e. N
  3250. * q$ P2 j  \# k2 c. h3 C7 ~0 F
  3251. ;;; ============================== Layer Lock ==============================, S  b2 z- Q' d2 ]( W: u% |  a( g( k
  3252. ) K7 ]4 {( L: N3 c* m) a
  3253. (Defun LAYLCK (/ LAY)
    : c& M, L5 k/ p/ r
  3254.   (setvar "cmdecho" 0)$ z. X/ P: C8 {3 N" Z
  3255.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon LOCK: "))* `/ h3 l. O) j6 [% z
  3256.   (if LAY
    $ _' {8 G3 H8 t3 d+ m
  3257.     (progn- G4 D" p  j# I0 m" X$ X" Y
  3258.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))' d3 x3 Y6 J" r
  3259.       (Command "_.LAYER" "_LOCK" LAY "")
    % i. X7 L% X$ }; X: }1 L% @$ Z$ E
  3260.       (princ (strcat "\nLayer " LAY " da LOCK."))    )  )  (princ) )
    % L0 O0 |: W* h$ ]1 P
  3261. (defun c:LAYLCK () (laylck)) (defun c:LK     () (laylck))
    . }# y: l; x8 S, B2 d/ p" `! `5 C
  3262. 2 v7 Q5 C6 |: T3 \
  3263. ;;; ============================== Layer UnLock ==============================
    ! G7 a) N- ]; v0 M
  3264. 8 c, a* `; N) o9 k0 X- i: C6 ~4 f+ c6 P
  3265. (Defun LAYULK (/ LAY)* M8 R  y7 H6 b6 ?/ k- g+ a. m
  3266.   (setvar "cmdecho" 0)
    + o, e, n# G$ J  {: Z& x  {# B
  3267.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon UNLOCK: "))" J4 B4 L* T1 L+ d5 m/ g
  3268.   (if LAY- I+ ]* A1 r: _0 a/ u' ?! g) K
  3269.     (progn5 T1 ~8 J# R' c0 ?
  3270.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))
    " ]) D3 z+ I7 z
  3271.       (Command "_.LAYER" "_UNLOCK" LAY "")
    9 o2 \1 N/ S6 w  M/ L- p' b; e6 L" }
  3272.       (princ (strcat "\nLayer " LAY " da UNLOCK."))    )  )  (princ) )7 I) l7 a  ~" r0 Z; B5 }( b# y+ R
  3273. (defun c:LAYULK () (layulk)) (defun c:LU    () (layulk))
    ! S. ]; V* ?/ X
  3274. $ c! G5 }2 U4 N: `% b
  3275. ;;;===================== Delete all objects of Layer ========================' K% p* U2 W, I! `" R4 t  |
  3276. 8 u# W: \5 H; }+ ]
  3277. (defun DELAYER (/ ocmd L S)
    % X: n6 b& [2 `" j& b' i. o
  3278.   (setq ocmd (getvar "CMDECHO"))
    3 D4 g2 p& {; t* m
  3279.   (setvar "CMDECHO" 0)
    * s; J9 F* p/ _; f
  3280.   (setq L (strcase (getstring "\nLayer(s) to delete: ")))3 I, Z1 K" w; Z4 a
  3281.   (setq S (ssget "X" (list (cons 8 L))))
    2 _" B# h, _$ w4 r' L8 h# a
  3282.   (if S $ {2 W8 j# U, B* Q) e
  3283.     (command "ERASE" S "")            6 R- w# V; p4 f7 E/ C% L% C9 ]+ H  r
  3284.     (princ "Layer empty or not a valid layer name.")  ) # Y6 M" C2 I* P$ q8 r7 A4 i
  3285.   (setq S nil)                        ; W. D( `- r1 n6 D
  3286.   (setvar "CMDECHO" ocmd)            
    / z" K% u; h8 v2 e; P
  3287.   (princ) ) % L+ C2 d. @2 U& h# s' |
  3288. (defun c:DELAYER  () (delayer)) (defun c:DELLAYER () (delayer)) (defun c:DEL      () (delayer))  U: {) l9 F  c9 v2 M) F" `* i& _
  3289.   ?2 {1 s. {. ]) F6 ?' s$ y
  3290. ;;; ========================= HET CAC LENH LAYER ===========================2 F) g8 A- b. M. q  s
  3291. , A# K, [: c6 q7 O+ D2 r! Z
  3292. ;;;====================== EXTEND NHIEU DOI TUONG ===========================
    - t. J$ \2 h* n( j
  3293. , n+ C' ?( C8 f  N# V2 p6 u
  3294. (Defun C:EET ()3 G5 R5 J. C: r' h5 V
  3295.   (Setq CVAR (Getvar "CMDECHO"))  (Setvar "CMDECHO" 0)
    2 w4 p& I' S6 z' S4 E$ b
  3296.   (Prompt "Chon doi tuong dich cua EXTEND :")  (Setq CUTEDG (Ssget))
    " H+ F1 y" l, _7 o
  3297.   (Prompt "Chon doi tuong de Extend :")  (Setq SS (SSget))  (Setq LEN (SSlength SS))) X+ L8 d5 C7 g! f  A+ i
  3298.   (Setq I -1)# h  Y+ P  R. H  _
  3299.   (Setq SIDE (getpoint"Chon phia de EXTEND"))  (Command "EXTEND" CUTEDG "")
    # N7 p* v) t" X$ l0 x$ x$ v( q
  3300.   (Repeat LEN
    0 p8 [* l3 [- U: J
  3301.    (Setq I (1+ I))
    , y5 T3 z2 r  D! x9 G4 C- S! k+ }! Q
  3302.    (Command (List(SSname SS I) SIDE))  )  (Command "")
    * F! P* z0 W4 R+ K8 z  h( ~
  3303.   (Setvar "CMDECHO" CVAR)  (Princ "Da Extend xong moi ban lam tiep")  (Princ) ). |/ `& a9 R: b# M

  3304. ; ^! K) p9 G$ n
  3305. ;;; ===============  EXTEND 1 DOI TUONG THEO KHOANG CACH ===============7 i. z& b1 x  s% i7 U" z) D
  3306. 4 \6 d4 X9 v* b/ O' d
  3307. (defun c:ETT ()  (setq os (getvar "osmode"))  (setvar "osmode" 512)
    $ @  @+ q, x8 X0 e" _( l. U# Q8 P
  3308.   (setq pt1 (getpoint "\nKich vao 1 dau doan thang can EXTEND  "))
    2 e  x' f$ ~0 ~% s1 f( x% ~, u9 t# C  L
  3309.   (setvar "osmode" os): h+ Y  V* Y# e9 @5 U$ X
  3310.   (setq dis (getdist pt1 "\nKhoang cach can EXTEND :"))/ W2 }5 \4 X+ i' s( ~2 a
  3311.   (command "circle" "endpoint" pt1 dis)  (command "extend" "last" "" pt1 "")  (command "erase" "last" "") (princ))/ g" }+ C& P6 a+ ]& F( K
  3312. 4 D& `3 l8 n% ^* R* D0 f( Z. f: i( Z
  3313. ;; ================ Change width of polylines =========================
    + \% C. M. B" p8 Q/ V

  3314. 6 O* i( E* h( v: ?& R+ O, k
  3315. (DEFUN wp (/ a b sophantu sodem list1 ha:wid)
    - E' ?1 e. L$ }+ E; J) |
  3316. (PRINC "\n         Chon doi tuong can thay doi do day (Width) !") 8 ?% {) c$ t1 H! Q9 n: F
  3317. (setq b (ssget))
    . A  i2 q/ H' N2 x
  3318. (setq sophantu (sslength b))
    : v+ k' K3 L5 h! e: X' z% d
  3319. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))  d2 X& R! n& j
  3320. (princ "\nDo rong polyline <")( `" y8 n' N  y* b8 P; B
  3321. (princ ha:wid): F1 Z* i# g, ?! Z4 \' \* {1 q
  3322. (princ ">: ")
    3 I& }0 v0 ]) o1 u* R! a
  3323. (initget 4)
    ! g- b) Q% m3 o6 O3 @% |7 B0 S, o
  3324. (setq ha:wid (getdist))
    6 ~1 e0 m5 I- p) \% E; q5 ^
  3325. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))
    9 s7 x. i& |# S
  3326. (setvar "tracewid" ha:wid)$ ^5 x& f! d9 S: D. Y$ ^
  3327. (setvar "cmdecho" 0)- p- M4 J/ b! j1 @2 [
  3328. (setq sodem 0) - W9 v3 S: X* H* i1 F$ ]
  3329. (repeat sophantu
    ) X/ W8 B7 R  G! d4 h% \
  3330.   (setq a (ssname b sodem))( C  k$ u+ _* @. [6 B1 z
  3331.   (setq list1 (assoc 0 (entget a)))
    7 W% ^. e; F- r3 _0 |. G  W# t
  3332.     (cond. b5 b& M, o4 A# k7 w
  3333.      ((= (cdr list1) "POLYLINE") (command "_Pedit" a "w" ha:wid ""))8 s2 k* l; Z  A- Y, A7 G
  3334.      (PROGN (command "_Pedit" a "" "w" ha:wid ""))    ) 6 {. O. ~. B  m
  3335. (setq sodem (1+ sodem)) )(SETVAR "cmdecho" 1)(princ))' C! ^5 L9 i* d# s+ O/ S  ^+ @
  3336. (defun c:wp () (wp)) (defun c:pw () (wp))
    / A4 p9 h: t8 a- q" f

  3337. 2 o; }" w; |* P( @( D
  3338. ;; ================ Change radius of circles ==========================
    + g( {/ w) s5 A

  3339. 7 Q/ t4 z4 i' i) |
  3340. (DEFUN C:CHR (/ SSET SSL M RD I)   (PRINC "\nSelect Circles :")   (SETQ SSET (SSGET))
    4 ]" ]. o9 s/ p' y) l% u
  3341.    (IF (/= NIL SSET) (PROGN  (SETQ SSL (SSLENGTH SSET))  (INITGET 4 "")  (SETQ RD (GETDIST "\nNew radius : "))
    1 e- i" C% Y: m2 W' d  e' ?
  3342.    (IF (/= RD NIL)  (PROGN (SETQ I 0)
    8 T; e" @; M1 O  M/ A- v
  3343.    (WHILE (< I SSL) (SETQ M (ENTGET (SSNAME SSET I) ) )
    " A- ?. [' T% X- D( ~
  3344.    (IF (= (CDR (ASSOC '0 M)) "CIRCLE") (PROGN
    * Y2 t4 }/ R" i1 m, i& |  u( L
  3345.   (SETQ M (SUBST (CONS 40 RD) (ASSOC 40 M) M))  (ENTMOD M) ) )  (SETQ I (+ I 1)) )      )   ))) (PRINC) ). |: b  g1 B+ H" _+ T
  3346. , l& ^# d4 @1 _' ~# S
  3347. ;;; ============================== TEXT Hight ===============================' G' k, I1 Y  r/ _! v6 G) I) w

  3348. * v6 A- y( ^0 G; l7 U8 H
  3349. (defun texthght (/ ent hght)
    # {/ ]7 p9 J0 S9 p; I
  3350.   (setvar "cmdecho" 1)
    ; ~2 P* l- S5 e' y
  3351.   (prompt (strcat"\nSelect text entity with required text height"))
    9 v* l9 k3 e7 E( P
  3352.   (prompt (strcat"\n."))
    . B, _8 s4 a4 z3 K; ?
  3353.   (setq ent (entget (car (entsel))))
    5 K; K- E2 H2 O; X& w- W
  3354.   (setq hght (cdr (assoc 40 ent)))
    ; M7 q2 z* t. e' a2 P
  3355.   (prompt (strcat"\nText height now set at "))(prin1 hght)
      r: q) o/ {  Q& p. S6 U# L- P
  3356.   (prompt (strcat"\n.")) ) @" G  e, ~( {4 _, R
  3357.     (setvar "cmdecho" 1), [: K, z- }. }8 L( s
  3358.     (command "DTEXT" PAUSE hght "") )
      t1 L$ v5 }5 m
  3359. (defun c:teh () (texthght))  (defun c:texthght () (texthght))& P3 d, l4 C9 p+ S8 j+ f

  3360. # R& R- [) X& \6 S6 x& R
  3361. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    % U  G" Y: O* d1 Y

  3362.   G: h1 f/ E" \+ }/ Q' A! w4 [, S
  3363. (defun c:tuu ()  (setvar "cmdecho" 0)
    7 B$ l+ ~& M& |$ U8 @6 o
  3364.     (prompt "\nHay chon dong TEXT can gach chan ")
    ( M) \9 _# }# y& Y) X- w) p4 L
  3365.     (prompt "\nSelect objects: ")' ]. s3 b% I+ r, ?% ~# _/ i) [
  3366.     (command "select" "au" pause)
    : O8 ~/ P9 I& I
  3367.     (setq sstxt (ssget "p")
    ! ?4 I& A1 X# X$ r. i
  3368.           sslen (sslength sstxt)
      x  D( j# q) z$ i4 k
  3369.           ctr 0    )
    7 W! t" g8 U8 n2 p3 c6 J
  3370.     (command ".undo" "mark")
    ) j) _# N; p- V! R% j2 u/ P
  3371.     (while (< ctr sslen)7 {8 ?" L) X" q3 c- \
  3372.            (setq listxt (entget (ssname sstxt ctr))4 m/ C: U% h+ o  \
  3373.                  txttxt (cdr (assoc 1 listxt))
    / j4 x5 H5 s( h% r2 Y! V
  3374.                  enttxt (cdr (assoc 0 listxt))   )5 w" ^. }+ Y- B# z, s7 |
  3375.            (if (= enttxt "TEXT"), o  |4 K6 h/ Q& w: ?9 F; W
  3376.                (progn
    " k# J; \+ |+ `7 b; ~/ \6 s
  3377.                    (setq testxt (substr txttxt 1 3))
    : j, y2 X% @- f/ b, a
  3378.                    (if (or (= testxt "%%u") (= testxt "%%U"))$ h% S( v! g2 H0 t
  3379.                        (setq newtxt (substr txttxt 4))
    6 ]) f* n+ V& H3 t5 u
  3380.                        (setq newtxt (strcat "%%u" txttxt))    )
    ; p  }" P! u8 W: Y/ h8 g
  3381.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))2 B' r2 j5 W4 a
  3382.                    (entmod listxt)                ) ); K( Y; [% a) D7 p, [, f' H
  3383.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    : O* |  b) `" g' o! B2 j4 Q# S9 n2 a
  3384. 5 b7 T; |6 Z$ M2 o3 T
  3385. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================6 Q. Z5 W* D  c
  3386. 4 {+ O/ ^8 S: U7 o+ q2 h( [! C9 N
  3387. (defun c:tob ()  (setvar "cmdecho" 0)* h. t; _) |8 ^& m1 V1 Z& k
  3388.     (prompt "\nHay chon dong TEXT can gach tren dau ")
    8 I$ `; q4 t0 L6 {; R
  3389.     (prompt "\nSelect objects: ")' P' T5 }9 v" T/ b+ c3 o* k
  3390.     (command "select" "au" pause)
    / G. w1 C5 Z5 x" d
  3391.     (setq sstxt (ssget "p")
    : f; Q  r. i# J
  3392.           sslen (sslength sstxt)
    / H5 A3 R! _& j: Q
  3393.           ctr 0    )
    * ^; x* o1 z  C  _
  3394.     (command ".undo" "mark")# @) F' K0 L' k
  3395.     (while (< ctr sslen)$ |0 L$ W+ Z7 H3 }. {
  3396.            (setq listxt (entget (ssname sstxt ctr))* O; n8 K; J1 P6 h! [' x$ F$ F
  3397.                  txttxt (cdr (assoc 1 listxt))
    $ Y* ]+ a" d, k
  3398.                  enttxt (cdr (assoc 0 listxt))   )
    : g7 o. G5 |! J* I8 y/ |8 _) }$ W
  3399.            (if (= enttxt "TEXT")" g0 d6 u9 L1 U  W( p
  3400.                (progn
    1 L1 d' U3 H. k/ c2 Q! j
  3401.                    (setq testxt (substr txttxt 1 3))
    , _" |/ m) ?# ?
  3402.                    (if (or (= testxt "%%o") (= testxt "%%o"))" C$ U; U. w% x. v; _
  3403.                        (setq newtxt (substr txttxt 4))
    " _( Q' l- D' \' B0 s
  3404.                        (setq newtxt (strcat "%%o" txttxt))    )
    ( S. S! V# s# \
  3405.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    . X) M5 p& r* w  j
  3406.                    (entmod listxt)                ) )) J! `- h  T$ ?! L/ y! |6 d2 P, F2 I
  3407.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    / C/ o6 E$ @( |: A7 Z" X4 Q

  3408. 5 F  @) P& Y& j- e
  3409. ;;; ========================== Tim & thay the TEXT ==========================, f( y: M" X9 `

  3410. " [% V' @( p1 E0 p4 |4 E
  3411. (defun frstring (str search replace / str1 str2 index find)" ]' t  t% g& W* ~: i( |& M
  3412. (setq index 0) (while  (<= index (- (strlen str) (strlen search)))  (setq index (1+ index))
    ) ^# H8 b' ~2 Y8 I' K6 u
  3413. (setq find (substr str index (strlen search)))  (if (= find search) (progn    (setq str1 (substr str 1 (1- index)))
      k: A- {& T: J, V! {1 j  \
  3414. (setq str2 (substr str (+ index (strlen search))))  (setq str (strcat str1 replace str2)) )  ) ) (setq str str))5 |- n# l8 Z& U" ]( p+ a* ^4 U
  3415. (defun hai (/ dial); g6 o- h7 x7 [( R/ B0 @
  3416. (setq dial (load_dialog "hai.dcl"))       ;;goi dialog
    ! G7 b* u; U$ d9 C5 f9 j, H
  3417. (if (not (new_dialog "find" Dial)) (exit)) ;;6 Q3 d* T' N+ V" b
  3418. (mode_tile "find" 2); Tao dau nhac tai hop thoai9 D7 S) z: H8 r) {2 c
  3419. (action_tile "find" "(hai1)")
    0 ^- H: Q2 ~* s: p, o
  3420. (action_tile "replace" "(hai2)")/ w3 l" ~0 o0 Z
  3421. (action_tile "cancel" "(done_dialog) (exit)")
    & t, Y: V9 s* _. u, A
  3422. (start_dialog)      
    - T! X/ O# S% I/ ]% o% d* }  w
  3423. (unload_dialog dial))
    7 _  p. O7 d% `+ X: ^3 ^
  3424. (defun hai1 () (SETQ str1 (get_tile "find")))) i. x0 Y. p! F. C3 _
  3425. (defun hai2 () (SETQ str2 (get_tile "replace")))
    4 t: E7 ^" o9 ?) G% z
  3426. : _: A7 ]4 ]6 e
  3427. (defun c:TTT (/ a str str1 str2 newstr taphop sodem)
    " x& @2 [& ?" H! a, C
  3428. (hai): r- B( T+ k) W' G, E0 G
  3429. (if (or (null str1) (null str2)) (princ "\nDu lieu khong hop le")) t7 K5 j* U$ b* U( ?7 j
  3430.   (progn
    0 Z( e6 b2 }3 c" {8 f: H0 s* E
  3431.    (setq taphop (ssget '((0 . "TEXT"))))
    : ?; ~5 N1 X* D7 d) p; I8 S1 |
  3432.    (setq sodem 0): Y" L0 W. R0 {6 O8 D- _
  3433.    (if taphop  f- K6 F6 y! x& w
  3434.     (progn
    . ], j% c( M: Q, z) K% q2 S
  3435.      (Repeat (sslength taphop)7 J, {# O: ?* t3 T; Q$ v
  3436.       (setq a (entget (ssname taphop sodem)))# ]. Z& ~% a' G' y4 D) n: L% f/ m
  3437.       (setq str (cdr (assoc 1 a)))
    1 C1 c# e# C  ~1 W
  3438.       (setq newstr (frstring str str1 str2))
    6 [/ {1 f: q  _1 i$ N! e2 i% |
  3439.       (setq a (subst (cons 1 newstr) (assoc 1 a) a))# |2 d' N7 N9 a; Z
  3440.       (entmod a)4 t! f; |5 b9 ^
  3441.       (setq sodem (1+ sodem))     )    )
    0 C" U+ B( ~6 z- ?! y
  3442.     (princ "\nNone "TEXT" selected")   )  ) ) (setq *error* olderr) (princ))5 o% U6 i4 ]1 B  A* X' q
  3443. 0 X6 b) ^' o( U) `
  3444. ;;;=============================  CHTEXSTY.LSP =============================& P" N0 d+ y) F

  3445. 2 \% g, c3 A" ]; |
  3446. (Defun C:TXS () (Setvar "Cmdecho" 0) (Initget 1 "SE ST ")
    ' y- H; _4 d- O) `* ~
  3447. (Setq G (Strcase (Substr (Getkword "STyle/<SElection>:")1 2)))
    + O  q6 g( V; L
  3448. (Cond ((= G "SE") (Setq A (Ssget)) (Setq B (Sslength A))& Z4 S3 }4 P7 z3 Q' m( v" v! q( W
  3449. (Initget 1) (Setq C (Getstring "\nEnter new text style: "))
    ' L# k" a- H; |/ I5 K
  3450. (Extang C) (While (> B 0) (Setq B (1- B)) (Setq D (Ssname A B))
    9 W9 @( g3 p  m# ^
  3451. (Setq D (Entget D)) (Setq E (Assoc 7 D)) (Setq F (Cons 7 C))
    / H; F8 B1 n% Y6 i6 b  K7 ^
  3452. (Setq D (Subst F E D)) (Setq H (Assoc 51 D)) (Setq I (Cons 51 J))
    : x0 Z4 z( ^0 n6 G7 y/ d# R
  3453. (Entmod (Subst I H D))) (Setq A nil)) ((Or (= G "ST") (= G ""))4 ~  N  G9 F* @+ P
  3454. (Initget 1) (Setq A (Strcase (Getstring
    4 p- E& G0 o& t
  3455. "\nEnter text style to change: "))) (Initget 1)
    - g2 p3 S+ v* v# C; F
  3456. (Setq C (Getstring "\nEnter new text style: "))(Setq D (Entnext))
    4 z  A4 [& P2 x. V9 Y, u
  3457. (Extang C) (While D (Princ ".") (Setq E (Entget D)) (If
    " v, c! S5 I5 N1 Q  C/ z1 d
  3458. (And (= "TEXT" (Cdr (Assoc 0 E))) (= A (Cdr (Assoc 7 E))))9 ?" i* u! m8 R
  3459. (Progn (Setq F (Assoc 7 E)) (Setq G (Cons 7 C))4 Z0 h3 _  x/ j- x' `6 s3 Y2 O) z% B
  3460. (Setq E (Subst G F E)) (Setq H (Assoc 51 E)) (Setq I (Cons 51 J))
    * a; p5 O8 \% p' x
  3461. (Entmod (Subst I H E)))) (Setq D (Entnext D))))) (Princ))$ R) ?0 h* J0 v  _. s

  3462. 5 R/ b' C; B( n8 L( q# n9 f7 C
  3463. (Defun Extang (A) (Setq A (Tblsearch "STYLE" A))
    ! N- R2 o7 r/ M3 F
  3464. (Setq J (Cdr (Assoc 50 A))))
    5 [5 A0 V* p0 c, Y2 w6 Y' a
  3465. 8 i  B, z0 t3 ^9 T/ k* v
  3466. ;;; ============================ DRAW CLOUD =============================
    3 [' ?3 C8 K# c& }
  3467. , b" V( s/ O0 b* g& X6 e, Y( w
  3468. (defun CLOUD (/ pt1 pt2 arc1 cnt ss la)    (setvar "cmdecho" 0)1 x; ?* ?% |& l
  3469.     (prompt "\nVe cloud (may) khong khep kin - Tu khep kin ve diem dau!")" n  u) I; C4 T8 z
  3470.     (setq la (getvar "clayer"))0 {  y7 X6 A4 D; b6 v6 L. y
  3471.     (command "layer" "m" "cloud" "c" "5" "" "")
    7 K4 i  b/ C4 Q$ k/ U4 L: N
  3472.     (setq pt1 (getpoint "\nEnter first point of Cloud: "))6 k! N7 g4 B/ K+ X9 v  `
  3473.     (if pt1 (prompt "\nProceed in a COUNTER-CLOCKWISE direction..."))
    ( N7 ?+ I5 i$ t3 b
  3474.     (setq cnt 1 ss (ssadd))
    4 b6 m: u# |' n0 l- }
  3475.     (while pt1 (setq pt2 (getpoint "\nEnter next point - and close: "))
    ! \" K, y( I8 V2 y' \7 L, h
  3476.     (if pt2 (progn (command "arc" pt1 "e" pt2 "r" (/ (distance pt1 pt2) 1.75))$ U( V# ^) \2 U9 y0 H
  3477.     (if (= cnt 1) (setq arc1 (entlast) cnt 2) (ssadd (entlast) ss)) ))# |- f: R9 l7 }4 y2 p
  3478.     (setq pt1 pt2) ) (setvar "highlight" 0) (if (> (sslength ss) 0)
    ) {: n; H) w' S8 R4 @, @2 c$ L; u* ~
  3479.     (command "pedit" arc1 "y" "j" ss "" "x")
    ' I0 }3 t1 S- I1 {
  3480.     (if arc1 (command "pedit" arc1 "y" "x")) ) (setvar "highlight" 1): f) K3 w! F, j" H  I: @
  3481.     (command "layer" "s" la "")    (setvar "cmdecho" 1)    (princ))  
    2 a* z8 @0 p- y0 b6 q
  3482. (DEFUN C:CLOUD () (CLOUD)) (DEFUN C:CLO () (CLOUD))
      V, j7 Y) P( s1 k
  3483. 3 F; e# ]' @  J" [  k: a
  3484. ;;; ================================ Funtion-Dulieu ========================
    - h6 S" u3 ^" `  E5 a2 t
  3485. ;;; ================================ Funtion-Dulieu ========================& H' t$ _0 b/ _) M
  3486. ;;; ================================ Funtion-Dulieu ========================
    ' X) p* ]1 R4 ?* z6 H; e1 y
  3487. / c! k' Y! r: G( P
  3488. (defun ha:nhap (kytu thamso) (princ kytu) (princ thamso) (princ ">: ") (setq key (getint)) (if key (setq thamso key)) (princ thamso) )
    1 Z7 d+ [# [% f7 m5 {, e
  3489. (defun ha:thoat () (reinit) (setq Temp "Da thoat khoi chuong trinh"))+ R9 p! q% w$ X$ g: Q
  3490. (defun khoangcach (kh khq11 khq12 / h0 h1) (setq h1 (polar kh (angle '(0 0) (vectophap khq11 khq12)) 500)) (setq h0 (inters khq11 khq12 kh h1 nil)) (distance kh h0))
    ; d% z- w5 \& L5 [% g" e( H) W0 V
  3491. (defun hacat (hacat1 hacat2 / hacat3 chon) (if (and (/= hacat1 nil) (/= hacat2 nil)) (progn   (setq hacat3 (polar hacat1 (angle hacat1 hacat2) (/ (distance hacat1 hacat2) 2)))   (setq chon (ssget hacat3))   (command "break" chon hacat1 hacat2)  ) ) (princ) )
    - W) ~# t) _8 M$ l% q! G. {
  3492. (defun hauon (hauon1 hauon2) (command "fillet" hauon1 hauon2))
    ' C$ z& E9 B0 V  ?3 i9 F0 n& e* v
  3493. (defun init () (setvar "blipmode" 0) (setvar "cmdecho" 0) (setvar "angbase" 0)); q$ B5 R9 H9 |( ]9 Q
  3494. (defun reinit () (setvar "cmdecho" 1) (setvar "osmode" 0))* n) L: s9 h* q
  3495. (defun tichvecto (vecto1 vecto2) (apply '+ (mapcar '* vecto1 vecto2)))
    9 r! e7 _( S) p% q: g
  3496. (defun vectophap (v01 v02 / vectochiphuong) (setq vectochiphuong (mapcar '- v01 v02)) (list (cadr vectochiphuong) (* -1 (car vectochiphuong))))* ]% b7 }, _, }2 u1 Q
  3497. (defun ha:giaodiem (dc1 p1 p2 / hc hc1 diem1) (setq diem1 (vectophap p1 p2)) (setq hc1 (polar dc1 (angle '(0.0 0.0) diem1) 100)) (setq hc (inters p1 p2 dc1 hc1 nil)))
    6 T. \: V" h/ V2 ^# Z
  3498. (defun dtr (dtr) (* pi (/ dtr 180.0)))
    & ^) ~! D% ]( y  e1 v8 D/ D  {9 y
  3499. (defun rtd (rtd) (* 180.0 (/ rtd pi)))4 a% H: A3 f+ ~0 m. z
  3500.   R; r# i4 b; s9 ~! Q, G
  3501. ;;;==============================PROGRAME===============================
    4 g$ ~3 f9 b0 [
  3502. ;;;=====================EditDiM Hien Hop Thoai Dep======================
    & {; e: x) n8 Y7 M$ X) w
  3503. ;;;==============================PROGRAME===============================6 w" c( M: X  z, Q% }$ l- S

  3504. ) `, W& M: }7 g
  3505. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)
    ; C' O0 ^# a" A$ ]
  3506. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl
    $ o' ^. {# D7 a8 o3 e0 k
  3507. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)1 Q1 g7 b' s" s
  3508.   (Setq Oldlis (Entget (Car Chon))
    + B" U1 @3 s5 |! G3 L: C
  3509.         Pt10 (Cdr (Assoc 10 Oldlis))
    ) h- V6 c: C' V% m
  3510.         Pt13 (Cdr (Assoc 13 Oldlis))+ U4 E- ?: Q! G% u+ d3 `  o- I
  3511.         Pt14 (Cdr (Assoc 14 Oldlis))
    0 m9 t- t: K$ X" ]1 C
  3512.         St  (Cdr (Assoc 70 Oldlis))+ ^+ b/ h( l) n- a4 V/ w" R1 p$ u
  3513.         Dimdefault (Cdr (Assoc 1 Oldlis)); E4 P5 x. @& a; Y% P+ @/ @
  3514.         )
    7 x. B; ?2 |, @2 E
  3515.   (Cond; [& v! A+ T4 P) `" E9 w/ a
  3516.     ((Or (= 32 St)(= 0 St)(= 160 St))9 t  T  Y( i6 n' v9 `1 H9 z, B! a
  3517.      (Progn
    % U, _. ]4 g# r, p$ ]
  3518.        (Setq Ang (Cdr (Assoc 50 Oldlis))2 @+ F8 k3 V) [. ?, a+ T/ E) h9 o
  3519.              Pt (Polar Pt13 Ang 500)
    , C! j& \6 _# r# a$ w- S
  3520.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)
    2 e& [% x" R3 u1 N  p6 Z
  3521.              Dis (Rtos (Distance Pt13 Hc))
    + c; R% N: d7 J* F
  3522.              )- j5 M) S% M: z! z
  3523.        )2 h/ p# X3 L( a2 G& ]# E% ~
  3524.      )
    3 t' U& N% J2 r! K( J
  3525.     ((Or (= 33 St)(= 1 St))
      V7 h/ o. B( N3 g
  3526.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))
    7 n" G1 o$ s! U# j" a, [8 \; R
  3527.     );;End Cond. T/ @, B% I+ \- j5 s
  3528.   (If (= Dimdefault "") (Setq Dimdefault "<>"))
    + C9 J+ }# {' u
  3529.   (Setq Dial (Load_Dialog "Hai.Dcl"))
    - d# n' i. P9 f+ S9 [/ @' s
  3530.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    - b& u7 h/ c; W; D! @$ e
  3531.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))
    " i7 P* Z' {- V& d
  3532.     (Set_Tile "text" Dis))* }$ G2 [0 l3 t5 i
  3533.   (Set_Tile "ha:edim" Dimdefault)
    % D! d$ ~. ~# D' C
  3534.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai
    " w, D+ y2 h+ a" K$ ~8 N5 x
  3535.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")
    5 O4 K4 q' I) R: A8 Y6 B! G7 ^
  3536.   (Setq State (Start_Dialog))(Unload_Dialog Dial)8 q# R4 D- d1 D9 j8 J; c
  3537.   (If (And Str (= 3 State))
    1 _% r) t  `% h* ^4 e
  3538.     (Progn
    2 Y8 ~) F" `, a% G. w. r! j& z
  3539.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))
    $ E' L7 ]& x; a/ j! e% M( I9 y
  3540.   )
    . L+ ~; L% I. L7 @
  3541. (Defun C:EH (/ Chon Name )
    6 E, N1 M: r: u  B' [. F+ R
  3542.   (Defun *Error* (Msg), K' o6 a2 G: g5 b# j: H+ h( z
  3543.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")
    , u% j* ]' z7 ~8 O, h% h  H; e
  3544.     (Start_Dialog)(Unload_Dialog Dial)% A8 |) P4 B2 o! u! y% e" B
  3545.     (Setq *Error* Olderr)(Princ)  j1 q' C2 v: u  H( ^% ?+ s
  3546.     )% T) C* `+ J" @
  3547.   (Setq Olderr *Error*)
    1 {0 k7 d$ X9 K( l: {! A5 p
  3548.   (Setq Chon T)
    0 _0 m% N( o" p% ^$ r. i. T6 Y
  3549.   (While Chon
    7 ?7 F5 l( T5 y7 }5 m) a6 v
  3550.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    . i6 h: \$ v7 d
  3551.     (If Chon# l1 @( h$ Y$ z' H
  3552.       (Progn
    & b) I2 N( f/ r3 u( e3 P: u
  3553.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))
    / U# ?7 n- I6 I( T  r  p$ |" X
  3554.         (Cond
    ! A4 X0 a' a+ x" A
  3555.           ((= Name "INSERT")(Command "Ddatte" Chon))
    2 ]8 T6 ?8 _! Y# D% ~# ]1 }
  3556.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))
    : S( e! v; d$ g# I1 d
  3557.           ((= Name "DIMENSION") (Hai_Edim Chon))
    ( ]8 n$ |$ v( g' q: |9 a- z
  3558.           )) j$ n# W0 |6 u# a  r& |/ @) [% h
  3559.         );End Cond$ s* r% ]* {$ n1 ^: R+ n
  3560.       );End Progn8 Z/ _# c3 ^" N1 U' z6 J& W
  3561.     );End While
    7 M; B4 {/ j4 D2 \, [
  3562.   (Setq Olderr *Error*)(Princ)
      k2 H7 N1 A; |; X+ m
  3563.   );End Program0 J" X1 u( u6 F3 f

  3564. ( g/ f/ r! C) Z! i' P8 m
  3565. ;;;====================DDeditDim=====================
    1 s9 }0 j3 }: @3 N! z
  3566. ;;;=====================Hai.DCL======================
    : j$ E2 z) G+ N8 G
  3567. ;;;====================DDeditDim=====================
    ! a% t8 P/ y* ]
  3568. # R% @% c: f! g; b0 {+ L
  3569. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)
    ; c! `, B0 X! C6 y( k2 X0 S
  3570. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl
      l  e3 y, W  ?7 p! s8 Z- v$ R
  3571. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)) V% ?$ `% V0 d) u( w
  3572.   (Setq Oldlis (Entget (Car Chon))8 g$ D9 b) r  [3 S" e
  3573.         Pt10 (Cdr (Assoc 10 Oldlis))
    - R& o+ [8 {" f1 Y$ U' |
  3574.         Pt13 (Cdr (Assoc 13 Oldlis))
    " P- v, q$ H9 |  p, P
  3575.         Pt14 (Cdr (Assoc 14 Oldlis))/ q& x  D& |( T! O5 I
  3576.         St  (Cdr (Assoc 70 Oldlis))
    4 h: P) V- V% F! q
  3577.         Dimdefault (Cdr (Assoc 1 Oldlis)), c6 C( d. W3 q  h- ~, ]( `% y
  3578.         )
    & W) y$ Y; k6 _6 D, K/ d
  3579.   (Cond, a1 {7 G* C1 `0 V. i3 u1 g
  3580.     ((Or (= 32 St)(= 0 St)(= 160 St))
    1 h. E3 A$ k  |( F  W
  3581.      (Progn+ V2 ^. J# R" [+ U
  3582.        (Setq Ang (Cdr (Assoc 50 Oldlis))6 Q( [) v1 N4 h- N8 @$ w/ C! u
  3583.              Pt (Polar Pt13 Ang 500)
    ' F: F9 Q( {8 g& M* }( Y! Q
  3584.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)
    " o& y4 _2 \, N. c) n
  3585.              Dis (Rtos (Distance Pt13 Hc))* x. j/ W' U5 ?  ?
  3586.              )
      u2 B( h7 |0 c" t
  3587.        )
    & ^  I  n% v: \$ p4 b! _" R
  3588.      )
    1 b3 _) }/ P" D% M
  3589.     ((Or (= 33 St)(= 1 St))( h1 F! b  d' v8 |% ]
  3590.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))8 n2 Q3 ^0 @. D* M! J3 d4 p
  3591.     );;End Cond7 \5 `# ?( _' J$ a9 d  P, \3 j
  3592.   (If (= Dimdefault "") (Setq Dimdefault "<>"))& O2 h8 G$ s; Z; |1 p7 t1 A5 z
  3593.   (Setq Dial (Load_Dialog "Hai.Dcl"))( t+ ^) I, T8 M8 D
  3594.   (If (Not (New_Dialog "eddim" Dial)) (Exit))7 I2 u) e) H& A( H) a. u
  3595.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))
    0 \* R' R& r. I8 F
  3596.     (Set_Tile "text" Dis))
    ; y& A1 G, t* b$ d2 T( {
  3597.   (Set_Tile "ha:edim" Dimdefault)1 e4 A) r3 r% e) N6 _# e- {
  3598.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai
    3 \9 Z. @% u( N: p2 T7 T
  3599.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")  }4 p  s; b. h. Y
  3600.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    / L9 z& [+ D  D; P/ r9 \8 a
  3601.   (If (And Str (= 3 State))
    9 F) ~' w) z' R5 _! M
  3602.     (Progn- k8 z. J4 \' `" e: n3 s
  3603.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))) G+ H, T+ B, K9 K- N" A
  3604.   )( }/ S' K' e9 r
  3605. (Defun C:EH (/ Chon Name )
    8 L0 U& q  Y- U* `: ]3 x/ L# x

  3606. 4 B" S$ M3 b5 N/ T% m
  3607. ;;;********************Du Lieu********************
    / k% X. ^, ]  `" q
  3608. 3 e4 H& E( I! x5 e7 X0 J2 P# r
  3609. (Defun Ha:Thoat () (Reinit) (Setq Temp "Da Thoat Khoi Chuong Trinh"))
    ' d8 ^! J  y9 E. O9 p8 d2 M
  3610. (Defun Hacat (Hacat1 Hacat2 / Hacat3 Chon)5 y! J; K$ \  F0 \6 \6 @
  3611.   (If (And (/= Hacat1 Nil) (/= Hacat2 Nil))
      V, ~5 ^" Z% N- v! K
  3612.     (Progn
    6 g( L6 U4 S1 b# }; k) p
  3613.       (Setq Hacat3 (Polar Hacat1 (Angle Hacat1 Hacat2) (/ (Distance Hacat1 Hacat2) 2)))" Z# P( D2 @/ x7 r4 c
  3614.       (Setq Chon (Ssget Hacat3))
    ! }9 B& ~# p7 H$ V/ z" R- w
  3615.       (Command "Break" Chon Hacat1 Hacat2)8 L: T8 K( J( {
  3616.       )
    0 I0 A% c0 ^7 i) ^$ r
  3617.     )
    . I1 ^* E( |( @1 I& S, n9 D6 @) M
  3618.   (Princ)
    # [* ?6 t$ v8 d- Q% F. d
  3619.   )( Y" [4 d! G0 e% s
  3620. ;;# x- e7 @0 b( @/ B% u" q" z
  3621. (Defun Hauon (Hauon1 Hauon2)(Command "Fillet" Hauon1 Hauon2))+ C( w: a+ N3 @& D
  3622. ;;
    , t1 m. M/ |5 N8 j2 Q
  3623. (Defun Taolop (Mau Lop / A)(Setq A(Tblsearch "Layer" Lop))(If (Null A)(Command "Layer" "_N" Lop "_C" Mau Lop "")) (Setvar "Clayer" Lop))
    % A% c9 u, [& m) t) P* x  l
  3624. ;;
    2 N1 x1 o' b0 C" l
  3625. (Defun Init ()(Setvar "Blipmode" 0)(Setvar "Cmdecho" 0)(Setvar "Angbase" 0))& J# z7 n; y/ {
  3626. ;;
    4 M4 W, s% V6 j2 g# ]) o$ k2 X
  3627. (Defun Reinit ()(Setvar "Cmdecho" 1))* g0 C( q  r$ y( H2 H  V/ K; G
  3628. ;;7 t% _9 z7 I" \3 M5 y% d6 q7 o& i9 {) d
  3629. (Defun Tichvecto (Vecto1 Vecto2)(Apply '+ (Mapcar '* Vecto1 Vecto2)))8 G! D0 X( `. |" i- X2 e5 e6 w
  3630. ;;
    ' `2 x; Y3 P4 w% \: e, \
  3631. ;;Cho 2 Diem Tinh Ra Vec To Phap
    9 `( y" x+ J- W: _, A
  3632. (Defun Vectophap (V01 V02 / Vectochiphuong)(Setq Vectochiphuong(Mapcar '- V01 V02)) (List (Cadr Vectochiphuong) (* -1 (Car Vectochiphuong))))
    5 H6 `2 H. k- M
  3633. ;;Xac Dinh Vi Tri Hinh Chieu 1 Diem Len 1 Duong Thang
    * w0 g4 u+ P+ B3 `9 o2 m
  3634. ;;Da Biet 2 Diem Thuoc Duong Thang7 q+ s, E( [4 b' g& U% C; Z
  3635. (Defun Lay_Hinh_Chieu (Dc1 P1 P2 / Hc Dc2)7 f% D2 J$ A9 W% {9 a5 V' Z0 t
  3636.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    , P" ?8 i& `" l5 ^; c
  3637.         Hc (Inters P1 P2 Dc1 Dc2 Nil)))
    * J9 ^( ]7 _' U9 Q9 b- t
  3638. ;;Xac Dinh Khoang Cach Tu 1 Diem Len 1 Duong Thang6 i, `! Q0 U* J9 b% t
  3639. ;;Da Biet 2 Diem Thuoc Duong Thang. i0 z. B: R( h( {
  3640. (Defun Khoangcach (Dc1 P1 P2 / Dc2 Hc)
    2 y! r) X4 n/ n( u- _$ \; Z
  3641.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)7 @5 V* [; v* a, A1 v- C) K8 t. i  x
  3642.         Hc (Inters P1 P2 Dc1 Dc2 Nil))
    0 f3 h' v& G5 \9 c5 J& H4 K
  3643.   (Distance Dc1 Hc)- L3 ?7 Q! D, Q
  3644.   )
    / v. v+ c, H5 S* p0 L4 ]' n6 W
  3645. (load "nhapcua.lsp")
    - ?2 d3 S; k! m) [# d, Y/ Y2 {
  3646.   (Defun *Error* (Msg)5 r: \% D* w' t
  3647.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")
    ( t" U1 J" U/ V
  3648.     (Start_Dialog)(Unload_Dialog Dial)
    % U0 }5 f, K3 t8 w
  3649.     (Setq *Error* Olderr)(Princ)- Q9 M1 ^7 g- X1 z+ ~5 t( ^4 U- C
  3650.     )
    5 s- _0 `9 I* O# O, {# V) F& o
  3651.   (Setq Olderr *Error*)0 b# b8 @; h# B  `2 o
  3652.   (Setq Chon T)
    $ H4 ~  \8 @. r$ d/ G
  3653.   (While Chon" n2 i6 U  v& W4 \# i
  3654.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    " B4 e( O; ^4 Y( @5 h
  3655.     (If Chon) u. }( R! `. Y" x6 ~
  3656.       (Progn# H* j' a( y4 ]. K6 n, d
  3657.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))
    ; [& v$ q2 O# _# R* p; k5 W! ]
  3658.         (Cond
    + Z! ?6 R* C1 q  S
  3659.           ((= Name "INSERT")(Command "Ddatte" Chon))
    1 \8 e  L# X( d1 o  g. J, z- c0 X
  3660.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))3 ?5 W* j1 G0 n
  3661.           ((= Name "DIMENSION") (Hai_Edim Chon))
    9 I; m: i5 v+ l
  3662.           )
    1 P. O, h$ `% D$ L' E
  3663.         );End Cond
    2 G% ~+ X) I) \7 o" g, c  e5 j
  3664.       );End Progn2 S# J& \- ^+ ]0 c  l
  3665.     );End While
    , H9 L9 ?; k, U& n- J& y9 c
  3666.   (Setq Olderr *Error*)(Princ), j" [+ P" {( A! f
  3667.   );End Program* ^4 I' J3 V  _! w' J" T
  3668. 4 p/ s8 a+ A9 ]) P2 R4 I' @" }
  3669. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================# k+ W( ^9 w4 d
  3670. ;====================================Nhapcua.LSP====================================1 }, N" m# @2 [( O; Q
  3671. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================( P0 }2 e( V; c9 w( y; j, h3 D  L
  3672. % e5 ?* Y* I7 d

  3673. ! Y/ P/ s. i5 K- N

  3674. % G7 \0 t, Q% i( t
  3675. ;*******************;*******************;*******************;*******************
    $ i- W7 a' j: `4 Q! D0 _
  3676. ;****K E T C A U****;****K E T C A U****;****K E T C A U****;****K E T C A U****
    / m& \5 b7 |* `4 m" C/ C! ~5 |
  3677. ;*******************;*******************;*******************;*******************) n2 |) [# r' C3 U/ V
  3678. . L& X" J# z- d9 f
  3679. ;VE HINH BINH HANH
    . p3 ]) i' D9 t! m7 U# H% w

  3680. ) s0 s% n% |- e5 a# c
  3681. (defun c:binhhanh (/ p1 p2 p3), n9 F- s$ G" n6 F% j
  3682. (setq p1 (getpoint "\n Nhap diem thu nhat:"))' T: n" w9 V* a: c: v4 |2 G) q, U
  3683. (setq p2 (getpoint p1 "\n Nhap diem thu hai:"))$ k# i# W5 I  C6 a% Q9 N# P) G
  3684. (setq om (getvar "osmode")). z% b8 v$ C( `/ [$ y4 E3 V
  3685. (setvar "osmode" 0)' y* D( m6 u& ~8 b, r' U; b
  3686. (command "line" p1 p2 "")
    . M% D  ^+ p! `9 S2 v0 s
  3687. (setvar "osmode" om)
    , D) E, l9 e5 t+ O- `$ y( b6 U
  3688. (setq p3 (getpoint p2 "\n Nhap diem thu ba:"))3 G0 W! y. P) G/ E% r. P
  3689. (setq a (angle p2 p1))9 L: Z/ V' q+ g! O
  3690. (setq d (distance p1 p2))
    + I8 [; K: G; B% r$ H
  3691. (setq p4 (polar p3 a d))$ v9 K8 F  `/ H' m4 f% d7 V- {# o9 _
  3692. (command "OSNAP" "none")
    ' c+ b1 U, V: u  J$ v* W
  3693. (command "erase" "l" "")" Z( Z, z0 h5 y8 @; `9 a' Y4 a9 i
  3694. (command "pline" p1 p2 p3 p4 p1 "")
    - A6 Q  _# b. i$ T8 d% v
  3695. (setvar "osmode" om)0 }& t! H* F0 E0 `. r8 c
  3696. )
    . }9 t1 X* T5 q6 ]
  3697. % K3 E& C  ]: Q) `( E& Y& o
  3698. ;VE LUOI COT' f3 V9 F/ x2 J- T
  3699. ) n8 s+ Z. n0 {& T" R
  3700. (defun c:LuoiCot ()5 F* u5 y# ]" V5 l  u  l) U
  3701. (setq om (getvar "osmode"))
    ' D; z, ~3 Y9 G6 i6 d! v
  3702. (setvar "osmode" 0)
    & ]+ q- J2 ^& ?4 s9 m
  3703. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    & w- L* c3 w+ z! [) W8 `
  3704. (setq p0 (getpoint "\n Chon Basic Point:"))5 k- Q9 X- g$ T9 X0 l
  3705. (setq nc (getreal "\n Nhap chieu ngang cua cot : "))
      }8 C% ^7 ?+ h" {+ ]
  3706. (setq dc (getreal "\n Nhap chieu doc cua cot : "))
    ! [% u; Y$ t$ E0 }; [3 p
  3707. (setq p1         (polar         (polar p0 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    : ?# W+ ^( V* \4 |# q  M2 w9 Z
  3708. (setq p2         (polar         (polar p0 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )
    ! p$ _( v( ?, y8 G5 x
  3709. (command "rectang" p1 p2)
    + `3 N* J5 l/ J; q: J7 \
  3710. (command "hatch" "solid" "l" "")
    5 @5 s. F4 w# X  C
  3711. (setq bcn (getreal "\n Buoc cot theo phuong ngang : "))
    6 o: s- N( W0 |! g2 n
  3712. (setq nn (getint "\n So buoc cot phuong ngang : "))
    ! ]" u8 J- \5 a7 \9 h) c& a
  3713. (setq w1         (polar         (polar p1 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    ' @6 s3 z" w4 B4 v) @; Q0 L; E
  3714. (setq w2         (polar         (polar p2 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )) a% U5 W* Y' _" o2 |3 f3 z
  3715. (command "select" "w" w1 w2 "")2 H+ x0 B# c, K1 Z) L, O0 n
  3716. (command "array" "p" "" "r" "1" (+ nn 1) (/ (* bcn hstl) tile) )  r4 X$ m+ a% I' Z
  3717. (command "line" (polar p0 pi (/ (* 1000 hstl) tile)) (polar p0 0 (/ (* (+ (* bcn nn) 1000) hstl) tile) ) "")$ X# X8 |3 P# A, I8 W3 u: M
  3718. (setq w1 (polar (polar p0 pi (/ (* hstl 2000) tile)) (* pi 1.5)  (/ (* hstl 2000) tile) ))  L  J' }+ s# j- q& ]6 V
  3719. (setq w2 (polar (polar p0 0 (/ (* (+ (* bcn nn) 2000) hstl) tile) ) (* pi 0.5)  (/ (* hstl 2000) tile) )). U8 g8 T- f  X/ H# L- O' a! m) e
  3720. (command "zoom" "w" w1 w2)
    / v" o$ N" Z! e) w4 ^* @/ h6 O
  3721. (command "select" "w" w1 w2 "")! F( M% J& n8 y$ M5 v
  3722. (setq bcd (getreal "\n Buoc cot theo phuong doc : "))9 O+ N% |9 @7 z9 _
  3723. (setq nd (getint "\n So buoc cot phuong doc : "))* j, M7 G( x( b% y
  3724. (command "array" "p" "" "r" (+ nd 1) "1" (/ (* hstl bcd) tile) )
    1 a9 c- [" i7 H  R5 B2 P
  3725. (command "line" (polar p0 (* pi 1.5) (/ (* hstl 1000) tile))  (polar p0 (* pi 0.5)  (/ (* (+ (* bcd nd) 1000) hstl) tile))  "")
    7 Q4 a: t2 F" z# w3 h
  3726. (command "array" "l" "" "r" "1" (+ nn 1) (/ (* hstl bcn) tile) )
    ; V& B! X  `. I- S6 K
  3727. (setq w2 (polar w2 (* pi 0.5) (/ (* (+ (* bcd nd) 2000) hstl) tile))  )  9 _2 n, x% ?1 n
  3728. (command "zoom" "w" w1 w2)0 w1 P9 }3 i! V2 q
  3729. (setvar "osmode" om)
    + K1 e5 h' g+ C* Z/ u! `3 x; B
  3730. )
    ) w+ i) e0 J" A+ h8 f+ O9 I
  3731. 9 Y# |( Z/ \. j$ S
  3732. ;VE CUA DI
    , `& e, H9 H4 X6 U/ e" F5 d8 W  d
  3733. % L# ]: z' M; ?4 l# ^3 S
  3734. (defun c:cuadi ()
    ; K/ `3 X+ I3 a3 J# H
  3735. (setq om (getvar "osmode"))" q, y" E6 [! q' d) U4 A1 N7 G
  3736. (setvar "osmode" 0)0 k3 p/ ^5 k5 o: S5 S3 B
  3737. / U; U2 M7 j# B) A
  3738. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    ) E$ M  W0 I4 Q& g
  3739. (setq b (getreal "\n Nhap be rong cua : "))4 J; j0 ^5 I; t+ `& P
  3740. (setvar "osmode" om)
    $ [+ \. a/ L% W/ c1 q4 B
  3741. (while (< 0 1)
    5 r7 Z0 H% {. G" v* E* Z
  3742. (progn
    ' F( w3 k: a' d+ y$ r: S
  3743. (setq p0 (getpoint "\n Chon Basic Point:"))4 ]8 u2 `. i4 P! H% c: ~( H# u8 b
  3744. (setq p1 (getpoint p0 "\n Chon diem de xac dinh huong cua cua:"))
    ' w. \9 H# y4 D" C; y# U5 \9 ?# {
  3745. (command "osnap" "none")
    $ Y0 z2 U9 X1 k& u
  3746. (setq p2 (getpoint p0 "\n Chon diem de xac dinh huong mo cua:"))
    ( q$ d, v* q& C2 L8 Y
  3747. (setq a1 (angle p0 p1)): _, B/ s/ j/ F0 C) r' z1 r% A
  3748. (setq p1 (polar p0 a1 (/ (* hstl b) tile)))
    % x1 ?! F: D# s' Z
  3749. (setq a2 (angle p0 p2))
    1 v# q# [0 e! \. u# }8 @
  3750. (if (< (- a2 a1) pi) (setq a3 (+ (/ pi 2) a1)) (setq a3 (- a1 (/ pi 2))) )
    3 \. W$ z; }8 D8 H2 P9 D
  3751. (command "pline" p0 "w" "0" "0" p1 (polar p1 a3 (/ (* hstl 40) tile)) (polar p0 a3 (/ (* hstl 40) tile)) p0 "")" @5 l; ?+ J' d/ n) E; z2 L9 Z/ B: v
  3752. (command "rotate" "l" "" p0 (/ (* (- a3 a1) 180) pi))
    2 K4 l' Y" l( K6 ]0 \  t! Y1 L! c
  3753. (command "arc" "ce" p0 p1 "a" (/ (* (- a3 a1) 180) pi)) 9 `; d* n$ a- d) F2 ?' U
  3754. (setvar "osmode" om)- a. F0 L, K8 \; |( v
  3755. ))
    * |+ a* b$ J4 C; J8 X) Y
  3756. )+ Q$ N$ U( A4 Q( {

  3757. ! s5 R7 n3 a4 C( J  x
  3758. ;VE CUA SO6 h2 m  L1 N1 ]" l* ]( k

  3759. ; R! S. v8 l/ e
  3760. (defun c:cuaso ()1 t. D  g1 a$ Z4 d
  3761. (setq om (getvar "osmode"))
    2 k: v3 G1 b# L7 e2 a! g5 p
  3762. (setvar "osmode" 0)  I/ b% a3 }  c0 T
  3763. / x. U7 A# s; {; ]( ^0 z
  3764. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))! z$ Z9 K" w, Y
  3765. (setvar "osmode" om)5 M/ w+ a* h4 K  E1 Y, N
  3766. (while (< 0 1); p% m/ u* D# W, y, E- |
  3767. (progn
    2 `% R# A" S" V8 P' s
  3768. (setq p0 (getpoint "\n Chon Basic Point:"))% ^% C2 @; F8 W5 u
  3769. (setq p1 (getpoint p0 "\n Chon diem de xac dinh be rong cua:"))
    " w) B# R; u: o4 N
  3770. (command "osnap" "none")& ?$ q; j4 O9 X% {6 y
  3771. (setq p2 (getpoint p1 "\n Chon 1 diem o trong nha de xac dinh huong cua so:"))
    . p" m& }8 N% M( L* p& ^
  3772. (setq b (distance p0 p1))4 Y# l7 S5 ^9 t. E4 b2 L* L
  3773. (if (< b  (/ (* hstl 600) tile)) (setq du 50))  c5 [' Q3 w" E* s
  3774. (if (> b  (/ (* hstl 600) tile)) (setq du 150))
    7 H- z  }9 k6 l  `$ }1 |
  3775. (if (> b (/ (* hstl 1800) tile)) (setq du 200))
    * }  }  c6 S1 C8 K3 [0 M' X+ H6 M4 h
  3776. (setq a1 (angle p0 p1))% l6 C3 O1 B9 M- n$ o
  3777. (setq a2 (angle p0 p2))
    1 K3 L" O( P* W& s" L& ^! i8 B
  3778. (if (> a2 pi) (setq a2 (- a2 (* pi 2)) )  )
    7 S, w) C- P, Z/ s$ w
  3779. (if (> (- a2 a1) 0) (setq a3 (+ (/ pi 2) a1))  )9 W' @6 f5 i  v7 |2 X9 e5 H( `
  3780. (if (> (- a1 a2) 0) (setq a3 (- a1 (/ pi 2)))  )
    ' H* @/ S5 J' z% u! X
  3781. (command "pline" p0 "w" "0" "0" p1 "")
    1 p5 H; @. u; G/ t: h
  3782. (command "pline" (polar p0 a3 (/ (* hstl 50) tile)) (polar p1 a3 (/ (* hstl 50) tile)) "")* i, [& U, Q4 |/ m9 g' g
  3783. (command "pline" (polar p0 a3 (/ (* hstl 100) tile)) (polar p1 a3 (/ (* hstl 100) tile)) "")
    % Y9 H+ S! l+ ?5 d9 M$ N% a  ?
  3784. (command "pline" (polar p0 a1 (* (- du) (/ hstl tile))) (polar (polar p0 a1 (* (- du) (/ hstl tile))) a3 (* -100 (/ hstl tile)))
    2 B8 [7 @' Y' `1 K6 f
  3785.                 (polar (polar p1 a1 (* du (/ hstl tile))) a3 (* -100 (/ hstl tile))) (polar p1 a1 (* du (/ hstl tile))) "")
    " f# F; H6 z% q# g( Z& @
  3786. (setvar "osmode" om)
    ; B; ]" M, }8 R* E6 M' Q
  3787. ))) f" r6 q, R) v# \, _8 G
  3788. )
    0 V! Q' g2 u* e9 V
  3789. / O* W. I3 J- ]: s" A; ?* W
  3790. ;;;=== General Utility Functions ===
    ; L' y/ s" J6 d* @

  3791. 6 q3 V, `2 A, n
  3792. ;   R12 compatibility - In R12 (acad_helpdlg) was an externally-defined . r$ a) p" P; R9 [
  3793. ;   ADS function.  Now it's a simple AutoLISP function that calls the
    0 }- f1 P) q6 _  T* ~( {  ^
  3794. ;   built-in function (help).  It's only purpose is R12 compatibility.  
    / O" I' F$ N& Z- N
  3795. ;   If you are calling it for anything else, you should almost certainly
    ) ^: X$ p8 Z- g+ ~/ M, B: W3 \
  3796. ;   be calling (help) instead.
    $ S/ l$ m7 i1 }' M8 I; _" Y
  3797. 6 I6 d8 @3 g$ j: n
  3798. (defun acad_helpdlg (helpfile topic)" L1 q1 {  h  _3 |* {: E. o
  3799.   (help helpfile topic)* v7 W0 s5 k2 {3 E/ T2 ]" }0 |
  3800. )
    8 z4 Z+ z' f9 _1 c  X5 P8 T

  3801. + N3 ]6 n( o( Y  D

  3802. % |4 \* J/ P3 V) L% ~" W
  3803. (defun *merr* (msg)1 t* B4 o/ K2 z
  3804.   (setq *error* m:err m:err nil)
    ; s" j) |" Y4 s# K5 M
  3805.   (princ)
    : |3 |. P. v- O8 u
  3806. )
    * a- {3 L6 P! _1 k

  3807. & @9 ~7 K. h0 _2 O
  3808. (defun *merrmsg* (msg)
    0 A9 z9 e: k8 t# C
  3809.   (princ msg)4 J& r) R, @5 o$ i! r1 @$ d3 O
  3810.   (setq *error* m:err m:err nil)3 ~1 [2 w. I/ t8 H& {% b/ K( u+ d
  3811.   (princ)* L% A) }8 Z5 ~( ]& M
  3812. )
    ; |4 t* S/ D; D! F* k; s
  3813. 2 w% v! z# y+ e( [5 u7 |
  3814. ;; Loads the indicated ARX app if it isn't already loaded% y! c! x% ]1 m0 t$ U" F
  3815. ;; returns nil if no load was necessary, else returns the: ~; `' G& w$ y/ l1 s% `3 o) J
  3816. ;; app name if a load occurred.+ Y* P, a. k3 }, r' P0 b# U
  3817. (defun verify_arxapp_loaded (app)
    9 ~* L' O, k. q2 @+ V0 _
  3818.   (if (not (loadedp app (arx)))
    + A- {" `1 ?2 X& y: G- U1 t
  3819.       (arxload app f)/ h# o( G( |# }; r5 m' |0 ]
  3820.   )* i* N! ^7 _. W5 A2 A: ~' U
  3821. )
    9 K+ `" w" c  H- c2 J! S- \
  3822. ( x7 m3 u' N* s" M* [- o
  3823. ;; determines if a given application is loaded.... a: S7 G" {& t. y1 m- z
  3824. ;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....6 S2 I- I9 [8 X, Q3 [# r5 G
  3825. ;;
    / A) E* }$ u- g- o' q  L5 F" P
  3826. ;; app is the filename of the application to check (extension is required)5 f* t& r, A4 T6 A
  3827. ;; appset is a list of applications, (such as (arx) or (ads)3 b; S( i# h0 S% i, Y' O7 T
  3828. ;; & @8 V, h1 @+ \1 H/ t" N! c
  3829. ;; returns T or nil, depending on whether app is present in the appset
    5 g& K  [8 ?# Q  G+ ?
  3830. ;; indicated.  Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"  h- `3 Y$ O* f+ B% i: _
  3831. ;; Also, if appset contains members that contain paths, app will right-match
    : P' `+ |' W; Z4 b1 u7 ]* v
  3832. ;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that
    4 a: u6 Q& l. r2 W5 @- ?0 d
  3833. ;; "bar.arx" will *not* match "c:\\path\\foobar.arx."1 f4 i8 `4 u# J
  3834. (defun loadedp (app appset)
    ) J! L& b1 r' Z3 g1 t
  3835.   (cond (appset  (or
    % R  C  E, E* |% \( M
  3836.                      ;; exactly equal? (ignoring case)
    ( `2 d8 }  \' r6 I3 S4 }
  3837.                      (= (strcase (car appset))9 o3 P% y" I8 X
  3838.                         (strcase app))
    ' T, Q: O7 a& |" P7 u
  3839.                      ;; right-matching? (ignoring case, but assuming that
    . p- V( I! w8 ^1 `8 B
  3840.                      ;; it's a complete filename (with a backslash before it). T5 W4 f) G) e- T; [
  3841.                                          (and 8 G0 _, w; ?$ B0 t# S7 ]: W% R
  3842.                                              (> (strlen (car appset)) (strlen app))
    ) e  |+ O$ Q' l6 x8 T4 |7 Q
  3843.                              (= (strcase (substr (car appset) & c3 g" w; {& S0 M
  3844.                                                  (- (strlen (car appset)) / y2 c# p" P5 X. Z7 O: m
  3845.                                                     (strlen app)
    / S1 V9 L1 |* V; g; [
  3846.                                                  ) 6 f; a  @, s5 y) B+ U% R' P4 ~, V
  3847.                                          )- u  `  s5 k$ P: U5 F4 ~2 ?9 r
  3848.                                 )
    " N% y" l5 N9 d! S. i
  3849.                                 (strcase (strcat "\\" app)); D. M( K. I: b% }2 k, ~
  3850.                              )
    5 K$ e/ h5 V4 B  p5 R5 F
  3851.                                      )
    " t8 \# i" l7 u
  3852.                      ;; no match for this entry in appset, try next one....
    + I! l" A' ~3 Z0 q7 z) B5 f$ Z
  3853.                      (loadedp app (cdr appset)) )))" `$ N$ ]$ [9 ?" n$ V  `- a- r
  3854. ), l/ V: I# o" Q/ t. u' C
  3855. . P7 b2 q2 k# Z" {+ o3 u! Z: S' {
  3856. $ w3 s4 q) K& H  l' Z& J0 A
  3857. ;;; ===== Single-line MText editor =====7 e4 ~  T3 ]1 @& X( x, K2 B% V
  3858. (defun LispEd (contents / fname dcl state)
    6 f6 x5 j1 b5 W2 X1 F, D
  3859.   (if (not (setq fname (getvar "program")))
    ! ~5 w, r) s- |
  3860.      (setq fname "acad")
    / V% k  q- P! l$ s$ j
  3861.   )- i5 F3 y+ c: C. P: v7 ~
  3862.   (strcat fname ".dcl")4 x7 @0 X  e' q% O" @
  3863.   (setq dcl (load_dialog fname)), m8 @% b" h- s
  3864.   (if (not (new_dialog "LispEd" dcl)) (exit))# i2 B  P/ e6 @, ]2 l( P
  3865.   (set_tile "contents" contents)8 B. Z* v% [+ R/ Z
  3866.   (mode_tile "contents" 2)5 b% {, H6 L( |$ Q
  3867.   (action_tile "contents" "(setq contents $value)")
    6 Z+ T: `, D6 B1 G& i% y
  3868.   (action_tile "accept" "(done_dialog 1)")
    " S9 Y/ e8 y1 |: h: E7 i+ g
  3869.   (action_tile "mtexted" "(done_dialog 2)" )4 x# J# N9 X7 ~: N. m' {
  3870.   (setq state (start_dialog))" k+ c, _( P3 K3 V! C; g
  3871.   (unload_dialog dcl)5 ~) ?: B% T/ @5 t
  3872.   (cond! m; u3 r& M" m4 i! A7 p' [. P
  3873.     ((= state 1) contents)! \7 }  j, S0 `
  3874.     ((= state 2) -1)
    ( L8 q3 M4 |: X+ B
  3875.     (t 0)8 P; ]* [4 ]6 K$ U7 B$ |  H7 a
  3876.   ), W+ Q4 u9 d6 |3 l! w
  3877. ); D; t3 \5 i, R  M* h

  3878. " F1 x9 `- t* c
  3879. ;;; ===== Discontinued commands =====
    8 g# g5 x) i0 j5 d6 h
  3880. (defun c:ddselect(/ cmdecho-save)
    - f7 `6 m  y" p) R- X6 L( `( a) s
  3881.   (setq cmdecho-save (getvar "CMDECHO"))# N; a6 ~; c3 d3 B$ j; f
  3882.   (setvar "CMDECHO" 0)
    4 K% m  f8 T5 m3 z: M
  3883.   (command "._+options" 7)
    ) X* c2 E3 D  p4 l, G% _4 d) f
  3884.   (setvar "CMDECHO" cmdecho-save)
    / I& k, f7 F8 K/ e; ?. \9 x) i! [9 _
  3885.   (princ)) B" o; V, c: x. y9 B5 a
  3886. )
    0 ?. f0 ^8 b- K. N5 |( z

  3887. 6 P& H, J. Q0 q& ~* M, H+ V  @
  3888. (defun c:ddgrips(/ cmdecho-save)
    8 o* E/ N/ ^: o5 h7 i) S7 e; u
  3889.   (setq cmdecho-save (getvar "CMDECHO"))7 Q- t1 ^8 r5 N0 I, H
  3890.   (setvar "CMDECHO" 0); ?) O; U8 X6 Z  \
  3891.   (command "._+options" 7)
    0 ?1 q: E( _* ]& m; q8 u( r* T
  3892.   (setvar "CMDECHO" cmdecho-save)
    4 f0 U" t7 X! n2 q+ B/ n; R
  3893.   (princ). X; _! l/ g2 M' B
  3894. )
      z' f  G1 n# {0 b. ?; T7 y2 [
  3895. $ h- {0 n. m) E" O% l0 }
  3896. (defun c:gifin (), W' A3 N  m! l+ Z) Y; T# T
  3897.   (alert "\nThe GIFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")4 K( q2 Y! y$ r' _8 Y6 _5 `
  3898.   (princ)- f$ c8 R4 ^$ V& f3 e
  3899. )
    1 i- W! E: k' U& ~1 {. A( r

  3900. 2 ?& g8 I0 O  s- t
  3901. (defun c:pcxin ()
    9 V: L1 R7 ], p( w$ A
  3902.   (alert "\nThe PCXIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")9 r3 u1 h$ P9 ]1 F
  3903.   (princ)5 v9 t* C- L4 E% R" j, J$ n# W
  3904. )
    ! Y* M/ U. w8 q% e

  3905. ( W9 N: a3 }8 q- j$ j' V! x
  3906. (defun c:tiffin ()/ I8 ?) B8 a, _0 O$ T3 `) A
  3907.   (alert "\nThe TIFFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
    & G$ H; y3 [' L4 v. X1 E
  3908.   (princ)
    4 l) ?( x: m! k4 D
  3909. )9 O2 G1 z/ r7 N7 r8 y* R) b( _
  3910. $ A* L+ F! d1 [2 \( c0 K
  3911. (defun c:ddemodes()
    9 z0 ^; K4 w% [$ N* i
  3912.   (alert "The Object Properties toolbar incorporates DDEMODES functionality.  \nDDEMODES has been discontinued.  \n\nFor more information, select \"Object Properties toolbar\" from the AutoCAD Help Index tab.")& _5 }+ l' M% E8 J) V+ |; s$ M
  3913.   (princ)
    8 f- a7 l8 ?% M
  3914. )/ c- p3 ^3 o5 d: X2 G+ {' ^7 M7 l
  3915. 3 j) Q* `8 W; U. f+ S* \) |
  3916. (defun c:ddrmodes(/ cmdecho-save)5 V0 Y* }& w+ P# G  S+ W
  3917.   (setq cmdecho-save (getvar "CMDECHO"))
    * a2 E/ ?- |* E8 l- s
  3918.   (setvar "CMDECHO" 0)# i' L7 l8 G1 ?
  3919.   (command "._+dsettings" 0)
    3 Y* o* u* a; y0 n; w
  3920.   (setvar "CMDECHO" cmdecho-save)
    ( S6 p! |. M/ L- ]+ N
  3921.   (princ)% U: ^# f* U  M) D* o2 e  [
  3922. )
    2 k9 u2 ]4 w+ P) W/ v

  3923. 4 R3 W$ ^9 M0 X: Q
  3924. ;; HPCONFIG
    ) `7 |7 ~) N8 q( W3 M
  3925. (defun c:hpconfig (/ hlppath)& g! u0 F% v4 B7 p/ F' E0 V! Y
  3926.   (if (not (setq hlppath (findfile "acad.hlp")))
    7 U$ V0 C1 d! w/ O( K7 j! b: t( Q' k
  3927.     (setq hlppath ""))6 D5 E) T  ~& C7 p1 V
  3928.   (help hlppath "hpconfig")5 A- V  b: Y' w" U4 ^) m
  3929.   (princ)
    . C  }5 K1 F0 z
  3930. )3 m5 K: d  D1 N8 q

  3931. 8 I. u% k3 S" k/ S  G/ _
  3932. ;; OCECONFIG
    9 b$ I6 Q8 j! g. `# u6 [) Q
  3933. (defun c:oceconfig (/ hlppath)1 T9 P( r2 _# T  ^
  3934.   (if (not (setq hlppath (findfile "acad.hlp")))
    * C! C8 |8 `* _9 b0 t5 x' k( o
  3935.     (setq hlppath ""))
    + O: q7 v% E) v& w6 u
  3936.   (help hlppath "oceconfig")" q3 _  l7 v9 g& V+ j
  3937.   (princ)
    3 U$ J# ~1 w6 _  o% W+ v) _! W" C9 v
  3938. )" n2 r3 g$ c' u* H
  3939. 1 a) i5 k* z$ l. B& Z% t) r
  3940. ;; CCONFIG
    $ G  k6 L7 W. e
  3941. (defun c:cconfig (/ hlppath)6 k( X- w7 {9 P( e9 I
  3942.   (if (not (setq hlppath (findfile "acad.hlp")))0 G: S# U4 m1 R5 f; W" S1 l
  3943.     (setq hlppath ""))$ U# w4 g8 r3 H
  3944.   (help hlppath "cconfig")! Q1 [' U8 ]5 X) Y* v) }3 R
  3945.   (princ)  I6 E6 Z+ K5 P$ J/ Y# k* K6 `
  3946. )* B1 r8 r$ r/ U3 b# Q

  3947. ( s. ~+ A8 b, W9 d4 a
  3948. ;;; ===== AutoLoad =====  D% e% `9 }  w2 o
  3949. - d+ F+ x" X; D* G# b7 _
  3950. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
    3 W; [% p& r9 n, @2 x
  3951. ;;; for the name of a certain appplication <appname>.& h! V- Y/ f; s$ {( c
  3952. ;;; Returns T if <appname> is loaded.
    1 L6 r* R& [5 S( ^
  3953. 3 c1 [& o7 n4 M/ U' b
  3954. (defun ai_AppLoaded (appname apptype)
    ) c2 l. }% p" a- B4 c3 H
  3955.    (apply 'or, r' p% o+ w& }. W$ N, S5 N" K
  3956.       (mapcar
    : S. t3 u+ r! O% F8 K) s
  3957.         '(lambda (j)
    6 L) v- I+ V; G$ G% S0 M, v
  3958.             (wcmatch
    # c: C+ O9 v! s9 i/ x: I7 W
  3959.                (strcase j T)7 n: q  m0 L. i4 [% L* K* e
  3960.                (strcase (strcat "*" appname "*") T)8 L  F8 F" n6 A% s9 i5 d, u
  3961.             )   * v7 ]) n0 \4 D+ @
  3962.          )
    $ v5 i5 }$ O* K) y. O# i) \5 p/ F
  3963.          (eval (list (read apptype)))5 e& h7 ~: k3 ]% I5 @% C8 y
  3964.       )
    4 I0 E6 J% {8 o& m6 N
  3965.    )" g3 q/ W% L# }4 i5 {
  3966. )! y1 y( t0 [3 @- [( n
  3967. + d1 y! l: p" M- a% `  f
  3968. ;;  - @$ j% k4 o2 @7 P" a
  3969. ;;  Native Rx commands cannot be called with the "C:" syntax.  They must
    - o1 J: _+ ~" f  ^) {- D- O. j8 B
  3970. ;;  be called via (command).  Therefore they require their own autoload 1 t' d$ \4 G( Q$ [% W9 D5 c
  3971. ;;  command.
    . [0 l- _1 M- U! |' H9 r8 x, j/ b

  3972. . O0 @. z/ h5 r+ ~3 \& N' ?0 x
  3973. (defun autonativeload (app cmdliste / qapp)# o% O% V. ?+ A* Q
  3974.   (setq qapp (strcat "\"" app "\""))
    ' l' E# e# R. a! c/ L( Y
  3975.   (setq initstring "\nInitializing...")9 i4 N" {6 ]$ @* J# C
  3976.   (mapcar1 X( E: g# M5 i! R
  3977.    '(lambda (cmd / nom_cmd native_cmd)& x- t+ D- t  F+ J  V+ Y
  3978.       (progn4 v# m. m# k" w( p) Q0 |
  3979.         (setq nom_cmd (strcat "C:" cmd))$ h: b2 |7 _1 c3 H' S
  3980.         (setq native_cmd (strcat "\"_" cmd "\""))% _* R# }) L' E* j5 l
  3981.         (if (not (eval (read nom_cmd)))
    4 o4 z# H4 _. _& Z# h
  3982.             (eval
    0 w7 b% Q7 n5 {0 I5 U4 b7 k9 A" g
  3983.              (read (strcat, p( k. u# m5 l0 a: h7 `
  3984.                     "(defun " nom_cmd "()"
    : T: G8 n7 @, M& k; l1 ]$ \
  3985.                     "(setq m:err *error* *error* *merrmsg*)"2 G( u7 n. S8 u% M  i
  3986.                     "(if (ai_ffile " qapp ")": ?0 O6 A  i/ t7 }$ N, F, V
  3987.                     "(progn (princ initstring)"
      c4 g! M; h3 p/ i
  3988.                     "(_autoarxload " qapp ") (command " native_cmd "))"
    8 E6 A7 V6 h1 t
  3989.                     "(ai_nofile " qapp "))"
    , G) |1 S. t4 J# N2 k
  3990.                     "(setq *error* m:err m:err nil))"
    4 q6 w( p# d6 ~* U1 K
  3991.                     ))))))/ c. |0 e, P2 }4 K) Y2 S. Q7 ]. W
  3992.    cmdliste)
    % n6 R' U/ ?+ w" h* |& s5 O0 {
  3993.   nil) _! h6 [2 c& h
  3994. )) m# Y3 \  c) E- O/ N& y

  3995. # u9 }! S1 @9 H* z
  3996. (defun _autoqload (quoi app cmdliste / qapp symnam)9 c- Y! V. T+ J7 C* c# K
  3997.   (setq qapp (strcat "\"" app "\""))& w8 M; Z3 {3 J7 n
  3998.   (setq initstring "\nInitializing...")+ j6 M) J# n# d- n& A
  3999.   (mapcar7 y; B& a. A. A& n+ s1 j+ p1 T
  4000.    '(lambda (cmd / nom_cmd)% G* z0 L: d9 r
  4001.       (progn
    " ~6 g; P$ B; u8 F! F
  4002.         (setq nom_cmd (strcat "C:" cmd))* H, I, U0 h5 I( _
  4003.         (if (not (eval (read nom_cmd)))
    1 t3 ?# u  K% e3 l2 i
  4004.             (eval$ o: Q+ F8 D0 ^, z1 f; r0 ~
  4005.              (read (strcat
    6 t7 `7 g! \% O- y) Z
  4006.                     "(defun " nom_cmd "( / rtn)"
    # m( K9 @% c- X% ^" I
  4007.                     "(setq m:err *error* *error* *merrmsg*)"
    % w2 |& J! o# w) Q
  4008.                     "(if (ai_ffile " qapp ")"2 q% x) w$ S- Z9 [8 ]; j6 I- T; o
  4009.                     "(progn (princ initstring)"
    $ f: B3 P1 E% T9 f( V7 h
  4010.                     "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"
    3 X1 U/ F# x; x4 X- t& O- P& [
  4011.                     "(ai_nofile " qapp "))"
    ; [$ S" Q! G. S, I0 J# o
  4012.                     "(setq *error* m:err m:err nil)"9 E! O7 c' @7 V& Y3 C- h
  4013.                     "rtn)"! f1 x1 x8 u7 U2 d
  4014.                     ))))))5 t7 U& _" T8 Y6 ^) L4 e* U
  4015.    cmdliste)' L) c6 c% T6 B& r
  4016.   nil
    7 q7 Z1 }! l+ p  ?# q
  4017. )
    . R' ~) b( h; U/ Z9 Y4 u* o
  4018. ' D( I, }& h9 r
  4019. (defun autoload (app cmdliste), b" j$ q: ^" A7 w$ A
  4020.   (_autoqload "" app cmdliste)# Z* [7 @- a/ O
  4021. )
    # P6 |0 N4 q! t0 }4 g4 o0 J! A+ l' X
  4022. 4 ?7 z" R  `( {5 h* a
  4023. (defun autoarxload (app cmdliste)
    + r, g! y. P! I$ K- P5 u4 w
  4024.   (_autoqload "arx" app cmdliste)
    ) [& u7 t% f& V2 K
  4025. )
    6 P! Z6 H% e1 _2 w" i
  4026. 0 W  q3 E" @  [# t; t) F
  4027. (defun autoarxacedload (app cmdliste / qapp symnam)
    6 q* N! [! H! Q* ], y+ ]  U' V
  4028.   (setq qapp (strcat "\"" app "\""))
    ' k1 c3 t0 o% x! e
  4029.   (setq initstring "\nInitializing..."); X2 g! Y: _& e4 E1 t1 f" X' G; l
  4030.   (mapcar+ `8 Z' E- _. Z8 s
  4031.    '(lambda (cmd / nom_cmd)" b) l5 X8 w" z' j
  4032.       (progn
    . K3 p+ H1 P, Q
  4033.         (setq nom_cmd (strcat "C:" cmd))
    2 W" c7 F+ L; g& X( l
  4034.         (if (not (eval (read nom_cmd)))
    ; w) z' V( K7 N5 [, c; o0 u' x
  4035.             (eval1 ^: G0 e3 u4 p" U/ g
  4036.              (read (strcat& k8 {5 @# e( {( g3 m- ?
  4037.                     "(defun " nom_cmd "( / oldcmdecho)"2 K7 ]2 W% Y, Q  b$ b) z) o
  4038.                     "(setq m:err *error* *error* *merrmsg*)"
    ; `; F) r- }7 ]& l
  4039.                     "(if (ai_ffile " qapp ")"
    0 O9 G0 o) u2 v# G% }% S( l$ T' Q
  4040.                     "(progn (princ initstring)"
    ; u% \8 `/ D1 |9 i6 L
  4041.                     "(_autoarxload " qapp ")"5 O/ b- x- X4 `% B2 {4 Z/ Q) M
  4042.                     "(setq oldcmdecho (getvar \"CMDECHO\"))"" P; V9 i9 w1 j& L7 u
  4043.                     "(setvar \"CMDECHO\" 0)"
    ! W+ x. Q  I! v5 E  o
  4044.                     "(command " "\"_" cmd "\"" ")"# b% t4 C! [* [6 G5 L
  4045.                     "(setvar \"CMDECHO\" oldcmdecho))"
    0 p7 i. q1 m* b
  4046.                     "(ai_nofile " qapp "))") O  }9 u( b& O6 ^+ L8 u6 P
  4047.                     "(setq *error* m:err m:err nil)", v( h$ t1 Q4 D
  4048.                     "(princ))"* f5 w1 _+ B  F6 f
  4049.                     ))))))( }5 C/ P. \) s
  4050.    cmdliste)2 D1 `5 \! v9 [0 D  t
  4051.   nil; P  Q* W# m: g# u: p" P
  4052. )
    9 O! W4 o8 B7 Z. n4 }- k( c
  4053. . a- Y' J- q2 E3 S8 m
  4054. (defun _autoload (app)% @4 v( A5 [  z
  4055. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)  L8 U( U( l7 `- P$ ^
  4056.   (load app)
    & }0 @- `4 Y+ s. I3 ]9 k
  4057. )% }9 r9 w! C. D% K

  4058. * Y4 F" S* y0 Y/ c
  4059. (defun _autoarxload (app)
    ; Z0 y( S" z0 z' g$ l
  4060. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)  y" N2 S( H+ O: o0 y& A' h4 F
  4061.   (arxload app)% b% {. Z" o+ P5 ]0 x/ h) m
  4062. )8 C/ s, n9 \1 J9 a6 K

  4063. , e  _- I  d/ _
  4064. (defun ai_ffile (app). i. O# j" ]) v
  4065.   (or (findfile (strcat app ".lsp"))
    7 H: @: @& i2 l8 S( o
  4066.       (findfile (strcat app ".exp")): V& w& N* B; t/ \2 ^
  4067.       (findfile (strcat app ".exe"))- `& r. U5 ?4 r1 X# c+ y9 c: w0 U
  4068.       (findfile (strcat app ".arx"))% p4 @8 d) s0 W+ X% N3 W
  4069.       (findfile app), t0 C  X. H$ ~( v. y
  4070.   )+ a9 f% N1 D1 y( @2 j1 u& `
  4071. )
    & d- @1 R& b0 n$ j) b
  4072. * \& v" i) k7 c1 @4 ~
  4073. (defun ai_nofile (filename): N8 v& W9 _* r1 n" m, |# `
  4074.   (princ$ C' a( N8 D3 t% N' _, _9 s/ F
  4075.     (strcat "\nThe file "  K0 r1 D$ X% L6 H: l" Y7 a
  4076.             filename
    5 R6 A" M2 W  i
  4077.             "(.lsp/.exe/.arx) was not found in your search path folders."* D8 S( k6 ~; Y' y2 O
  4078.     )
    & Y2 e' ~" w4 l; {
  4079.   )
    * S* R/ W/ ?# Q9 z$ [+ A, w* y2 e
  4080.   (princ "\nCheck the installation of the support files and try again.")
    ( V' n" p# u% j9 L  ^6 T
  4081.   (princ)8 d$ o( ~0 I0 n! O) K$ w2 {
  4082. )" w2 X: d/ R) o" [: R, s! ]6 W
  4083. ! s+ A" q* ~& r6 p

  4084. 6 u$ {$ s' U7 T  X5 K
  4085. ;;;===== AutoLoad LISP Applications =====
    1 q' x' O7 _+ L3 j2 V5 r- L
  4086. ;  Set help for those apps with a command line interface: s% Q% D. \& X  a
  4087. ) W3 W" z4 t0 I4 U
  4088. (autoload "edge"  '("edge"))0 r6 S+ f! ~& o) g+ v/ _* T) v4 O
  4089. (setfunhelp "C:edge" "" "edge")  ]: M( `/ @; C1 \3 E
  4090. & w1 I1 @. b9 [2 n4 N* o) Q
  4091. (autoload "filter" '("filter " "filter"))# l0 {4 N. l8 R8 w1 I
  4092. , Q( }2 \) z- X. k7 Q. c
  4093. (autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"( n( s% \4 L$ B+ g' L) A
  4094.                  "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")1 ?( j% g: t- t
  4095. )9 k5 h/ w6 T/ F5 a
  4096. (setfunhelp "C:3d" "" "3d")
    ! ?+ R) }+ ]0 D8 }* ]
  4097. (setfunhelp "C:ai_box" "" "3d_box")
    ! o0 f' F2 C" \* I4 S2 d, a% D3 p
  4098. (setfunhelp "C:ai_pyramid" "" "3d_pyramid")
    1 \4 r9 u) V6 t3 q2 G& I% ?" Q
  4099. (setfunhelp "C:ai__wedge" "" "3d_wedge")
    + H" e6 d) b1 t/ u
  4100. (setfunhelp "C:ai_dome" "" "3d_dome")
    ) r' w. h" |% v& A
  4101. (setfunhelp "C:ai_mesh" "" "3d_mesh")
    - y0 U: A, J( A# i0 z5 c
  4102. (setfunhelp "C:ai_sphere" "" "3d_sphere")" e. T4 T" O) v$ q, S/ E: d) }
  4103. (setfunhelp "C:ai_cone" "" "3d_cone")
    : B% C& g  u7 k3 C, z/ p! I
  4104. (setfunhelp "C:ai_torus" "" "3d_torus")
    4 z) f* x- |, \3 W/ m1 _# T7 U
  4105. (setfunhelp "C:ai_dish" "" "3d_dish")6 B& b) V8 H7 F2 d, p; ^
  4106. 7 C) x& W4 T6 H9 i& v$ E
  4107. (autoload "3darray" '("3darray"))
    3 B9 g& j# }- p& J" d9 F% S1 V
  4108. (setfunhelp "C:3darray" "" "3darray")
    2 |0 n& s! M  C

  4109. 2 O3 `' u/ S# J# L
  4110. (autoload "ddvpoint" '("ddvpoint"))$ H, Z; h4 ?* o7 g- u3 R

  4111. 1 ~. d8 Y: {: w
  4112. (autoload "mvsetup" '("mvsetup"))
    % m8 l3 p# ^* I& z0 g
  4113. (setfunhelp "C:mvsetup" "" "mvsetup")
    % ]9 N( `! d1 T! {: E* |

  4114. 5 B  h) e# r, _4 i* f# F
  4115. (autoload "ddptype" '("ddptype"))1 M# L6 t( I( h! {
  4116. 8 |- r4 V* E9 [5 Q/ M" ]( N3 w
  4117. (autoload "attredef" '("attredef"))! [2 L$ k- `- Y/ U! v6 R
  4118. (setfunhelp "C:attredef" "" "attredef")
    7 A. D! ?% K8 S$ N* n) y

  4119. $ c4 T7 [. W( B  `
  4120. (autoload "xplode" '("xp" "xplode"))( f$ {- T' `1 d0 w
  4121. (setfunhelp "C:xplode" "" "xplode")
    / _6 Q+ w* q  o+ \3 D$ M7 f, R* M

  4122. " ~! h8 O# d! i  @8 p
  4123. (autoload "tutorial" '("tutdemo" "tutclear"
    , z9 N/ F* D( T4 Z0 P% o
  4124.                                        "tutdemo"
    & E, B  Y; y+ L2 q
  4125.                                        "tutclear"))
    : O( O1 ]# w5 {, [
  4126. & N2 t# `0 A8 d6 ]' \9 \6 E
  4127. ;;;===== AutoArxLoad Arx Applications =====
    % N+ g& M. o- V3 {5 F( c, w
  4128. 3 C( g/ e  F3 Q* ^1 H
  4129. (autoarxload "geomcal" '("cal" "cal")); w) L+ J1 X% v  ]( g

  4130. 2 m1 F- m% G: @9 C9 w
  4131. (autoarxload "geom3d" '("mirror3d" "rotate3d" "align"
    - Y2 q. N4 ^9 w. l7 b3 {% c
  4132.                       "mirror3d" "rotate3d"
    ) a) `) d' I2 U6 l
  4133.                                  "align"))* k2 g, n0 b' X+ p+ D

  4134. ! G' a2 H4 Z! D! e& c2 x' I% a
  4135. 8 A  R9 Z, T1 p& G* V  F: E
  4136. ;;; ===== Double byte character handling functions =====8 ~9 k% d0 K4 a+ F+ P

  4137. / c; y8 [% y6 m9 K: p) B. d! m: W
  4138. (defun is_lead_byte(code)
    8 m: X# L+ g' w9 Z+ B. G9 N
  4139.     (setq asia_cd (getvar "dwgcodepage"))
    6 W; ^3 c0 N! D) j' ?
  4140.     (cond8 {: S# j8 h0 _0 c
  4141.         ( (or (= asia_cd "dos932")5 }5 u( o* l5 }9 J# Q3 e; J
  4142.               (= asia_cd "ANSI_932")
    6 s- b1 l4 I7 m( c# \, i6 g
  4143.           )
      P; }' x" f# x3 O/ C- u0 Q
  4144.           (or (and (<= 129 code) (<= code 159))
    0 N: X( X; y7 b1 x( L
  4145.               (and (<= 224 code) (<= code 252))
    3 \" J" W2 Q  Z% L/ @7 s
  4146.           )
    6 K* Q* d1 F" u4 Y# F$ `
  4147.         )4 v  x& @2 K0 M2 ?3 }% |
  4148.         ( (or (= asia_cd "big5")% i) \* @( e% M9 ~) L
  4149.               (= asia_cd "ANSI_950")# B. B! l+ R+ M
  4150.           ); n) W- R% p/ N/ A, b: O: Y
  4151.           (and (<= 129 code) (<= code 254))
    7 H, U2 Z7 ^: u) P
  4152.         )
    % Q5 ?( t$ y; p% E4 u: v5 T- n
  4153.         ( (or (= asia_cd "gb2312")% o  |, l9 q( |' n; K% M% e  O3 E
  4154.               (= asia_cd "ANSI_936")
    0 |' Q+ J0 S6 E* [$ Y9 S: Y( ~$ t0 `
  4155.           )
    % G+ ?) k; m, m( u
  4156.           (and (<= 161 code) (<= code 254))# m' J- O" h( L3 y0 ^
  4157.         )  M$ r( ]5 H) I$ u6 N& Y" i$ U
  4158.         ( (or (= asia_cd "johab")
    + h# j, p4 L4 y  [% r7 d
  4159.               (= asia_cd "ANSI_1361")+ j) T' k( R( r. g! H, Y' n
  4160.           )
    6 ^) f$ w0 Z% x/ x1 N8 g. }9 G
  4161.           (and (<= 132 code) (<= code 211))7 O3 O- V. ?4 l
  4162.         )
    / Z1 S8 q2 G( x8 }2 h
  4163.         ( (or (= asia_cd "ksc5601")
    ( l/ k5 A) I5 E7 N6 B; q% k/ n
  4164.               (= asia_cd "ANSI_949"); |4 ]. {% n, o
  4165.           )
    ) K% a6 e4 v8 e9 r: ?6 a
  4166.           (and (<= 129 code) (<= code 254))0 a, ?/ V) f1 v% M1 g
  4167.         )$ I4 k2 u5 T1 v  b( f% g$ Y
  4168.     )4 a  Z0 Z, b7 S, z* M
  4169. )
    0 a4 t3 K9 F% O( D% q  Y; r" O
  4170. ( K# C" N$ t3 N4 x; S1 {
  4171. ;;; ====================================================" h) O7 d' J+ }! }  s: i
  4172. 1 k+ u0 _1 z; P. P; C/ A5 }# O

  4173. / H/ j9 N5 N0 a: ]( c
  4174. ;;;
    ' Q' r8 q: J  w$ K1 w. _
  4175. ;;;  FITSTR2LEN' t/ f9 A8 n2 S/ o9 p
  4176. ;;;
    : R: }7 g0 [6 @2 v* D
  4177. ;;;  Truncates the given string to the given length.
    0 M7 c2 R" D5 m
  4178. ;;;  This function should be used to fit symbol table names, that4 t* E. L/ v% d& x: N5 @1 r
  4179. ;;;  may turn into \U+ sequences into a given size to be displayed
    " M3 g! M! Y/ b$ r
  4180. ;;;  inside a dialog box.
    ( _8 B5 d7 |7 Z6 L8 L: d
  4181. ;;;
    ( [: l, T& B" `# {4 y% k) }
  4182. ;;;  Ex: the following string:
    ) [9 V4 n  o, ?$ \
  4183. ;;;9 R. r$ H; e9 Z9 g$ K" R
  4184. ;;;      "This is a long string that will not fit into a 32 character static text box."
    ! o0 q' F! V( P) n2 d
  4185. ;;;4 W/ q. {- E2 K
  4186. ;;;      would display as a 32 character long string as follows:8 h& w6 P" B4 X
  4187. ;;;
    & C% ?2 W% B) v1 ], B8 d7 c, U# K" e
  4188. ;;;      "This is a long...tatic text box."4 j- T/ j' |2 a/ P: `: H$ v7 L7 ]
  4189. ;;;
    . B$ T# g- f2 `* B
  4190. $ j6 C, _6 x# |( y" r5 m( J
  4191. (defun fitstr2len (str1 maxlen)
    & K  y, v; x5 E  C9 w3 R

  4192. $ ]. l  E  W1 Z7 A9 @6 Q
  4193.     ;;; initialize internals/ Q* D: h) B# S; A$ _: v" j
  4194.     (setq tmpstr str1)& l. R1 l, P# m7 s4 \& u# d8 C
  4195.     (setq len (strlen tmpstr))# B/ n7 B6 ?: X5 X* x; i

  4196. + S: q; F1 }; S9 e: i
  4197.     (if (> len maxlen)
    8 @% d' d2 j' j- |* X) b8 [. d! o: ^' \
  4198.          (progn
    - K1 d' }$ Y! d7 `- k- W
  4199.             (setq maxlen2 (/ maxlen 2))2 k1 a( s  K$ [* i# n
  4200.             (if (> maxlen (* maxlen2 2)). r; ?. x$ V" I9 d9 }
  4201.                  (setq maxlen2 (- maxlen2 1))! n" F; y; f# }3 W' ?2 O# Y1 K
  4202.             )
    $ B" m* u" p* C8 T
  4203.             (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))
    1 ]$ M8 E" v9 {! [, Y% E
  4204.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))- M% f! w1 e4 U( r# F+ Y2 ?# I
  4205.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))' e6 b3 V1 a: d+ c' L
  4206.             )
    0 A5 U- h. g0 u2 j3 {
  4207.             (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))
    ' u6 J" L8 @2 _
  4208.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3))))
    / F  [  |# B( Z5 t  v
  4209.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))
    , G& U, h( E" l
  4210.             )0 |  j% h+ b+ ^% h! U
  4211.             (setq str2 (strcat tmpstr1 "..." tmpstr2))
    # X* _$ }' u# q0 Q& n3 U: }
  4212.          ) ;;; progn2 B( i3 i* B8 h* h" w
  4213.          (setq str2 (strcat tmpstr))
    5 |' P" m4 R% i# b9 V
  4214.     ) ;;; if
    , n7 q2 R2 N0 x2 Y1 m8 s1 R! _
  4215. ) ;;; defun! B$ }  T9 a" ^; H8 X& y0 N+ I

  4216. 1 `% J. ?; s) A( `" S2 [6 G. S
  4217. 6 I0 `$ f; I2 M; b5 @& p2 F' z, E
  4218. ;;;
    + o; {8 j3 |8 E- w  n) b
  4219. ;;;  If the first object in a selection set has an attached URL" ^- U- f. I4 _: T, x# ^& p
  4220. ;;;  Then launch browser and point to the URL.5 i/ D: [4 t! v4 v( g% I
  4221. ;;;  Called by the Grips Cursor Menu0 ~! }% }8 O( r$ X" g6 Q
  4222. ;;;
    # p) g7 n3 e; W1 F
  4223. 8 Z; c4 x2 v- Y" F6 k  F+ B
  4224. (defun C:gotourl ( / ssurl url i)' Z) P, @+ s% ^
  4225.    (setq m:err *error* *error* *merrmsg* i 0)
    * h; F# ~' n5 E
  4226. 3 Q4 @- x! G) _4 B- W; V
  4227. ; if some objects are not already pickfirst selected, - A0 o7 G' f! i+ l& \! Z/ U( ^. e
  4228. ; then allow objects to be selected: W9 `# D% p) o$ e+ \5 W' N3 z
  4229. " B; h% l2 j5 Z& `0 l$ u/ y& [1 t
  4230.   (if (not (setq ssurl (ssget "_I")))
    - j+ g& _( ^: {6 H, j( U; H' ?
  4231.       (setq ssurl (ssget))
    " ]9 l: b% U8 U! @! C1 h% N# V$ M4 j
  4232.   )9 w9 e/ ?( r7 y5 I$ x. @8 I, d- m4 B

  4233. 2 g8 Y$ G& q, A. }1 p- w
  4234. ; if geturl LISP command not found then load arx application* o$ K, @* L# i/ y" }* e

  4235. & a# d4 q1 [: I, x
  4236.   (if (/= (type geturl) 'EXRXSUBR)
    6 j* A; ^4 N: ]5 p4 ~6 v
  4237.     (arxload "dwfout")
    9 y6 C  y2 p# z( G1 ?5 A
  4238.   )
    ) T" _  L! u: ?" a+ R
  4239.   ( u- ~6 M# K6 S5 z1 }: ?# }
  4240. ;  Search list for first object with an URL4 o1 Z. L2 l4 @0 X4 g
  4241.   (while (and (= url nil) (< i (sslength ssurl)))( F( U5 m0 h3 v! x/ }
  4242.     (setq url (geturl (ssname ssurl i))
    ) J* h8 X. O) ^5 B" y5 y
  4243.           i (1+ i))
    ( [- `' u# ?- c: k
  4244.   )
    0 I7 h! p8 r, \' n, P
  4245. ) W! `4 b4 M" I2 ^. W6 ?
  4246. ; If an URL has be found, open browser and point to URL
    + E# k  o+ C3 i4 X+ R
  4247.   (if (= url nil)) I8 D6 |0 I7 t: L
  4248.     (alert "No Universal Resource Locator associated with the object.")
    & w: `; L; [) R9 W! A& K/ m
  4249.     (command "_.browser" url)
    8 E  ^" d  B, P: Q5 I6 g
  4250.   )
    # r3 L% h# U" i! g- L. n1 i

  4251. 3 b0 s7 P1 X* e2 t0 V3 f
  4252.   (setq *error* m:err m:err nil)# y- F- l/ }4 v% ?
  4253.   (princ)
    ; n9 a& C! L3 k  {

  4254. / Y* ]' P) W/ r) U. M- ]( u/ T
  4255. )! ]. a& o6 E0 l/ n# J5 P  Q- \, e

  4256. 1 ?0 A0 C0 {$ K% g
  4257. ;; Used by the import dialog to silently load a 3ds file! j/ ^6 ^: \6 B) U2 J( n& B0 m
  4258. (defun import3ds (filename / filedia_old render)' V, n4 F' s& g  |
  4259.   ;; Load Render if not loaded8 r. @3 r  i0 O0 C
  4260.   (setq render (findfile "acRender.arx"))7 P4 u8 C5 c& P7 M3 e5 g
  4261.   (if render6 j) R8 r. [9 w4 L9 n
  4262.     (verify_arxapp_loaded render) - C0 `2 R, I$ |# e. R# p
  4263.     (quit)- g0 Q/ \- I3 E. ~. r( q
  4264.   )3 E8 X+ V' \3 k4 |2 }8 {/ P

  4265. 9 r1 N# q+ q5 O2 J
  4266.   ;; Save current filedia & cmdecho setting.
    9 K5 x( s5 X/ V& o0 N) h
  4267.   (setq filedia-save (getvar "FILEDIA"))
    : p$ v  R5 F+ t2 B  n  K
  4268.   (setq cmdecho-save (getvar "CMDECHO"))
      A. |& T* G+ ^$ X, h  V
  4269.   (setvar "FILEDIA" 0)
    ; O' A1 Z$ P% s" I0 p% r8 q
  4270.   (setvar "CMDECHO" 0)4 T! f9 ~! ?# f5 ?: c; Z) ~

  4271. 5 ~, ^2 n+ ~  o& p
  4272.   ;; Call 3DSIN and pass in filename.7 Y$ E, d& o* F: [2 ~0 P
  4273.   (c:3dsin 1 filename)
    6 ?; @, z1 C8 e8 a; B0 P9 g

  4274. " V4 M9 p" [6 v# X
  4275.   ;; Reset filedia & cmdecho
    1 f! [/ S' v( r, b* z  D* _
  4276.   (setvar "FILEDIA" filedia-save)
    + F* L1 q, B, P, Z
  4277.   (setvar "CMDECHO" cmdecho-save)' \$ s  W5 `5 t3 w$ }0 z: V4 `, ^& c9 _
  4278.   (princ)( a7 B9 z; b4 A2 \4 O
  4279. ), `; d0 Z% [: D3 H3 N: t
  4280. 0 S5 q6 f2 ]: Q3 M0 ?* g7 q' s- |

  4281. 6 H1 G2 I5 L/ b( k; T
  4282. ;;;=== Menu Functions ======================================9 }4 A% u2 y& t
  4283. 7 E$ i  |7 H# P: @
  4284. (defun ai_rootmenus ()
    + _9 H; O3 I+ W3 d
  4285.   (setq T_MENU 0)( v+ y  J7 f, t, N/ }! P, g
  4286.   (menucmd "S=S")" k4 b/ {9 Q6 Q: d" `. y; `
  4287.   (menucmd "S=ACAD.S")& e' B" Z2 [' _6 P
  4288.   (princ)1 L3 o& @8 J: `% w( Z( A' Z( o
  4289. )  Y) |/ d1 k9 z- |6 P9 C8 t0 ]9 B) O
  4290. % B, s( k* U. J
  4291. (defun c:ai_fms ( / fmsa fmsb)9 b' Q( `! E5 t) ~
  4292.   (setq m:err *error* *error* *merr*)
    & u. G; J! j  v. Z
  4293.   (ai_undo_push)
    / s9 D* ]* U: |' Z. k' b" u
  4294.   (if (getvar "TILEMODE") (setvar "TILEMODE" 0)), ^  f$ C: ~: T
  4295.   (setq fmsa (vports) fmsb (nth 0 fmsa))
    4 a$ X4 d% k5 a1 ?
  4296.   (if (member 1 fmsb)
    / O! l# J( F0 [5 s
  4297.     (if (> (length fmsa) 1)
    , P- z! k! f! T+ \0 c4 m4 Q
  4298.       (command "_.mspace")
    ; B6 @/ ?3 t$ R( K, ^3 V# j$ N
  4299.       (progn" ~" E% y& ?, G) h
  4300.         (ai_sysvar '("cmdecho" . 1))
    8 ~) {9 y2 J; F, q( a' T( Z
  4301.         (command "_.mview")9 y% o- \' L2 {7 A: V
  4302.         (while (eq 1 (logand 1 (getvar "CMDACTIVE")))6 b3 R: G$ `6 g/ W0 _! e1 d
  4303.           (command pause)
    8 N# `3 J1 E- z% t
  4304.         )" U% c* x; L$ ?4 Z4 [! [0 M
  4305.         (ai_sysvar NIL)  M8 X/ x8 W+ M. X% {. m  Q
  4306.         (command "_.mspace"), l. M9 f1 b" E7 z6 k& y
  4307.       )5 M7 [3 T) J; [, v
  4308.     )
    5 t; n! i# U- d2 S9 M
  4309.   )
    1 L: \: z  S% _+ p
  4310.   (ai_undo_pop)
    ( |6 X2 d5 k2 N: f6 `
  4311.   (setq *error* m:err m:err nil)
    ) W( X5 t+ c, g6 n& t; [, s6 Z
  4312.   (princ)  y2 ~; A+ L3 Y" N
  4313. )9 J6 M7 g+ @; s" H
  4314. ; O4 b& d) s( D0 P2 Y
  4315. (defun ai_onoff (var)+ M. t( q* w- u' G) v/ K* D
  4316.   (setvar var (abs (1- (getvar var))))
    & U9 W3 _. K7 `
  4317.   (princ)7 I( d! a$ o  \* l
  4318. )
    5 g! q0 C* D2 y

  4319. 2 U1 h. `9 ?  X& v/ z0 Q! Z/ q# |8 k+ W
  4320. ;;; go to paper space7 ~4 O. U2 k7 {( Y
  4321. (defun c:ai_pspace ()
    & P! ~& M3 ^) Z  v/ \$ H
  4322.   (ai_undo_push)9 [% v; I9 C  c, q
  4323.   (if (/= 0 (getvar "tilemode"))5 R5 b9 K5 S$ w
  4324.     (command "_.tilemode" 0)) W  r+ s& K' W3 Q
  4325.   )  Z! A0 `# |/ B+ V' m
  4326.   (if (/= 1 (getvar "cvport"))
    - F8 U5 l1 k! O1 L) o
  4327.     (command "_.pspace")& D. Y( H$ ]2 g7 @/ h1 u8 F% G
  4328.   )6 k: b9 k1 K+ M# c. e4 I) E
  4329.   (ai_undo_pop)
    5 n% h; h9 ]: p% m$ Z3 N, J! t
  4330.   (princ). r; j4 U. x' I& |' @
  4331. )
    8 Y. O* ]& S5 M( m6 l0 w) A
  4332. " Q$ x. J4 i& |& T, D. p# g  b% D& _$ m
  4333. ;;; go to tilemode 10 t! \) S: j. H+ ]2 O
  4334. (defun c:ai_tilemode1 ()
    $ Z0 @$ Z9 V& c4 n$ \
  4335.   (ai_undo_push). Q: G* r  K0 o# T" [( X3 A
  4336.   (if (/= 1 (getvar "tilemode"))
    ) u* h5 D7 H4 E! M/ P9 ?/ Q
  4337.     (command "_.tilemode" 1)
    ) {. C+ w1 J! B& w# e
  4338.   )
    $ T) L, g* E3 Q$ z9 n
  4339.   (ai_undo_pop)
    % r; L  B" V' a. ]' q
  4340.   (princ)# ]  Q& |" d+ t
  4341. )9 E7 k2 k* A) p: j

  4342. 0 J  Y! u, x7 }8 V. c% `
  4343. ;;; Pop menu Draw/ Dim/ Align Text/ Centered
    * }. v% d7 l, {. Z- f) v  H6 R" M* g
  4344. ;;; Toolbar Dimensions/ Align Text/ Centered
    9 ]9 C  _- I: z9 [- p* x, Q; p
  4345. 5 a& e9 V8 G, @
  4346. (defun ai_dim_cen (/ ai_sysvar ai_dim_ss)
      X3 E+ M5 w1 Z8 H1 X% b9 u
  4347.   (setq ai_sysvar (getvar "cmdecho"))) E) J! A  D3 S
  4348.   (setvar "cmdecho" 0)
    / f9 q' {  ?! [
  4349.   (cond, v) B9 f/ w( L. {- W/ c+ i+ b
  4350.     ((setq ai_dim_ss (ssget  "_P" '((0 . "DIMENSION"))))5 d+ e- F0 H* b( o9 a
  4351.       (command "_.dimoverride" "_dimjust" 0 "" ai_dim_ss "" : Z" h8 i9 j4 \1 w/ Y/ k
  4352.                "_.dimtedit" ai_dim_ss "_h")4 h1 ~$ O, _4 {
  4353.     )
    / [9 d! g3 b' }/ `. {* p
  4354.     (T nil)
    ( ^, `& O) Y  I5 E
  4355.   )" S  D! v2 G  a, h7 j; y  b" z
  4356.   (setvar "cmdecho" ai_sysvar)% S: `5 G$ ?  N- a; K6 k% @
  4357.   (princ)# o( W# U" W5 a: C$ A- \
  4358. )
    6 P9 ~! d9 p) L: j, O- G; F

  4359. : i, A0 y1 f3 S* p. \
  4360. ;;; Shortcut menu for Dimension Text Above
    6 A$ H; G$ o0 T
  4361. ! M% q% N  m( ]7 C# r( U" i* w* z
  4362. (defun c:ai_dim_textabove (/ ss)9 z9 j0 N: |; l/ J- j3 E6 L
  4363.   (ai_sysvar '("cmdecho" . 0))
    . y/ E( X2 o6 E1 Q/ m5 L" x
  4364.   (if (setq ss (ssget "_I"))$ V& y& R/ \7 W2 Y; W" `1 m
  4365.     (command "_.dimoverride" "_dimtad" 3 "" ss "")
    ; X/ C: U# [5 ?: t# y0 K; `7 i
  4366.     (if (setq ss (ssget))9 }9 A, z1 b; }# x5 t% m. v
  4367.       (command "_.dimoverride" "_dimtad" 3 "" ss "") 2 }/ v4 b: g# j. m  W: f4 M/ l
  4368.     )
      @' b5 Z; y5 ?. @% {+ R
  4369.   )
    % U7 r# g* e, g% W
  4370.   (ai_sysvar NIL)! X; |2 l8 s6 V4 F
  4371.   (princ)* ~+ ?/ H# L7 H4 w4 R/ ^  g0 W
  4372. )4 Y7 ?- M6 D6 u2 J

  4373. + J, b5 y4 Q' q$ H* K' _
  4374. ;;; Shortcut menu for Dimension Text Center 1 P8 K- P# L; |8 ^+ M" V7 ~
  4375. # I& x  d& Y) w1 I( ~) @
  4376. (defun c:ai_dim_textcenter (/ ss)6 |( q9 T6 i& m/ o" }
  4377.   (ai_sysvar '("cmdecho" . 0))
    + A5 S! B* Q% v0 e% F: a$ Y
  4378.   (if (setq ss (ssget "_I"))
    ' S9 g, w, l6 E/ `% _
  4379.     (command "_.dimoverride" "_dimtad" 0 "" ss "")) H, ~5 p. ]# M( V7 F) w
  4380.     (if (setq ss (ssget))
    ' V/ o2 O) |; b2 Y3 _# a( n
  4381.       (command "_.dimoverride" "_dimtad" 0 "" ss "") % h& D# g( o! J
  4382.     )
      |: w- s& ?/ v
  4383.   )
    ' B1 u+ ^" w' s0 `$ k
  4384.   (ai_sysvar NIL), A8 ]& |* N: V  ^% B( s. F& a
  4385.   (princ)+ {6 q3 K: R1 S) S! e( x" X8 B* u
  4386. )8 i4 x1 U, y+ o/ f
  4387. 6 J& ]1 f0 l. r# X4 c" M% n
  4388. ;;; Shortcut menu for Dimension Text Home
    4 R1 q1 Y. I/ f( A" [) R# J6 E
  4389. ; S4 v: E+ M, z; ^+ B& N) b
  4390. (defun c:ai_dim_texthome (/ ss)
    + h+ ?1 i4 v& U7 a$ `8 ]7 y& M) J
  4391.   (ai_sysvar '("cmdecho" . 0))
    ! J6 Y( N- F; \' J3 [: C' q0 ?: i
  4392.   (if (setq ss (ssget "_I"))! I, N+ N1 `% [% P9 S; [' x& X
  4393.     (command "_.dimedit" "_h")2 G# z$ j8 [5 g  w# l
  4394.     (if (setq ss (ssget))) h8 C4 r3 r( w1 m
  4395.       (command "_.dimedit" "_h" ss)
    8 W1 y9 S- V- V9 t% B+ E6 e! n
  4396.     )9 i3 n' Z3 m) T. A4 @  J9 L( d
  4397.   )
    4 R+ R" ^- b5 u
  4398.   (ai_sysvar NIL)3 T" B7 D% w' z+ O+ b  ~8 L* n* t
  4399.   (princ)1 }% a  T. B# s# x& O) i
  4400. )& f/ ?0 L# L# l# F

  4401. & C' _' l7 I, Z

  4402. 1 o4 N, @1 h( N1 l
  4403. ;;; Screen menu item for CIRCLE TaTaTan option.
    + |9 u& J" `2 B6 c7 d$ x
  4404. ;;;     first, get points on entities: }+ o: }2 C; F, G/ X
  4405. (defun ai_circtanstart()
    & S$ j2 V8 o) ~. Y, \* U& F
  4406.    (setq m:err *error* *error* *merr*)! }# e0 n7 k/ g. ~1 Z/ t
  4407.    (ai_sysvar
    1 O( o- {& w9 k+ _" h+ y
  4408.       (list '("cmdecho" . 0)6 {. r# R( E" A0 p! w- y% G
  4409.          ;; make sure _tan pick for CIRCLE gets same entity0 u7 A$ K( ~9 d# h2 J
  4410.          (cons "aperture"  (getvar "pickbox"))
    # T0 O8 W8 c! E1 t* Z
  4411.           )
    0 ]( s6 q4 q! ~# r3 H  _
  4412.    )
    # ^, g$ Z$ d- ]! G2 d" ]
  4413.    ;; prompts are the same as CIRCLE/TTR command option4 ]/ W1 V# b) n: D2 w. Y  \% a1 N
  4414.    (setq pt1 (ai_entsnap "\nEnter Tangent spec: "  nil))0 n7 O+ t2 M$ O6 V2 x; n# v! ~( D
  4415.    (setq pt2 (ai_entsnap "\nEnter second Tangent spec: " nil)): y3 e3 {! b  C- v
  4416.    (setq pt3 (ai_entsnap "\nEnter third Tangent spec: "  nil))& \) O- ]4 u/ _- X$ _! y( `, Y
  4417. )
    5 L9 n# e3 O$ j  {0 M3 L" ?
  4418. ;;; Command-line version1 k* w7 E6 s, B8 z( \2 C! M
  4419. (defun c:ai_circtan (/ pt1 pt2 pt3)8 ], o$ }1 d9 @* N8 D+ J" i
  4420.    (ai_circtanstart)/ r4 E. t1 k# {4 J7 q  H
  4421. 4 `7 r3 p  i( E1 B$ G. M
  4422.    (ai_sysvar '("osmode" . 256))
    + b+ A. M/ N: g/ `3 q+ q. a- ^
  4423.    (command "_.circle" "_3p" "_tan" pt1 "_tan" pt2 "_tan" pt3)6 r4 q, C. |8 b! T  m) Y* j& p
  4424.    # ^  l$ v5 {5 D: i% G4 Y6 j( x
  4425.    (ai_sysvar nil)
    + y% |, v( f: L! G, e
  4426.    (setq *error* m:err m:err nil)9 }& `8 ^5 z8 G9 ^7 }+ d
  4427.    (princ)
    % g; t- E, r, A8 _" z! c! |+ z1 T
  4428. )5 l: {( q; i9 }' d1 i- f
  4429. ;;; Use this if CMDNAMES == CIRCLE7 `+ [2 `* W4 R2 o; j
  4430. (defun ai_circtan (/ pt1 pt2 pt3)
    1 f- m! s8 _2 R+ E, Y% R
  4431.    (ai_circtanstart), F6 M/ d5 k, d5 ]( Y$ A

  4432. $ d2 S9 n  ]0 ~, {1 M2 l
  4433.    (ai_sysvar '("osmode" . 256))
    2 q; k/ ~8 P1 M  ^7 N% i/ H
  4434.    (command "_3p" pt1  pt2  pt3)7 ~) `! Q7 m% Z
  4435.    ( M$ a. p- `- N3 ~# S0 y# X) b
  4436.    (ai_sysvar nil)# C7 c. C% l. N7 {
  4437.    (setq *error* m:err m:err nil)5 B% D9 R7 w: S. ]& h, x5 ~
  4438.    (princ)# e3 E9 S6 I1 Z' l: C7 {' i
  4439. )
    6 o8 S  ]/ h, h& H; F, @/ n
  4440. 4 `/ \" V8 S! [! m2 V& K. `0 e+ D

  4441. ' l& k2 I& i5 s4 @+ T0 ]

  4442. 7 y& T. B7 N' A! [( S
  4443. ;;; Shortcut menu Deselect All item.
    + n$ r; Z+ L, V  `8 M

  4444. " p% U4 \2 T8 w$ o! [4 n6 I$ g6 r
  4445. (defun ai_deselect ()  U+ F/ J& V: }
  4446.    (if (= (getvar "cmdecho") 0)                        ;start if
    0 f) {. z2 [* t6 v5 w7 H: Z5 U
  4447.        (command "_.select" "_r" "_all" "")4 I$ r' A) R$ X- i* }
  4448.        (progn                                        ;start progn for cmdecho 1) E4 N6 ^6 A4 }  U& O$ T
  4449.            (setvar "cmdecho" 0)
    " {: Q6 N! H2 q7 h. {& r: k$ ^" Q
  4450.            (command "_.select" "_r" "_all" "")6 r+ K: v- x- m  [* C, x1 d' f
  4451.            (setvar "cmdecho" 1)0 }3 Y% e, I4 [# C2 ]6 O
  4452.        )                                        ;end progn for cmdecho 1; `2 _# ~5 h8 m4 D
  4453.    )                                                ;end if
    : u8 y) ]4 w/ X' ^5 A; E  C
  4454.    (terpri)
    7 n8 \- ]! v+ j! e
  4455.    (prompt "Everything has been deselected")
    9 u" ?4 [: E, s: ^: y4 I7 d" [, K: C
  4456.    (princ)
    3 J/ D# L- d5 Q$ U' E/ _
  4457. )8 p: a; n" s0 v3 K2 }- N

  4458. - U: c, A& j" `/ A1 N0 l
  4459. ;;; Command version of ai_deselect to be called from the CUI( x  G! r, H0 {# K: w; ]! c5 x
  4460. ;;; so it gets properly recorded by the Action Recorder
    . j' {" t* E  w/ f0 z
  4461. ;;;( w, |: G( e  p2 I4 h) T: B
  4462. (defun c:ai_deselect ()
    , h' O7 X" B( f' V: E5 R, v4 v* E
  4463.   (ai_deselect)
    6 V4 _% s2 {, J7 \  C, V3 v3 O( Y
  4464.   (princ)
    : F" X& m! K4 A. t6 P( ]8 a
  4465. )( ~9 T5 D# l; q
  4466. 6 d  J! K- i4 |
  4467. ;;;2 k+ M7 e. B2 Z$ X
  4468. ;;; Enable Draworder to be called from a menu
    : h& h$ ^5 m4 |' R+ l4 p& k5 H
  4469. ;;; Checks for Pickfirst selected objects
    % I$ y8 v. ]) B! `
  4470. ;;;7 d6 [5 r$ F0 Y3 L$ y
  4471. ) h) ^2 S2 h/ P/ m0 G# j
  4472. (defun ai_draworder (option / ss )6 V! N; X! s: w+ [  H8 R0 [
  4473. ( o; Q+ i) l& ]" g8 B7 A# `" X) z0 i
  4474.   (setq m:err *error* *error* *merr*)
    ! Y' [/ w2 i) a! D! J) c4 J' w9 Z
  4475.   (ai_sysvar '("cmdecho" . 0))6 X* s: S5 r; b; s0 E  y7 a( O

  4476. / s9 f: z7 ^3 a6 a5 I' q$ J1 S
  4477.   (if (setq ss (ssget "_I"))
    % A/ ^1 G/ E: v( p' ?2 l
  4478.     (command "_.draworder" option): S+ z  A' |( Q! q* M
  4479.     (if (setq ss (ssget))
    . D' i% [" Q: q3 q
  4480.       (command "_.draworder" ss "" option)* g2 f  k3 s6 o7 B
  4481.     )
    0 B; A/ k( c% C! Q8 S) U
  4482.   )# [2 z: Y; n3 q
  4483.   (ai_sysvar NIL)) o3 _1 e& R+ T" T0 {, `4 s# V# B/ V
  4484.   (setq *error* m:err m:err nil)/ k8 [/ P. \4 `" Y! @5 y! ?  W9 m
  4485. 7 |' c, V9 Q( V
  4486.   (princ)
    * I* s5 J, f$ r* B) V8 q, l# ]
  4487. )+ F. c" r' c% x7 Q) C1 v

  4488. 1 C! y, c; r4 s  i0 M
  4489. ;;; Command version of ai_draworder to be called from the CUI: x5 o  Q5 b6 L
  4490. ;;; so it gets properly recorded by the Action Recorder
    ( T8 j$ L; j( O7 O( y: t
  4491. ;;;3 k+ w0 S6 b( r: o' t- p
  4492. (defun c:ai_draworder ()& l6 Q, m" O8 {3 f" Q8 v  P: K( i
  4493.   (initget "Above Under Front Back")0 [5 D, ~1 R, g) V* H, S
  4494.   (ai_draworder (strcat "_" (getkword)))$ Y% J/ \! d5 g2 }% E
  4495.   (princ)$ Q; v, m- a% y$ x
  4496. )
    $ o1 p. x4 V) g3 ]/ w; ]

  4497. * E4 l$ D) d* [/ ]' r
  4498. (defun c:vlisp ()
    ( H5 x2 Z) c+ d* b5 x2 F
  4499.   (if (/= nil c:vlide) (c:vlide))
    & `5 `) u! ~) F# c6 C
  4500. )$ I  m3 _3 Y: i* N# t. n
  4501. * e6 i+ n5 Q- }
  4502. (princ "loaded.")0 \7 m0 d/ b' X7 v9 [' G1 ^$ O
  4503. . l# M! u) R6 q7 K' i! @
  4504. ;; Silent load.  F( {* A# `3 k- m( b) S
  4505. (princ)
    % [. n1 x3 W+ e* t, W; V- g

  4506.   O! e! h2 v2 A! i7 q; ?% @7 O
  4507. ;;;----------------------------------------------------------------------------
    3 E5 Y7 C* K! }5 f4 w
  4508. ;;;
    9 E* \- B6 Q3 D$ }; g; j
  4509. ;;;   DDCHPROP.LSP   Version 0.5
    $ W+ m6 R2 e, f1 z  e
  4510. ;;;' H2 e; L# s( m4 C4 N; J- T" \) \
  4511. ;;;   Copyright (C) 1991-1993 by Autodesk, Inc.
    - H/ W2 q" x4 P: j! Y% O+ s$ ^
  4512. ;;;
    1 s! C+ F8 ~4 g% {
  4513. ;;;   Permission to use, copy, modify, and distribute this software
    # }9 B+ E, _) ^, e0 N
  4514. ;;;   for any purpose and without fee is hereby granted, provided8 i9 E7 u3 h2 E- K/ H
  4515. ;;;   that the above copyright notice appears in all copies and that
    8 O4 W+ L8 A/ Q
  4516. ;;;   both that copyright notice and this permission notice appear in
    * k. V7 R. X. r5 D2 b, V
  4517. ;;;   all supporting documentation.8 _+ T9 Z! G# u% _; N' K
  4518. ;;;
    9 F5 n" K" V" M7 J
  4519. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
    ( h% e  p1 R$ N9 M9 ~- X
  4520. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
    6 I# v  ~1 Z- v
  4521. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.2 R5 A0 ^5 n! R3 b
  4522. ;;;1 c; s* C/ _3 a+ v* |+ F
  4523. ;;;   2 February 1992# U9 b# P& h' _5 K7 G6 r5 @) b% ?3 ^& D
  4524. ;;;   
    ' s9 E! Y7 V; c9 D. D) {- s
  4525. ;;;----------------------------------------------------------------------------' D* d; F; @0 b5 Z5 x
  4526. ;;;   DESCRIPTION+ L1 I  H( V5 Q( P, V
  4527. ;;;----------------------------------------------------------------------------* ?- e* _' r5 L  [4 H  t
  4528. ;;;   C:DDCHPROP is a dialogue interface for the CHPROP command.1 E4 U, ?! M  d( Q7 N( W
  4529. ;;;2 W, }- x! i1 h4 D) A) ^5 U
  4530. ;;;   The command looks similar to DDEMODES.  The main dialogue has an image
    $ ?2 f' r; y% o* c
  4531. ;;;   tile, 3 buttons (layer, color, linetype), and an editbox (thickness).   
    + f) F7 q! j# |$ `/ ~, n$ r
  4532. ;;;   The 3 buttons each launch a sub-dialogue containing a list and edit box.  2 k# ^. \+ {+ U4 s
  4533. ;;;   The dialogues are all defined in the DDCHPROP.DCL file.
    0 C7 E, }9 j$ @1 B; q: }2 {* X1 r
  4534. ;;;
    0 J' B# P$ K8 f) c. |) p( ~
  4535. ;;;
    3 G; [+ D, ]; b: a
  4536. ;;;----------------------------------------------------------------------------
    ' y' T3 X6 a4 T' f' V2 l* P
  4537. ;;;----------------------------------------------------------------------------1 B% \  w! K$ a# b1 @' f
  4538. ;;;   Prefixes in command and keyword strings:
    . q  r7 x/ K3 T+ E: y# g
  4539. ;;;      "."  specifies the built-in AutoCAD command in case it has been        $ ?( u/ m; Y4 |' m
  4540. ;;;           redefined.
    * P* H1 o6 n  X5 E" {/ A, p1 A
  4541. ;;;      "_"  denotes an AutoCAD command or keyword in the native language4 `1 @' u  Z, U
  4542. ;;;           version, English., U4 C# e4 W6 k, k! [" b- G7 j' R
  4543. ;;;----------------------------------------------------------------------------
    5 R* W$ u$ T' r7 g/ l/ J
  4544. ;;;; N# Q; b; A$ ]$ S3 ]# B3 Q$ v
  4545. ;;;; z$ n3 S$ b7 |
  4546. ;;; ===========================================================================& G$ e! R" F& ]4 u6 U" D3 Q- L
  4547. ;;; ===================== load-time error checking ============================) x. D: {; U0 {5 Y* t1 h7 P
  4548. ;;;
    " v9 b/ x. }: G# D
  4549. 0 v: N4 e# p( A$ \/ S7 @
  4550.   (defun ai_abort (app msg)
    8 i. y3 i: X$ O) q' o2 c, H
  4551.      (defun *error* (s)6 z0 N8 f; l/ B- d7 i  J! Q2 O4 a/ t
  4552.         (if old_error (setq *error* old_error))
    3 z& x+ E5 V6 S1 ~8 p% X8 r. h
  4553.         (princ)
    ( [) a) \8 b, g3 `- O
  4554.      )
    4 R( ^: v, A0 T4 q$ _
  4555.      (if msg5 L0 E) F& N. s7 m6 [; S8 r
  4556.        (alert (strcat " Application error: "
    ! C( }0 L6 r. }
  4557.                       app
    7 v' i$ w9 L7 |! T+ K9 i$ Q* J5 _; a
  4558.                       " \n\n  "8 g1 x+ Y# o, V
  4559.                       msg' e. o3 X2 s  N: J& \7 k3 s
  4560.                       "  \n"8 p8 c9 N+ Z" C; K+ ?, Q7 X1 M
  4561.               )$ l9 K& C7 ?- m5 r1 o
  4562.        )
    6 ~6 {3 _, @, j
  4563.      )
    8 c1 I7 _3 L0 {
  4564.      (exit)
    ! z+ y+ ^( x& C" p
  4565.   )
    ! ]: {/ n9 v8 B$ |! Y; v$ L
  4566. ; \! H$ K; H& q" \6 Y! H# x
  4567. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    : {$ W; B6 t1 i! U& g
  4568. ;;; and then try to load it.
    % A$ l- _3 g  Y
  4569. ;;;
    * G7 ?3 S: h7 {2 U0 r
  4570. ;;; If it can't be found or it can't be loaded, then abort the
    2 r' P) G4 g0 B' V9 \3 }- f
  4571. ;;; loading of this file immediately, preserving the (autoload)4 n/ v) Z; C# U3 V& W
  4572. ;;; stub function.
    : {+ u1 B* L2 j1 X
  4573. . [! e. S8 Z3 @. q3 x9 G  [7 f: Z
  4574.   (cond# |/ f. g( d: z5 S
  4575.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    * \$ v9 l5 ~  S# p+ B

  4576. & ?$ l* S$ P  d/ z, z
  4577.      (  (not (findfile "ai_utils.lsp"))                     ; find it/ x  V9 J+ O! d( h
  4578.         (ai_abort "DDCHPROP"
    6 J, ^' l8 @' K8 ]5 l9 C: N$ \
  4579.                   (strcat "Can't locate file AI_UTILS.LSP."
    8 _2 S5 L, T/ Q6 U, U
  4580.                           "\n Check support directory.")))/ r$ T/ p& j) Y1 J$ Q6 q

  4581. + `! I& l8 F/ l% w; [; H
  4582.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it9 _/ w% F1 [. y) P
  4583.         (ai_abort "DDCHPROP" "Can't load file AI_UTILS.LSP"))3 K8 h5 o# i1 V" z: q7 L( [
  4584.   )
    . B9 M1 j" t, q: r3 S

  4585. " x, h1 r3 E( p
  4586.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP9 R' l2 f1 ^/ q. y! {
  4587.       (ai_abort "DDCHPROP" nil)        ; a Nil <msg> supresses; S% w* x9 c8 U5 o+ z" `
  4588.   )                                    ; ai_abort's alert box dialog.7 n1 W+ F8 q, Q( X1 F" M: M7 [9 Q0 I

  4589. 5 G  q% f5 @; J. y# _
  4590. ;;; ==================== end load-time operations ===========================
    7 J* s; m. d$ x# @5 P

  4591. 7 F% g/ }8 {* ^9 _0 ~8 k
  4592. ;;; Initialize program subroutines and variables." `! ?" Z' n  J% k" j2 i

  4593. * z" ~+ }. ^3 M, z
  4594. (defun ddchprop_init ()
    ! R- p# t6 G* v2 r* V5 {

  4595. : a( E2 J5 ~4 W8 H4 f
  4596.   ;;- Z5 v) O- r1 ^4 D7 x/ t) @5 e
  4597.   ;; Define buttons and set values in CHPROP dialogue box 6 x* c) m: ~( |5 @0 R; L" q
  4598.   ;;
    ( P/ X" C; ^) L" b. P
  4599.   (defun call_chp ()
    . _+ u  }9 q. x9 O2 P9 `5 T+ |
  4600.     (if (not (new_dialog "ch_prop" dcl_id)) (exit))
    2 {( t7 j/ c0 l1 \
  4601.     (set_tile "error" "")
    ' y% G- h$ V7 b2 I
  4602.     ;; Set initial dialogue tile values
    % L) m: g6 S* |  X' w* p
  4603.     (set_col_tile)
    / X" J4 D4 R; N; N2 `) @
  4604.     (if (= lay-idx nil)
      S" y* \7 N# O2 R) c3 h/ U& |  ^
  4605.       (set_tile "t_layer" "Varies")7 Z9 t, b7 m6 o4 b* w3 K2 v
  4606.       (set_tile "t_layer" (nth lay-idx laynmlst))
    5 m% a' j: b  p$ q% b, c
  4607.     )- ]0 U5 \3 f3 m: X8 R  K
  4608.     (cond
    0 H( T2 Z' e/ r: R  [: k! _
  4609.       ((= lt-idx nil)
    4 q+ I. x) {; E; b
  4610.         (set_tile "t_ltype" "Varies")2 F% h7 W; B* B" `$ [& ?0 L- A% h
  4611.       )5 s: ~& W. s( p
  4612.       ((= lt-idx 0) ; set tile "By layer & layer linetype"" w& Q9 _) G% G* P: r# G' N
  4613.         (set_tile "t_ltype" (bylayer_lt))6 c5 {6 j, t9 ]" [
  4614.       )7 \, S* X' ~8 w9 J( W+ r- K
  4615.       (T 0 s) c( N0 S% C
  4616.         (set_tile "t_ltype" (nth lt-idx ltnmlst))
    1 f; G# O' U( _9 D7 Q2 C
  4617.       )6 B. w5 t, |# Y! V4 @
  4618.     )+ f- x8 q/ W) W( P$ e+ h
  4619.     (if (or (= ethickness nil) (= ethickness "Varies"))3 P: ~: N) t( U/ |7 i' B# G5 c" F
  4620.       (set_tile "eb_thickness" "Varies")
    ( A  r2 [0 I* P, t0 r# j4 X% `
  4621.       (set_tile "eb_thickness" (rtos ethickness))
    + R9 s8 |: l. \# N* R8 J( _0 J
  4622.     )6 I" {. x3 a8 C7 @  X3 l$ s5 z
  4623.     ;; Define action for tiles
    5 D3 r/ I( k, n, d& K! `* U; O5 E( f
  4624.     (action_tile "b_color" "(setq ecolor (getcolor))")" x# Y- ~2 f$ O' e5 O
  4625.     (action_tile "show_image" "(setq ecolor (getcolor))")6 R' `6 \# o2 i# N  A) ]
  4626.     (action_tile "b_name" "(setq elayer (getlayer))")
    , V: k9 m0 X: }- N
  4627.     (action_tile "b_line" "(setq eltype (getltype))")
    9 g+ a6 \7 v. @- h& p  K6 V0 n0 G/ l
  4628.     (action_tile "eb_thickness"  "(getthickness $value)")/ R  r8 l9 n& B  M) K- L$ w
  4629.     (action_tile "help" "(acad_helpdlg \"acad.hlp\"  \"ddchprop\")")4 j9 y( M) N- V# _! B8 x3 ]5 s
  4630.     (action_tile "accept" "(test-ok)")
    : [+ M  @  Z9 f5 P4 @
  4631.     (if (= (start_dialog) 1)
    9 Q1 l  z! p- H& o( Y8 A2 u
  4632.       (progn
    , l# D( {9 n# w5 i4 v
  4633.         (command "_.chprop" ss "")# g3 A0 v8 Z4 B0 ~
  4634.         (if ecolor" q# t* g2 x: R! j# }
  4635.           (progn
    , h# ]' _: @* Y" w* O4 V8 o4 p
  4636.             (if (= 0 ecolor )   (setq ecolor "BYBLOCK"))
    1 ^, O7 k% ?5 _- L
  4637.             (if (= 256 ecolor ) (setq ecolor "BYLAYER"))
    6 j( t$ B4 S9 T. l  d3 K
  4638.             (command "_c" ecolor); d. Y$ x  f2 ~( U' L* d& ?8 v5 r
  4639.           )7 n, I6 I2 W, [( ?
  4640.         )9 L* a' q# F$ K1 s5 Q( t8 ?  p( [& b
  4641.         (if (and (/= eltype "Varies") lt-idx)
    ) x; g' _9 w1 K9 P$ @# W
  4642.           (command "_lt" eltype)
    ( k& F7 f% _% h% C- r
  4643.         )$ y: u( s; O# P% I
  4644.         (if (and (/= elayer "Varies") lay-idx)
    & A# Y8 ?0 e5 x
  4645.           (command "_la" elayer)& T1 q4 m2 w, ]# s
  4646.         )
    ; b. V, Z* m3 ^. T, l0 s
  4647.         (if (and (/= ethickness "Varies") ethickness)
    4 {6 w- f) N  B! c( N& p, ^+ o
  4648.           (command "_t" ethickness)
    5 ~+ e; l- d3 ?! B& }
  4649.         )9 b3 u! ]7 k$ ^% N8 _7 ?
  4650.         (command "")/ j5 O5 f5 f0 p+ x9 M0 P
  4651.       )- Y2 q# P+ c* r7 {% X
  4652.       (princ "\nProperties unchanged")0 H/ d/ i2 u" i. C
  4653.     )
    4 q  l! X0 b$ j9 Q, B
  4654.     (princ)  @3 B: R% g6 @  v* n! w4 _
  4655.   )& R8 K: C7 \5 N) z, y
  4656.   ;;
    0 h+ E3 P% x& y. v6 l: d
  4657.   ;; Function to set the Color text tile and swab to the current color value.
    ; X2 ]! L0 ~' F+ y7 D+ e
  4658.   ;;& n. t% H7 J# h/ c2 V( x$ t
  4659.   (defun set_col_tile()
    * j1 c  N( \, K" Y& W
  4660.     (cond : h: j& x5 T9 }
  4661.       ((= ecolor nil)
    3 g7 z# O& S) f) d. b+ p2 ]  A
  4662.         (set_tile "t_color" "Varies")
    , a" t$ x1 V2 _9 y/ p$ q( u9 q3 K
  4663.         (col_tile "show_image" 0 nil)
    ( I/ n$ Y- \* G3 [! v  i& H% t9 i! F+ ^
  4664.       )
    ; t5 a+ E% ?5 `0 B- I
  4665.       ((= ecolor 0)
    $ Y7 W6 \5 O$ J8 m, l& L- R* H1 I# t0 }
  4666.         (set_tile "t_color" "BYBLOCK")
    + w# O; a& F( v8 R3 m2 I
  4667.         (col_tile "show_image" 0 nil)+ a3 _8 b' G: {
  4668.       )
    % K/ N/ ~# J7 j& ^& \
  4669.       ((= ecolor 1)0 R+ ?* n* G+ j  t2 u5 [- Z
  4670.         (set_tile "t_color" "1 red")) T( \/ F! G  X5 z8 a4 G8 y$ k5 [
  4671.         (col_tile "show_image" 1 nil)
    $ T3 w( S8 R; u5 l3 g9 Q
  4672.       )8 \  |% X9 p5 @  }9 B2 L
  4673.       ((= ecolor 2); ]; e& R8 N2 b0 L0 v* n6 d
  4674.         (set_tile "t_color" "2 yellow")
    2 t* B1 q4 i8 S1 y* m
  4675.         (col_tile "show_image" 2 nil)
    1 W" K% T: s7 U- |. @$ F6 J$ D0 j
  4676.       )* v& E+ X! r6 [+ W' S* R. t
  4677.       ((= ecolor 3)
    ( z- ~. i& d+ C! Y+ n
  4678.         (set_tile "t_color" "3 green")- p* ]  H  s! u# Y
  4679.         (col_tile "show_image" 3 nil)8 W, I  _/ |* W; U9 p
  4680.       )+ V# B8 m9 ]8 m& ^" U6 Q
  4681.       ((= ecolor 4)
    ) s/ K( j3 u# ~; F
  4682.         (set_tile "t_color" "4 cyan")( G8 S: s" ~0 N" t! I
  4683.         (col_tile "show_image" 4 nil)
    - K! V. `+ l5 s) N
  4684.       )
    6 y3 Y) F$ {$ y' W7 i0 U1 x7 T
  4685.       ((= ecolor 5)
    2 O1 G, b) T) t7 Y8 |- {
  4686.         (set_tile "t_color" "5 blue")
    ; j6 ?  X- \' J, o
  4687.         (col_tile "show_image" 5 nil)/ f* S" L* Y5 C
  4688.       )
    # b- k9 V/ {+ g( c9 [" T& w
  4689.       ((= ecolor 6)9 Q1 P5 H3 c+ p" _8 j
  4690.         (set_tile "t_color" "6 magenta")
    + y1 ]7 j9 F0 `4 _0 c, B* j# v
  4691.         (col_tile "show_image" 6 nil)9 F& Y( M' t- u* W% |' ~. R8 `7 P
  4692.       )
    . f% c, q2 x" s3 p% G
  4693.       ((= ecolor 7)  `% {% k5 d7 L. o' \2 W
  4694.         (set_tile "t_color" "7 white")
    + e- |: N- y' q2 `# G
  4695.         (col_tile "show_image" 7 nil)
    0 Z% v- j& w% x0 l; S4 ~7 W0 Q
  4696.       )
      L) k: `9 p8 s* P4 }. `2 q
  4697.       ;; If the color is "BYLAYER", then set the tile to
    ) F! {% w) _; F: Y0 L4 z7 j/ r
  4698.       ;; show it's set By layer, but also indicate the
    9 p) X" I4 u8 ^
  4699.       ;; color of the layer - i.e. By layer (red), Z$ z, q" _" P% c. w) |2 `
  4700.       ((= ecolor 256)6 w2 g8 L' v' Q" i$ `6 R
  4701.         (set_tile "t_color" (bylayer_col))
    0 a/ z+ x# ^8 D; N% p$ R8 y, T
  4702.         (col_tile "show_image" cn nil)' G0 _4 O  U% f3 I8 h+ Q- r8 f
  4703.       )
    + v- K/ k& l3 }7 q& Z
  4704.       (T
    3 a% j9 |# O) V0 u; F
  4705.         (set_tile "t_color" (itoa ecolor))6 B7 ~% L2 [( `5 O
  4706.         (col_tile "show_image" ecolor nil)* r2 I6 J& m/ z; {: B
  4707.       )
    # A% J5 @# J4 E; M" ]3 C
  4708.     )
    1 t) R% O* |4 V
  4709.   )* j1 @  R) t/ I/ i4 e
  4710.   ;;1 ]: F; C. B5 b) D# M8 l1 [* M
  4711.   ;;  Function to put up the standard color dialogue.4 Q! r8 @* v# U. L7 i+ N2 p
  4712.   ;;0 K9 ]7 b7 M; K' _/ _5 _
  4713.   (defun getcolor(/ col_def lay_clr temp_color); W! V6 T1 f3 L# _+ _2 N4 B3 e
  4714.     ;; col_def is the default color used when rq_color is called.  If ecolor
    5 v  s' n) Z0 n& A
  4715.     ;; is nil (varies) then set it to 1, else use the value of ecolor.
    . j# a' ~) W8 i
  4716.     (if ecolor6 W0 V" @/ n1 L1 q  j
  4717.       (setq col_def ecolor)
    + a+ H( @6 e- B: X8 |1 r
  4718.       (setq col_def 1)8 p8 I5 Q$ P4 }* d( l
  4719.     )
    4 ^3 p- q6 t" P* D! [- N
  4720.       
    1 @8 }3 ]2 W* {
  4721.     ;; If we're working with a single layer, get its color! Y& _3 ]2 `" b* [9 N' J
  4722.     ;; for use in the color swatch if the user selects color BYLAYER.
    8 m' C# o3 R) {- v
  4723.     (if (/= elayer "Varies")  y6 l: |1 ?* k! ]; [0 q/ _$ s
  4724.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    7 S. ~3 v( w# z! a* n/ b" H& k: }
  4725.       (setq lay_clr 0)
    # R# y7 W2 L* c3 y  N0 i
  4726.     )
    . q- w$ ~  C& E% B' f
  4727.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))
    2 J7 M% Q# [8 w( x
  4728.       (progn6 d+ u3 W% w7 ^2 p/ G
  4729.         (setq ecolor temp_color)
    8 v" d* V8 j! ~) A9 b% e$ L
  4730.         (set_col_tile)
    , m# k, @, B3 K# Z- R
  4731.         ecolor
    ' x$ f& i" |8 W: z' d+ @! f: ]" H6 F9 N
  4732.       )
    * Q9 |! ?! ^8 G
  4733.       ecolor
    5 p- m/ _7 p  B4 b; e$ W
  4734.     )  5 K' \: M0 |/ ]: R, e
  4735.   )2 A& t, s7 C0 f/ Q# i
  4736.   ;;
    0 [; O: X; y! i% N! |% J
  4737.   ;; This function pops a dialogue box consisting of a list box, image tile, ! W" o, l9 a) S1 i7 P( _5 Y
  4738.   ;; and edit box to allow the user to select or type a linetype.  It returns
    % r2 f! P, g* P  w
  4739.   ;; the linetype selected.
    $ X  i' \  M1 S1 r8 R
  4740.   ;;
    ! }$ w% T1 v2 [6 C* z9 l. g
  4741.   (defun getltype (/ old-idx ltname). e! p) `& f" V: m: R
  4742.     ;; Initialize a dialogue from dialogue file
    ! E+ ^* [, j) _+ `! X
  4743.     (if (not (new_dialog "setltype" dcl_id)) (exit))
    4 p1 v! ^% |' O; p
  4744.     (start_list "list_lt")) H% k# M# N: g& u1 o, I0 ?, M
  4745.     (mapcar 'add_list ltnmlst)         ; initialize list box1 l2 h% _  q  H1 Q
  4746.     (end_list)
    3 I- M% S, L) P* h& I- d
  4747.     (setq old-idx lt-idx)
    6 [9 W6 |! ?: x* j
  4748.     ;; Show initial ltype in image tile, list box, and edit box2 W! x. l: \8 g
  4749.     (if (/= lt-idx nil)
    ! e' ~9 l4 R$ i$ v! F) T3 e, I
  4750.       (ltlist_act (itoa lt-idx))
    ' [9 J2 K& k' l: z3 ?1 j
  4751.       (progn& T) Z( Y# E# y' n5 F
  4752.         (set_tile "edit_lt" "Varies")
    8 {; R# k/ |6 }9 G1 z+ L
  4753.         (col_tile "show_image" 0 nil)
    2 s( [5 C" \& ?, y/ r5 r2 P) z
  4754.       )5 C7 p" p  G8 @0 c% I& x$ g
  4755.     )
    0 M  s* m& P9 N
  4756.     (action_tile "list_lt" "(ltlist_act $value)")
    ; J+ ^" D# y8 o+ |4 h
  4757.     (action_tile "edit_lt" "(ltedit_act $value)")- m0 T+ K  T& g" Z+ B* }  ~
  4758.     (action_tile "accept" "(test-ok)")
    5 n9 N, W& a8 [8 g8 V7 f! z
  4759.     (action_tile "cancel" "(reset-lt)")
    ) ]6 [6 G3 h! R2 L4 A8 ~
  4760.     (if (= (start_dialog) 1)           ; User pressed OK4 ]" X& Y" B+ S- K4 }: J( X" R/ V
  4761.       (cond
    2 F7 f# h2 }3 W% ]/ e
  4762.         ((= lt-idx nil)6 r- H8 {- e5 }. T  I' `
  4763.           (set_tile "t_ltype" "Varies")4 {2 q) ~  U% P2 H$ K: z. Z
  4764.           "Varies"
    $ F! \; Q) o& q1 D
  4765.         )& }4 f; e0 s" F3 R
  4766.         ((= lt-idx 0)# I3 a. q+ e! {& M  `5 p. u
  4767.           (set_tile "t_ltype" (bylayer_lt))! L! q9 _6 n( n& @- k% T
  4768.           "BYLAYER"
    ) |  T* E1 H* g9 w+ l, z6 m8 @* u  `: B
  4769.         )% M5 U/ ]0 M' Q5 p. E" o( C
  4770.         ((= lt-idx 1)5 H# m: [. [# y0 ~3 A
  4771.           (set_tile "t_ltype" "BYBLOCK")
    6 }) v' @# C( l* z# s) f' v
  4772.           "BYBLOCK", @9 f4 e% W7 u1 x( G+ n1 `
  4773.         )
    % P) r8 E* C9 o
  4774.         (T  + P4 c  W5 s. Y0 k1 N7 j: M
  4775.           (set_tile "t_ltype" ltname) 8 Y8 H+ ~% r7 ?8 |) F) j
  4776.           ltname
    : [- e- r7 S6 }' K  v4 B! O0 g3 {' Y
  4777.         ): k  p3 F* ?1 j1 X6 E, o
  4778.       )/ J5 `3 |# E+ X7 U
  4779.       eltype
    0 d$ s$ t, R6 y# n4 |
  4780.     )6 b5 |8 b  b, t1 v9 h4 Q" ?( K
  4781.   )
    ; U3 P. p: r# f$ Z# _) R
  4782.   ;;& M7 n# x) C; m0 K0 v* y; Z
  4783.   ;; Edit box entries end up here1 u5 k; e) C8 |$ n9 V; M2 E5 C
  4784.   ;;
    1 x3 Z$ I. Y% _9 v7 A
  4785.   (defun ltedit_act (ltvalue)# P. L1 B4 q* N- \3 s
  4786.     ;; If linetype name,is valid, then clear error string, , W! S7 P; d: D# O5 y; z5 o# m
  4787.     ;; call ltlist_act function, and change focus to list box.
    4 I/ H% }3 ]: M+ V2 D
  4788.     ;; Else print error message.5 z1 M6 Q5 @$ g/ R6 m
  4789.     (setq ltvalue (strcase ltvalue))
    $ T3 J/ T7 ^. I2 ?4 J- ~0 G
  4790.     (if (or (= ltvalue "BYLAYER") (= ltvalue "BY LAYER"))
    3 i# G0 G8 _) P: g4 g) }, l
  4791.       (setq ltvalue "BYLAYER")8 O0 o+ O$ Z& V. m
  4792.     )
    + Q1 B/ a  }) Z. r
  4793.     (if (or (= ltvalue "BYBLOCK") (= ltvalue "BY BLOCK"))
    % U( [' o* U. u8 p; P, l! P% V1 m- |
  4794.       (setq ltvalue "BYBLOCK")
    " f* N( m* G! c/ g
  4795.     )& Y1 Z" \& E. V' H; W# b) r
  4796.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    4 N* C6 h+ Y* W
  4797.       (progn7 Y: O5 ^" K# O8 ]  s
  4798.         (set_tile "error" "")3 Y- {/ n# V1 i; [% s5 v1 I1 g
  4799.         (ltlist_act (itoa lt-idx))
    ; w3 b1 w$ }" X# N
  4800.         (mode_tile "list_lt" 2)7 n: [9 b$ `! N+ k6 B/ X
  4801.       )
    - w; H' a/ K' ]; M
  4802.       (progn
    . L  r3 T# Z0 ]) _/ I/ w
  4803.         (if (/= ltvalue "VARIES"); c3 \( x0 m) m
  4804.           (set_tile "error" "Invalid linetype."); S! z  h6 i( X4 h2 j4 k( Z
  4805.         )# n2 V" ]( V5 r% m; u* Q* x
  4806.         (setq lt-idx old-idx)
    2 H, w$ |& O) d
  4807.       )
    / U' ^' Q+ y3 m( O7 I
  4808.     )
    2 h2 P/ }" Y4 V5 K  `  k. B. D6 s
  4809.   ). J( F# T) O* {. `5 ^0 f
  4810.   ;;
    + L1 J' x; y8 [7 K6 Q2 O5 e
  4811.   ;; List selections end up here; f( q3 M$ a. m( n. O/ e8 O& v! @
  4812.   ;;4 T$ P( f' U+ t* {) G8 E7 [4 j* W
  4813.   (defun ltlist_act (index / dashdata)7 O2 Q, r9 S. E3 Q
  4814.     ;; Update the list box, edit box, and color tile
    ( ~: v! Y2 L1 C" o4 a
  4815.     (set_tile "error" "")
    * A* V4 E# i% g/ l' V
  4816.     (setq lt-idx (atoi index))( U) ?% b. S6 J' H
  4817.     (setq ltname (nth lt-idx ltnmlst))
    - Q, {5 F* {2 j* g9 @& o
  4818.     (setq dashdata (nth lt-idx mdashlist)), J3 ^4 |# Y! S) `3 X) B4 ~  ^
  4819.     (col_tile "show_image" 0 dashdata)
    4 A$ e  Q6 Z# C! w; ^6 Q8 w
  4820.     (set_tile "list_lt" (itoa lt-idx))$ J4 P1 _& j/ P; [' Z; @: x
  4821.     (set_tile "edit_lt" ltname)0 [% A8 o( M( S2 V; k
  4822.   )
    # z3 Y, x# D1 S) f4 `+ x
  4823.   ;;
    & m1 U5 J* D& g8 a- u
  4824.   ;; Reset to original linetype when cancel it selected: l0 J. c6 Y' u* l" d
  4825.   ;;  z% J! g- D( l+ W; B# Z8 ]
  4826.   (defun reset-lt ()
    ; C6 d' H7 v5 }/ L4 I# X
  4827.     (setq lt-idx old-idx)
    4 q$ O* T. M7 J* L& R! D; v
  4828.     (done_dialog 0)
    . R, J: k& R! v( A' M
  4829.   )7 H- Q' Z% o: N
  4830.   ;;
    * q4 A% f( |" [% `+ {
  4831.   ;; This function pops a dialogue box consisting of a list box and edit box to
    7 M4 J5 X# T; j
  4832.   ;; allow the user to select or type a layer name.  It returns the layer name
      x9 a7 k8 G2 ]' o# W: l
  4833.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the
      Q' Q$ f3 s3 h  k: G5 Q& v
  4834.   ;; drawing.. ^# }6 }9 L0 {( q$ r- o- |, X
  4835.   ;;1 l8 Z( R' e$ f5 E; y
  4836.   (defun getlayer (/ old-idx layname on off frozth linetype colname)( F* G* t5 Q+ f# E+ c2 |) F
  4837.     ;; Load a dialogue from dialogue file, T2 U  d2 ?, M2 u  B9 t7 S
  4838.     (if (not (new_dialog "setlayer" dcl_id)) (exit)); j4 d9 J/ ~6 e# b, {; b0 T
  4839.     (start_list "list_lay")
    3 l8 E8 B3 `* q; R
  4840.     (mapcar 'add_list longlist)        ; initialize list box
    $ o& I) I# {% B$ g. n0 ^
  4841.     (end_list)
    ) {$ U6 M' I# F3 o2 L  l, h' J
  4842.     ;; Display current layer, show initial layer name in edit 2 u; c  K# w7 u7 k& [* `+ G: o
  4843.     ;; box, and highlight list box.7 k, B9 y$ w; S& E
  4844.     (setq old-idx lay-idx)1 |" C0 u- \# k" i
  4845.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))
    " j, V5 i# n. j2 l0 y: M
  4846.     (set_tile "cur_layer" (getvar "clayer"))
    8 i# ^- ]; p' Y1 E
  4847.     (action_tile "list_lay" "(laylist_act $value)"), |& o/ L% p) b6 i5 X
  4848.     (action_tile "edit_lay" "(layedit_act $value)")
    " ]7 K3 w' V% X8 o! ^. a
  4849.     (action_tile "accept" "(test-ok)")& H, Q- ]8 H* G  n
  4850.     (action_tile "cancel" "(reset-lay)")
    7 s9 L: [) z6 e% D
  4851.     (if (= (start_dialog) 1)           ; User pressed OK* n4 s3 @! F  J4 T9 q
  4852.       (progn& P6 ^' S5 _2 \( ?2 [
  4853.         (if (= lay-idx nil) (setq layname "Varies"))1 {" @6 `6 i) ?- d" c9 |) P
  4854.         (set_tile "t_layer" layname)
    ; J; q- ^7 K) _/ [  E; P0 D( P- P
  4855.         ; If layer or ltype equals bylayer reset their tiles
    ! D5 B7 T' T. ?, o
  4856.         (if (= lt-idx 0)
    / ^: B) j# _4 j
  4857.           (set_tile "t_ltype" (bylayer_lt))
    ( d8 w) B2 t, C, T  V! D
  4858.         )
    / O  `9 S; \3 G% U9 n: Y
  4859.         (if (= ecolor 256)
    3 s  g7 Q- K5 i- E
  4860.           (progn
    0 j% x; `3 D* f% x
  4861.             (set_tile "t_color" (bylayer_col))
    ( V! ]7 U7 a7 Q2 q- S4 p/ H
  4862.             (col_tile "show_image" cn nil)
    9 I" u& ^& O1 ?
  4863.           )! y! W9 I* n% Q
  4864.         )3 C" W$ f9 q/ Z8 R/ j" z% G
  4865.         layname7 ?8 o% Q  [+ E" y( ^  t
  4866.       )) d- w' ^: \; ]* Z8 k
  4867.       elayer
    0 F0 M6 |3 f# C  G, n
  4868.     )
    , P) E7 M7 I( ?$ o# h
  4869.   ); M: Q' g0 @+ m1 y9 M& Y0 b
  4870.   ;;
    ) p, Z! q9 k1 T* E% R
  4871.   ;; Edit box selections end up here% X# o/ e, G$ F' V: y  \: h7 V# v: e
  4872.   ;;
    2 ?: k1 B% {0 w) L
  4873.   (defun layedit_act (layvalue)1 I: x( U8 M; i/ C
  4874.     ;; Convert layer entry to upper case.  If layer name is" r4 ?+ @2 q" P8 f  y) C
  4875.     ;; valid, clear error string, call (laylist_act) function,5 a; E. l0 j+ Q5 s7 j
  4876.     ;; and change focus to list box.  Else print error message.* E$ b& P: E/ F5 M  o
  4877.     (setq layvalue (strcase layvalue)): K9 f9 P7 x* S' f; R
  4878.     (if (setq lay-idx (getindex layvalue laynmlst))
    4 K, B# p+ N8 O9 Q  g/ H1 R- {
  4879.       (progn8 W+ l; Q$ I9 p- [
  4880.         (set_tile "error" "")
    ! F: G1 q' E6 y0 j* s  Q
  4881.         (laylist_act (itoa lay-idx))5 a4 ?4 F) I  E4 l9 W
  4882.       )" q, v& U4 Z. d1 N) I0 v, [8 F
  4883.       (progn1 U# n: K) G4 F6 S, F
  4884.         (set_tile "error" "Invalid layer name.")
    , G1 l# y. G" x7 I: i. y. h4 b; R
  4885.         (setq lay-idx old-idx)
    ; h5 o- p/ G/ d
  4886.       ), H; b) T- {$ C  b0 M7 a
  4887.     )$ v( \! e3 O  x; k- S  j/ z4 f
  4888.   )
      E/ s& G  M6 z1 K
  4889.   ;;% H( f" k7 ?) @; d# K- O( m
  4890.   ;; List entry selections end up here* z9 O+ m0 W, q; u3 _* T) H: L  O0 |
  4891.   ;;/ _/ d' q9 R6 D$ v: i
  4892.   (defun laylist_act (index / layinfo color dashdata)0 K4 ^9 p, ~+ d* @1 l
  4893.     ;; Update the list box, edit box, and color tile5 }! s! I$ f  w+ c  g9 ?" r
  4894.     (set_tile "error" "")1 G. U/ K+ o. e0 {+ ]: v
  4895.     (setq lay-idx (atoi index))
    3 W. @' ~4 k8 ^  c6 ~
  4896.     (setq layname (nth lay-idx laynmlst))
    , a" Q5 g( _/ A  M
  4897.     (setq layinfo (tblsearch "layer" layname))! O  A4 z. ^' B  c, R# [' b
  4898.     (if (= (logand (cdr (assoc 70 layinfo)) 4) 4)1 z/ M$ p3 w9 z) @: A0 f8 }, ~
  4899.       (set_tile "error" "Cannot change entity to locked layer.")  T& n; S9 G' f) Z$ O) n# n
  4900.       (progn% {$ K7 B# [7 l( g! T" F% |
  4901.         (setq color (cdr (assoc 62 layinfo)))% M$ n7 j7 N& y4 Z* n2 U
  4902.         (setq color (abs color))# t' P! p& u: Q0 X1 D" h' H
  4903.         (setq colname (colorname color))! w  d/ k& K, `) \0 q1 C
  4904.         (set_tile "list_lay" (itoa lay-idx))
    ! w9 ]" \' J4 v1 L# ?
  4905.         (set_tile "edit_lay" layname)
    # U* P* X% E5 B2 |" H4 m9 X  J
  4906.         (mode_tile "list_lay" 2)4 D0 m: U; c5 I) U3 b
  4907.       )
    ( `0 z0 v  r% t3 V# I$ S
  4908.     )
    ( R+ y+ u) j" ~( O$ v# f
  4909.   )
    " s, s/ c6 T6 @7 ^
  4910.   ;;8 Y+ N7 Y7 h7 i
  4911.   ;; Reset to original layer when cancel is selected) [+ ^- F  F4 T* ~& z8 J% M
  4912.   ;;
    7 b; s* Z. K$ E& s+ C4 g
  4913.   (defun reset-lay ()
    , a+ h. ]( [3 J1 X( f2 p5 i7 [9 e
  4914.     (setq lay-idx old-idx)
    6 l. t' w6 h, e) ^3 ^/ p
  4915.     (done_dialog 0)
    8 O6 y# W; Q  b. P7 A
  4916.   )
    ) Y: D& W0 `$ v1 n* ]; @9 n
  4917.   ;;
    2 \$ l/ @  U8 C) O0 r; V: B
  4918.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a 5 B2 y  y. g& v2 Y1 U9 O; G% a
  4919.   ;; string can't be converted to a real, this routine checks if the first
      H% g0 p  I4 i
  4920.   ;; character is "0".  It also checks to see if the value equals "Varies".1 N7 J- V5 d' W$ K
  4921.   ;;
    ; T' y3 X# `" U/ f5 g/ l
  4922.   (defun getthickness (value)& F/ k# x' _/ Y6 C
  4923.     (setq value (strcase value))0 r' u  h4 U, |
  4924.     (if (or (= value "VARIES")# h5 g( G) j* {& w7 N) i
  4925.             (distof value)
    , d! `+ I& `( |% o
  4926.         )
    ' Q/ ]$ \/ ?8 f. u/ h' U0 {
  4927.       (progn$ v5 \- s; |" D8 F5 z
  4928.         (set_tile "error" "")
    5 A: Z9 c- }+ {, J4 m+ T3 {
  4929.         (if (= value "VARIES")" _/ M' v" j# w4 m
  4930.           (progn! g1 ?; `( y! g. M: m+ B* w( ^
  4931.             (set_tile "eb_thickness" "Varies")
    / A8 h9 s% c4 g( ]9 \. g9 z
  4932.             (setq ethickness nil)2 M! x0 |6 G6 W, O1 n
  4933.           )
    # X9 p5 q- _) H
  4934.           (progn
    7 x1 o' h! G; w; F8 B* O: k2 E
  4935.             (setq ethickness (distof value))+ S4 q" G# ~) N0 z3 [) o
  4936.             (set_tile "eb_thickness" (rtos ethickness))
    9 o4 i+ ?$ N' P8 D& u) q) `* `+ L0 l
  4937.             ethickness7 P* E5 i, b* l7 Z+ h* x: r+ i
  4938.           )& P. v" ]- ?( J2 D& e: e+ C
  4939.         )
    2 F0 L. x8 E& Z! L; s1 _+ S
  4940.       )
    9 K7 C+ x& T9 A
  4941.       (progn- e$ R6 [$ a: h" E9 M: V
  4942.         (set_tile "error" "Invalid thickness.")! D* [( ~/ U. [' x  `( g3 O& d
  4943.         nil6 S9 X1 J6 v! f. p% M' l
  4944.       )
    1 ~  k, H( x) X) @% `( ~
  4945.     )
    $ `  n) v" z; N4 L, H' A3 _
  4946.   )( b) s; _4 \9 p* {6 W
  4947.   ;;
    3 X7 p- C" p0 P6 x6 ~# T: ]$ j
  4948.   ;; This function make a list called laynmlst which consists of all the layer
    ( P; C: ^  y# T' q3 @3 ?4 ~1 A
  4949.   ;; names in the drawing.  It also creates a list called longlist which 1 P9 }7 g* Z! v  E
  4950.   ;; consists of strings which contain the layer name, color, linetype, etc.  1 p1 @1 G  g$ t
  4951.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    ' N7 q* W" z- X4 e9 Y# Z" u
  4952.   ;; same.
    : g+ Q* B6 k( E( Q  c2 M
  4953.   ;;
    . u& T/ E; C% O0 i2 I  w
  4954.   (defun makelaylists (/ layname onoff frozth color linetype vpf vpn ss cvpname " b" Y2 C; J' B0 T. h
  4955.                          xdlist vpldata sortlist name templist bit-70* ?1 z1 M7 G. y
  4956.                       )
    4 e  |% G* ~2 Q( q
  4957.     (if (= (setq tilemode (getvar "tilemode")) 0)
    2 s  Y8 }# Z4 M$ C) p. g/ }
  4958.       (progn# n% F1 V% C7 j$ B
  4959.         (setq ss (ssget "x" (list (cons 0 "VIEWPORT")8 L8 T* n2 }- B1 ~; ^
  4960.                                   (cons 69 (getvar "CVPORT"))+ P3 o  |% F* j( R7 Z1 a+ l; A; y9 G
  4961.                             )4 O+ U5 U5 K) t% L( d5 N# t3 P
  4962.                  )0 j4 }  ]$ ~2 e- @  x. C: J
  4963.         )     4 r5 {' ^( w& v" ]2 `% {
  4964.         (setq cvpname (ssname ss 0))
    7 G6 I# t8 M) \5 `, m: j+ B8 Y
  4965.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))
    8 T# J8 t, Z, o# A
  4966.         (setq vpldata (cdadr xdlist)). Y! ^+ `% q* d" a0 E' t
  4967.       )
    ' X4 |* u- k% ~+ x/ O+ }4 Q$ Y
  4968.     )
    3 s/ D- W: u( a# L6 u9 E4 X8 q  U
  4969.     (setq sortlist nil)- s/ u( b8 J2 d: b1 N1 Z
  4970.     (setq templist (tblnext "LAYER" T))
    ( f  y/ F  b% G9 F' W; i
  4971.     (while templist# c2 Z. _8 i  l. k6 T
  4972.       (setq name (cdr (assoc 2 templist)))" S# w& v: ~$ }. u( M
  4973.       (setq sortlist (cons name sortlist))& W( A2 q5 o/ E( e8 D
  4974.       (setq templist (tblnext "LAYER"))
    + t8 `2 q: H* u- j' u
  4975.     ) 6 F- [% \8 A8 V0 s3 ]
  4976.     (if (>= (getvar "maxsort") (length sortlist))
    & G; \: H) L  }, l- o& r
  4977.       (setq sortlist (acad_strlsort sortlist))
    3 h# Z& }$ i# E. [
  4978.       (setq sortlist (reverse sortlist))
    / }9 |. `" T9 M
  4979.     )( F: t+ X: H* S, B: g  }
  4980.     (setq laynmlst sortlist)2 k4 ], k( o& H
  4981.     (setq longlist nil)
    ; |- u5 L4 W+ z* b3 G/ q0 J% a
  4982.     (setq layname (car sortlist)), z: o5 M: s, _5 T1 ?
  4983.     (while layname
    $ y% u$ @1 @( s$ m! |8 _. g* X, U
  4984.       (setq laylist (tblsearch "LAYER" layname))( O$ S: e- E# n7 h" ?7 v
  4985.       (setq color (cdr (assoc 62 laylist)))6 f! c" W  v7 d9 @" ~
  4986.       (if (minusp color)/ y$ u- g) F/ r' {* ^6 T5 ^) L8 f
  4987.         (setq onoff ".")- k9 E9 M1 M2 s, j, w
  4988.         (setq onoff "On")
    % y$ H; q$ ^2 D
  4989.       )8 d5 j# ~5 D# j( b
  4990.       (setq color (abs color))/ Z& o( v8 {( a1 ~+ K! s
  4991.       (setq colname (colorname color))
    . }5 S: ~1 S- h: O4 }+ s
  4992.       (setq bit-70 (cdr (assoc 70 laylist)))
    ' }# Q% @7 p+ t
  4993.       (if (= (logand bit-70 1) 1)2 ?0 s1 U% @9 \
  4994.         (setq frozth "F" fchk laylist)
    7 [- L: }, M# f9 `. k
  4995.         (setq frozth ".")
    " G" l% v: R9 A* @3 Q
  4996.       )
    $ q9 c6 j7 N+ i
  4997.       (if (= (logand bit-70 2) 2)
    " r9 F$ s6 p. X  v2 D3 k
  4998.         (setq vpn "N")
    0 m! R4 P7 H" @7 Q% w. `( q# G6 u! n
  4999.         (setq vpn ".")- T3 Q+ Z8 n1 W9 W9 n$ N
  5000.       )4 B) \2 u4 i4 ~( F! ~" `6 J8 ~
  5001.       (if (= (logand bit-70 4) 4)
    , n# t/ f2 x/ E  N- y( }1 ^
  5002.         (setq lock "L")
    6 U4 Y7 W" T& a' h( B8 i4 s
  5003.         (setq lock ".")) B5 Z; `5 o3 Q2 A% k- v5 r
  5004.       )
    * u6 `. k9 g! A0 a# ?. t' `
  5005.       (setq linetype (cdr (assoc 6 laylist)))9 R! x4 w2 H# I
  5006.       (setq layname (substr layname 1 31))
    8 Q: r+ m- f/ T% X6 Z# V6 e& G$ T
  5007.       (if (= tilemode 0): G+ v# q* R* ]6 E9 P- V; Z" u
  5008.         (progn
    " t  b# o8 @. t5 b% C
  5009.           (if (member (cons 1003 layname) vpldata)* D& T# m% n$ ^' b
  5010.             (setq vpf "C")
    / T; I0 h( b  \: b& v
  5011.             (setq vpf ".")/ d$ V3 F( H/ @5 L
  5012.           )
    ' X$ u% `( r# l& ?7 N) ~
  5013.         )8 H/ j- J6 {4 ?$ Q4 D
  5014.         (setq vpf "."). R/ @3 e" ]% a- t
  5015.       )- u& v' H" ]/ q! t3 z
  5016.       (setq ltabstr (strcat layname "\t"
    $ S4 L+ H/ h& L% T
  5017.                               onoff "\t"
    % D8 L) o3 v+ g
  5018.                              frozth "\t"
    - `7 u8 s+ J$ l; I
  5019.                                lock "\t"
    / D) a7 ?6 N  T  b# L1 @, p" y" s
  5020.                                 vpf "\t"9 O+ t! V$ i) f5 T4 w
  5021.                                 vpn "\t"
    ) O( {% n% {' _% |7 {  ^9 u- h" u: q
  5022.                             colname "\t"6 ?% G4 ^, P- s# g' E4 [
  5023.                            linetype% o. J2 }  D. Q5 Y2 T, q8 i
  5024.                     )" [+ v8 E0 G8 \2 a% T: y
  5025.       )
    # J% w8 S$ Y6 `& u
  5026.       (setq longlist (append longlist (list ltabstr)))0 y' v1 x  ^( W% C
  5027.       (setq sortlist (cdr sortlist))
    - r2 y, i& t2 a! g8 N% P
  5028.       (setq layname (car sortlist))9 F5 \/ s. A7 [& {' t
  5029.     )
    5 B0 y& T: m8 T6 f1 K% Z
  5030.   )% u" J6 q: X, e' ]
  5031.   ;;+ }+ |0 i8 r' ^
  5032.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of
    " K6 p; d( Y0 p) W
  5033.   ;; linetype names read from the symbol table.  Mdashlist is list consisting
    + s. B- f% o( n  ^" k
  5034.   ;; of lists which define the linetype pattern - numbers that indicate dots, * O4 F4 B: A5 X
  5035.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    : b7 e+ F* s5 k4 ]5 g8 i6 y5 ?. a6 B
  5036.   ;; order of names in ltnmlst.  V" M1 w" f6 @  Z! I
  5037.   ;;/ C. r- H0 |7 @) U' o/ v+ L
  5038.   (defun makeltlists (/ ltlist ltname)6 D6 g) x; u+ U. R6 [
  5039.     (setq mdashlist nil)
    2 Y, D* M( u, C: \9 h0 t- }" t
  5040.     (setq ltlist (tblnext "LTYPE" T))7 N& p$ c& ?& o
  5041.     (setq ltname (cdr (assoc 2 ltlist)))
    3 A2 n7 Z, i9 w) p
  5042.     (setq ltnmlst (list ltname))
    % J6 @) p( N+ G/ y) v% h2 ?

  5043. 9 }, p& w$ g: Q; f
  5044.     (if (= ltname "CONTINUOUS")
    6 u8 {; k- E  }- \& x9 v1 `
  5045.       (setq mdashlist (list "CONT"))
    " k& p' i+ |* p9 Y" f
  5046.       (setq mdashlist & p' X) d. H+ K5 }& y/ r$ _6 f7 M
  5047.             (append mdashlist (list (add-mdash ltlist)))) T$ w  C) j% |; r8 ~- ^
  5048.       )
      H. p3 A+ n9 i7 {! P8 H4 i
  5049.     )/ P. e: I% l3 J0 S% o
  5050.     (while (setq ltlist (tblnext "LTYPE"))
    ( _  g/ D: G5 u5 h4 D- K
  5051.            (setq ltname (cdr (assoc 2 ltlist)))
    - {, U' O" L' I( [' f# W
  5052.            (setq ltnmlst (append ltnmlst (list ltname))), p5 W* l" h, J
  5053.            (setq mdashlist
    / p6 a/ f! ]. [% @& t, E8 v$ F7 h# I8 w
  5054.                 (append mdashlist (list (add-mdash ltlist)))) w/ W; P" ?* Y2 t1 h" B
  5055.            )
    2 [% U: o6 |* E+ S. G8 c4 x/ m
  5056.     )
    ' T* V! h8 Y( O" n
  5057.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    5 {/ O' y3 l  o& l' O8 d
  5058.     (setq mdashlist  (cons nil mdashlist))
    3 ?. n8 Q. o7 U+ s% A  z
  5059.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    $ @7 f; L: B/ G6 c& W) y# E1 R
  5060.     (setq mdashlist  (cons nil mdashlist))- m! i1 v5 K6 g1 p# m$ i  I  ^
  5061.   )) T  s$ v4 y0 Z8 D* s
  5062.   ;;! F5 B8 o* o9 l8 n' k! p
  5063.   ;; Get all the group code 49 values for a linetype and put them in a list - l6 D, C% Z, H9 V3 x0 H, w
  5064.   ;; (pen-up, pen-down info); r! r" D5 K- @: t( f- }
  5065.   ;;
    $ I- I, S+ I9 J$ g$ F4 F$ B
  5066.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)+ m$ o% v2 I  {& }3 k
  5067.     (setq dashlist nil)! J( C2 x2 n9 y! H5 q3 V
  5068.     (while (setq assoclist (car ltlist1))
    1 p; s! e" z2 s* U$ Q7 T
  5069.       (if (= (car assoclist) 49)
    " c, }: G1 _0 |
  5070.         (progn
    ) i; ^" e( u' f5 a. _( q' N% n+ P
  5071.           (setq dashsize (cdr assoclist))
    3 q- \1 g, d: b3 q+ R7 [* {9 K
  5072.           (setq dashlist (cons dashsize dashlist))5 z, U3 x. y9 P- w) C5 ^
  5073.         )
    ; ^( {; Z5 l, ^# I: L8 N/ |
  5074.       )0 n+ N9 h5 t& ?+ x3 l" w
  5075.       (setq ltlist1 (cdr ltlist1))* J9 ], v4 _+ b% E
  5076.     )
    : O0 E* Y3 T; k8 n) H3 L" S; x
  5077.     (setq dashlist (reverse dashlist))
    7 F$ T9 y2 s8 S8 Z' N! L7 v8 U
  5078.   )1 |6 H- E# S: ]; g5 W
  5079.   ;;/ L8 ?( ?2 }3 Q- C! [8 W
  5080.   ;; Color a tile, draw linetype, and draw a border around it
    2 X7 q- C" b( D7 Q8 G+ |. G
  5081.   ;;
    1 o. W& m- }. j! n$ L
  5082.   (defun col_tile (tile color patlist / x y)
    3 p+ f$ y/ P0 e
  5083.     (setq x (dimx_tile tile))  h" H# D) t1 F; g
  5084.     (setq y (dimy_tile tile))# `! N% D% ~. Y% a! C  D
  5085.     (start_image tile)
    3 R6 t, S" ~: ~, a  b* L2 L
  5086.     (fill_image 0 0 x y color)) {( w/ f. f* z) }
  5087.     (if (= color 7)0 _2 s/ i: c4 [; ]; [
  5088.       (progn
    5 x4 r7 B* p3 U2 N8 V4 k3 G
  5089.         (if patlist (drawpattern x (/ y 2) patlist 0))& h7 K- N! _- h! ?* @: m
  5090.         (tile_rect 0 0 x y 0)
    : s/ H9 o' m7 t0 P
  5091.       )
    + h% }7 k$ [" M' {
  5092.       (progn9 h; D4 ?& M/ h; J  x- }3 ^
  5093.         (if patlist (drawpattern x (/ y 2) patlist 7))
    2 T' s5 _, r; v: H& d# D4 e
  5094.         (tile_rect 0 0 x y 7)- Z% ^' o7 n) k5 M6 ^% Y. D% s8 v
  5095.       )6 m  M4 @+ h5 j
  5096.     )0 Q  Q; C& |  }% x7 t" @/ v
  5097.     (end_image): Y; \) ?: V# ~  v7 w8 ~
  5098.   )
    , N3 D1 ^/ ]1 U9 R+ o- K
  5099.   ;;# \! P4 Z8 g, ?/ h
  5100.   ;; Draw a border around a tile$ P, R( e' E" @8 ]  q# l/ G  _
  5101.   ;;
    ! k  X7 v% Y- ]+ K6 r2 t0 W
  5102.   (defun tile_rect (x1 y1 x2 y2 color)# p0 E( n( e4 z8 n$ M' X) ]
  5103.     (setq x2 (- x2 1))+ h- p2 D' G9 T' v; T; {; X( N. G% l
  5104.     (setq y2 (- y2 1))
    + @$ N! u- d/ @4 ]& l( v
  5105.     (vector_image x1 y1 x2 y1 color)
    1 N% W# {1 G: \' v
  5106.     (vector_image x2 y1 x2 y2 color)
    5 V' r7 |% q( U9 Q' f0 @! k
  5107.     (vector_image x2 y2 x1 y2 color)' `  y$ }. n  _4 T, R
  5108.     (vector_image x1 y2 x1 y1 color)
    ' c5 T8 I, o4 }* ?. V
  5109.   )) t5 w' V( z0 ^
  5110.   ;;
    2 o4 _3 L) |" j' e& H
  5111.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image 1 }6 @- q9 L6 t0 {' K2 U# l
  5112.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a 2 q0 N7 V+ w" v
  5113.   ;; list of numbers that define the linetype, and color is the color of the & s1 x% [) S; p5 ~
  5114.   ;; tile.
    / N. i2 x4 ]9 r
  5115.   ;;
    ; T! L1 m& n$ s& E
  5116.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    0 B. K) Z7 ]+ e3 z2 {! h( X
  5117.                       patlist dash): q# V0 E5 s, d$ C; `. n) _
  5118.     (setq x1 0 x2 0)
    % `9 }; K& g" W5 C7 T; {
  5119.     (setq patlist pattern)5 N; f+ |0 N; V
  5120.     (if (= patlist "CONT")) M5 P  `) M9 }- t6 u
  5121.       (progn
    * C( t! O8 }1 p0 Q. k
  5122.         (setq dash boxlength)  K# D; ]; u2 V% H2 G6 h
  5123.         (vi)
    $ ~. G/ X7 B1 s( h
  5124.         (setq x1 boxlength)
    . E# ]# c" a1 t; U2 E
  5125.       )
    . [# i1 A4 W9 _7 x9 |  u% z
  5126.     )5 g8 h/ X8 s1 C: o/ W
  5127.     (while (< x1 boxlength)0 a9 p; R" F5 m
  5128.       (if (setq dash (car patlist)). s! Z  Y  U! r+ Q
  5129.         (progn5 Z. _% w# L$ q0 ?8 E
  5130.           (setq dash (fix (* 30 dash)))
    . z. f/ O$ t8 X& K2 J
  5131.           (cond
    % ^# @  v( I, @# _1 O+ O' n
  5132.             ((= dash 0)
    ! S1 f2 Q+ n2 a# W) k; a
  5133.               (setq dash 1)
    & O* B, L6 z. U  w
  5134.               (vi)
    . g% \/ ~7 }) e& j
  5135.             )
    ; z/ x% L% s$ V1 x  j
  5136.             ((> dash 0) , g3 I4 k! C$ u8 |
  5137.               (vi)
    $ ?3 |, T1 O) R- V, G6 O: U7 ?
  5138.             )$ N* o5 U8 y6 J! P
  5139.             (T
    ) h3 L3 e4 u2 d5 U
  5140.               (if (< (abs dash) 2) (setq dash 2))
    & h; r; M, i( l- p  N8 X$ K
  5141.               (setq x2 (+ x2 (abs dash))). z9 `$ N2 ~. l. n3 G. V
  5142.             )" {' R! V+ ^4 u* I' ]7 G$ G! M5 m
  5143.           )+ Q; a) l) d+ i7 N
  5144.           (setq patlist (cdr patlist))$ ~: A- \) n2 r! U
  5145.           (setq x1 x2)
    0 U, Q8 @( p. A. m
  5146.         )3 ]( {  n6 w( w4 ]# {6 R
  5147.         (setq patlist pattern)2 G" {* _6 Y, @  X" U
  5148.       )2 t, e0 [. a" o& A
  5149.     )
    ; n  j4 A3 @4 P. G5 \
  5150.   )3 m& f% z# I/ y
  5151.   ;;# P/ V# E0 W& c5 x3 i: F
  5152.   ;; Draw a dash or dot in image tile
    . n* T* `+ B7 g; c8 K
  5153.   ;;1 ]% y0 V% _' b5 S4 O, r6 R( N$ U
  5154.   (defun vi ()9 N. ~: r1 [9 b" o% X( X1 s# b( g5 o
  5155.     (setq x2 (+ x2 dash))
    & I9 D. `4 a# i5 l
  5156.     (vector_image x1 y2 x2 y2 color)
    1 U+ v9 Q3 w& a' F& w: P0 C, A4 ~
  5157.   )7 f/ D; U# u: U( n
  5158.   ;;/ l2 ^! q1 C' _
  5159.   ;; This function takes a selection and returns a list of the color, linetype, ' O2 |  U0 C/ t5 `
  5160.   ;; layer, and thickness properties that are common to every entities in the8 k3 S: Z0 D% e- s4 Y& X
  5161.   ;; selection set - (color linetype layer thickness).  If all entities do not : `( s; k0 T6 M5 g* C
  5162.   ;; share the same property value it returns "Varies" in place of the 5 }* n" {; D$ Y. `
  5163.   ;; property value.  i.e. ("BYLAYER" "DASHED" "Varies" 0)5 S/ Q9 `' D3 a) F7 I9 @
  5164.   ;;
    9 m; z! U0 Y9 T( h2 n
  5165.   (defun getprops (selset / sslen elist color ltype layer
    ; F% S7 x; f7 }/ L3 L. t' Z
  5166.                             thickness go chk-col chk-lt chk-lay chk-th ctr)  ~3 @; h7 W, |  a2 A$ A
  5167.     (setq sslen (sslength selset))
    9 f1 R( a' i: P) ^9 ~: w
  5168.     (setq elist (entget (ssname selset 0)))/ u" x: n# f3 d  c2 g+ s: k4 y
  5169.     (setq color (cdr (assoc 62 elist)))
    4 R. F) ~5 Z2 D/ H* T
  5170.     (if (not color) (setq color 256))
    & w- x5 [: b4 d. ], \
  5171.     (setq ltype (cdr (assoc 6 elist)))) s' J; b: P/ ]" m3 a, o, U
  5172.     (if (not ltype) (setq ltype "BYLAYER"))
    $ o% C1 P6 u" U3 ]& v
  5173.     (setq layer (cdr (assoc 8 elist)))5 s# o" }4 Z7 H9 B# \0 o
  5174.     (setq thickness (cdr (assoc 39 elist)))1 [& T1 W+ ?# Z: s4 W
  5175.     (if (not thickness) (setq thickness 0)). I$ u$ L0 l. [. R8 n# N
  5176.     (setq go T chk-col T chk-lt T chk-lay T chk-th T ctr 1)
    0 n1 B" h- d' [  z

  5177. & e3 q; [4 z% A- g4 U) }
  5178.     ;; Page through the selection set.  When a property' B/ i* J3 J: i2 v
  5179.     ;; does not match, stop checking for that property.1 n9 Y4 x3 m) ]9 z. F" E
  5180.     ;; If all properties vary, stop paging.
    * Z# x! C2 l) `3 c# B6 O
  5181. 0 ]8 f) ~% g3 R9 J) N* N# x
  5182.     (while (and (> sslen ctr) go)5 V" L$ W  U' T6 k/ q
  5183.       (setq elist (entget (setq en (ssname selset ctr))))
    ; e& p. i  l2 z# {
  5184.       (if chk-col (match-col))
    " y- v$ j1 o' s3 R
  5185.       (if chk-lt (match-lt))$ |' D# X& Q( T6 v
  5186.       (if chk-lay (match-lay))0 E  X' F3 R4 \# T" R" V9 I2 L( p
  5187.       (if chk-th (match-th))
    . S. n+ y% ]# k& O
  5188.       (setq ctr (1+ ctr))
    . N) ~# t% A5 [& e/ K' t0 `2 c
  5189.       (if (and (not chk-col) (not chk-lt) (not chk-lay) (not chk-th))
    . d. D0 Z/ W8 ^; }; B/ R$ x- G& P' Z; f
  5190.         (setq go nil)- L8 J0 J' \. b. H: {, s# F
  5191.       )+ Y* Z+ e. n1 c# H( I3 E- p
  5192.     )
    1 H- H+ k5 V% r9 U
  5193.     (list color ltype layer thickness)
    # R$ }' [+ I& A: y# L0 Q
  5194.   )$ ~5 D; _6 P) \+ ?7 o. o/ w

  5195.   N& }- R/ J# O3 ]. Q) `
  5196.   (defun match-col (/ ncolor)/ W5 O, j/ ]; W' h$ b' t# L
  5197.     (setq ncolor (cdr (assoc 62 elist)))
    1 U: p! l0 f* r: T- Y! U
  5198.     (if (not ncolor) (setq ncolor 256))
    ! P) U1 r8 i7 M
  5199.     (if (/= color ncolor)
    # W6 C& R6 |3 V2 N+ ]* R' \" {
  5200.       (progn
    " K5 G8 t3 \0 u2 C3 o" n
  5201.         (setq chk-col nil)
    - L: r/ J- E' ?% \2 Q
  5202.         (setq color nil)* a1 r% S1 H4 ~: t* e
  5203.       )
    0 @2 K* O3 F6 c1 T7 K) L: u8 i$ S
  5204.     )5 b! V* B5 \; i8 n5 Q
  5205.   )& G6 I% c$ t, B  X" k
  5206. 1 s* M  P3 I& @2 @& {
  5207.   (defun match-lt (/ nltype)8 p" e0 U5 \! o
  5208.     (setq nltype (cdr (assoc 6 elist)))
    & ^0 {: R, a: K4 n" ?
  5209.     (if (not nltype) (setq nltype "BYLAYER"))
    3 L* j8 W6 y- x* _9 r+ U- ?
  5210.     (if (/= ltype nltype)
    - h, ]3 w7 R- u( `: F
  5211.       (progn
    ; h; C6 a/ e8 S4 l0 P# N
  5212.         (setq chk-lt nil)
    ! W' M5 X7 t0 i* `/ C
  5213.         (setq ltype "Varies")2 ~3 r7 K8 d" m, h5 _1 o' y
  5214.       )
    # c! v8 E/ a/ _3 Z4 }- Y  S+ Q+ b
  5215.     )4 \/ F6 J+ M. s7 J
  5216.   )' I6 F+ E5 u, S' s. _% a* z
  5217. ! G; S2 K" f( B$ d' ~$ U# `4 k
  5218.   (defun match-lay (/ nlayer), _6 z/ D" j# x/ b' q; w
  5219.     (setq nlayer (cdr (assoc 8 elist)))3 h6 h& v4 J$ k: q0 H
  5220.     (if (/= layer nlayer)
    ! s; c' ?2 b. W+ r4 \+ x
  5221.       (progn& q: q. Q5 @% N! o' p
  5222.         (setq chk-lay nil)# B- q. s" U: g; Y& ?2 _+ ?
  5223.         (setq layer "Varies")
    4 _  F( N) [& X- X1 m! h
  5224.       )0 A/ ?2 n: l1 `7 ?
  5225.     )
    4 M' d: z  ]: Y! \0 ?# \8 J/ Q
  5226.   )
    8 j0 i, s* k: z3 w
  5227. : ]4 b  n) g! M- z
  5228.   (defun match-th (/ nthickness)
    ) f' C, V  z$ r. B' l
  5229.     (setq nthickness (cdr (assoc 39 elist)))# f6 p& Z! g- q* ?# `4 ?# \0 h
  5230.     (if (not nthickness) (setq nthickness 0))
    9 f, d* ]; |3 A
  5231.     (if (/= thickness nthickness)
    % o6 ~* g# w: |1 _4 I
  5232.       (progn
    & G' ]" S6 J0 n2 A9 o
  5233.         (setq chk-th nil)- Z) A" X/ k/ `
  5234.         (setq thickness "Varies")
    8 X8 m- u) e) o- e, Q! P
  5235.       )! T" m! K8 S3 g
  5236.     )
    & W2 Y2 H/ m% a* h- a4 `: p
  5237.   )
    & G* ~9 ?1 c3 ]9 s. J% }- H# W  {

  5238. * s# x3 {7 b3 o2 F% V# v3 ?
  5239.   ;;: I8 e3 W5 X% ?- j  O) J
  5240.   ;; If an item is a member of the list, then return its index number, else
    / ]2 j# b: E/ h- p4 W; X
  5241.   ;; return nil.
    / L0 h3 }* n! Y% F; T7 ]
  5242.   ;;( A# w$ Y0 l% r0 U; U3 u
  5243.   (defun getindex (item itemlist / m n)+ u* ?" P9 B& g2 Q5 s# I4 m2 m
  5244.     (setq n (length itemlist))
    1 w' W9 p8 T3 |$ R+ l; D
  5245.     (if (> (setq m (length (member item itemlist))) 0)
    ) t! w* a( x  E" f
  5246.         (- n m)
    ! i5 t0 M* J! u, Q( T
  5247.         nil  B; D0 e2 S% X8 M% ?* J) t6 C
  5248.     )" S2 t  ?9 t% U) x& @2 P  {+ C3 U
  5249.   )' J3 r' K6 C- z
  5250.   ;;4 D$ v) \: s$ o# \3 U$ q# c% q
  5251.   ;; This function is called if the linetype is set "BYLAYER". It finds the / e: K0 I0 P2 I. N
  5252.   ;; ltype of the layer so it can be displayed beside the linetype button.4 {3 c2 R& p1 v
  5253.   ;;
    3 {( ?5 Q, d: g+ b% u7 K4 e
  5254.   (defun bylayer_lt (/ layname layinfo ltype)
    * z; I' Q4 c: U7 i4 ~0 }
  5255.     (if lay-idx
    + ]( s. s# l4 w
  5256.       (progn  o; v- O4 e  o3 }
  5257.         (setq layname (nth lay-idx laynmlst))0 O4 w* m% R# L% G4 z4 T+ b" V% C
  5258.         (setq layinfo (tblsearch "layer" layname))
    : t5 T+ |* f7 N6 v( m5 h+ A
  5259.         (setq ltype (cdr (assoc 6 layinfo)))# R' Z6 q3 L# A5 g; W+ N9 p9 y" X
  5260.         (strcat "BYLAYER (" ltype ")")
    * _" \. C* M; T3 R4 i
  5261.       )+ P4 s: ~$ V( n
  5262.       "BYLAYER"8 B/ \  W$ A% ^4 G; I
  5263.     )
    5 e' q* r5 o8 s* M
  5264.   )
    3 m1 }0 ~) L  D  U2 _
  5265.   ;;
    ( p$ V/ g( i8 k0 j
  5266.   ;; This function is called if the color is set "BYLAYER".  It finds the 3 i, x1 u+ J% H* |
  5267.   ;; color of the layer so it can be displayed  beside the color button.
    - ?1 R- Y' _! K  l% y2 w% g
  5268.   ;;
    9 w; w$ [* S* Z( M; ?& f* S3 n
  5269.   (defun bylayer_col (/ layname layinfo color)
    6 l1 P9 z' j+ E* B! }+ K* h
  5270.     (if lay-idx
    , }; o2 ~. f$ s5 Q7 y
  5271.       (progn
    , \& E( _8 d1 X% l
  5272.         (setq layname (nth lay-idx laynmlst)). }: c4 u: Y, l, ^5 ]
  5273.         (setq layinfo (tblsearch "layer" layname))
    + u$ r1 H* A8 e8 g3 x* e. s# n/ s+ H  A
  5274.         (setq color (abs (cdr (assoc 62 layinfo))))
    * W8 T1 H" C& `) R) n4 n
  5275.         (setq cn color)% I; y+ S  l% l2 X
  5276.         (strcat "BYLAYER (" (colorname color) ")"), `5 a: Z7 G% k. q
  5277.       )/ Z3 O6 X0 z! j1 D1 W- [
  5278.       (progn" p: c7 {  n4 r
  5279.         (setq cn 0)
    " W$ z5 E9 F# T& g% ^
  5280.         "BYLAYER"! O% |( P7 u9 [1 `
  5281.       )6 p& t" p9 M) u! L) s
  5282.     )
    2 q) H4 B% s! `* K: l
  5283.   )2 e) S$ i5 J/ \# f1 e0 e# H
  5284.   ;;: G$ k# {" V  J$ P* i% s* d# x
  5285.   ;; If there is no error message, then close the dialogue2 ~' c6 S9 ?& B% z  A
  5286.   ;;
    1 L6 G; f8 d* q! D/ i1 B: J* o
  5287.   ;; If there is an error message, then set focus to the tile
    4 h" D* X9 P0 u" f# h
  5288.   ;; that's associated with the error message.6 o  ~- Z5 k- K
  5289.   ;;0 @& l  d0 ~8 J) ]$ [$ @
  5290.   (defun test-ok ( / errtile); Y9 P/ @# l9 T7 p# Z
  5291.     (setq errtile (get_tile "error"))5 M3 \: L8 ~* L' E& }
  5292.     (cond' d) I% y* u: H% X: Y: R, u
  5293.       (  (= errtile "")
    * R& C2 Y6 l; x( Y5 ^
  5294.          (done_dialog 1))
    1 R; K2 J' s3 ~2 v  ?
  5295.       (  (= errtile "Invalid thickness.")1 X3 H; }+ j8 g; y
  5296.          (mode_tile "eb_thickness" 2))
    4 m1 M6 b8 s1 T
  5297.     )
    # G+ \5 O' r/ q$ D( {
  5298.   )1 ~( O+ U% }' p- v
  5299.   ;;
    : Q5 K# s$ v* e0 g2 n8 R! c0 u" B4 a
  5300.   ;; A color function used by getlayer.
    7 j/ o+ B8 O- U  k8 t
  5301.   ;;
    4 L8 K' L  V. S9 v
  5302.   (defun colorname (colnum)7 Y3 ]" `: v. j4 U
  5303.     (setq cn (abs colnum))
    ; S% i' j" u+ u
  5304.     (cond ((= cn 1) "red")
    % \. ^0 Z% v7 L! c* U/ U3 ^
  5305.           ((= cn 2) "yellow")) Y7 P* [4 ]4 U+ ?; D
  5306.           ((= cn 3) "green")
    8 j6 t; v( ^( s7 n0 D
  5307.           ((= cn 4) "cyan"); F. |; {! X0 N2 z
  5308.           ((= cn 5) "blue")
    0 B* I- a4 c2 R! z- k1 b
  5309.           ((= cn 6) "magenta")
    $ k% e2 Z3 C$ ?: b9 Q9 R- W) @5 e2 f
  5310.           ((= cn 7) "white")
    $ d" }7 K) I5 L4 @& G$ J: B
  5311.           (T (itoa cn)), m8 Q; f' e- h
  5312.     )5 u$ m6 u6 P( o  ?, c! J+ d
  5313.   )8 j9 d/ a6 ~6 `  q1 i5 R2 f

  5314. ) c; u* K4 l1 s& d
  5315. ;;; Construct layer and ltype lists and initialize all
    ' |8 A  u; U4 Z8 ]5 E
  5316. ;;; program variables:) N* B8 `' q8 h3 a% H% s

  5317. : w, {* g, b0 c6 Q0 C( C4 N
  5318.   (makelaylists)                     ; layer list - laynmlst
    ! A" c( F( t$ f! T1 o$ P
  5319.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist# V. i3 |( h" I5 _+ p2 y
  5320.   ;; Find the property values of the selection set.2 Y: G% {; z" m' C
  5321.   ;; (getprops ss) returns a list of properties from1 C+ R$ m& {) q5 ]- n- J
  5322.   ;; a selection set - (color ltype layer thickness).+ T5 \" g( _$ |" ?0 ]" F9 K
  5323.   (setq proplist (getprops ss))
    3 p9 k- ^1 v# O5 }
  5324.   (setq ecolor (car proplist))
    + t7 P& W+ m1 f( }: i9 [
  5325.   (setq eltype (cadr proplist))
    " c  ?( u. y4 a" U& g
  5326.   (setq elayer (caddr proplist))
    $ j; ?+ P8 n, }" b2 V# F- o; G5 C
  5327.   (setq ethickness (cadddr proplist))
    & J# m$ t/ g2 ^* Y) M! j
  5328.   ;; Find index of linetype, and layer lists+ x- k) j7 r  E* `3 X
  5329.   (cond
    , O" j+ J$ f0 F
  5330.     ((= eltype "Varies") (setq lt-idx nil))5 D* Z0 m2 p$ `9 ]4 h
  5331. ;   ((= eltype "BYLAYER") (setq lt-idx (getindex "BYLAYER" ltnmlst)))+ \, \( W  B) n; _9 ^0 Y
  5332. ;   ((= eltype "BYBLOCK") (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    1 t/ n2 N  N, g7 ?
  5333.     (T (setq lt-idx (getindex eltype ltnmlst)))
    9 [  I, i; q* @1 j' g/ _) }8 [
  5334.   )
    0 \4 L2 }0 o  u1 i& F4 @2 w! w
  5335.   (if (= elayer "Varies")& @$ v) S: X/ J  o
  5336.       (setq lay-idx nil)
    + a* X2 l4 c' Y1 P/ R' G
  5337.       (setq lay-idx (getindex elayer laynmlst))" x0 Q9 A3 O9 ^* V3 i2 Y! I
  5338.   )8 g- |+ y4 B' U. Z: u
  5339.   (if (= ethickness "Varies"), p( Y3 X! _% G7 i
  5340.       (setq ethickness nil)+ k3 |) H" F6 Z/ `9 g# x; P& |8 g
  5341.   )
    ; V0 C1 B* f. E1 z8 r/ p
  5342. ' j3 Z; {3 e0 V. `7 n$ G1 e
  5343. )   ; end (ddchprop_init)
    ; c6 V2 s, q" X3 E8 [5 f1 k
  5344. $ L7 h0 g5 F  o; h
  5345. ;;; (ddchprop_select): v7 g+ d1 O$ c4 r# r
  5346. ;;;
    * m$ {  S: O# S3 ^" R
  5347. ;;; Aquires selection set for DDCHPROP, in one of three ways:
    ; O- n1 e# Z) @( R2 B% b. a, X
  5348. ;;;
    + h& @) n2 J  i( Z
  5349. ;;;   1 - Autoselected.
    1 R1 g4 Y2 A" r* _
  5350. ;;;   2 - Prompted for.( a( R5 {6 `" R& v( J
  5351. ;;;   3 - Passed as an argument in a call to (ddchprop <ss> )
    5 r& k8 [! h4 g& F! I% b* V* i
  5352. ;;;0 ?4 q" @% L9 k  J7 J& j* e
  5353. ;;; The (ddchprop_select) function also sets the value of the
    " |8 L% f6 `% E0 E* d( V
  5354. ;;; global symbol AI_SELTYPE to one of the above three values to) o; x) O4 N& h
  5355. ;;; indicate the method thru which the entity was aquired.
    ) G% s; B( n( {
  5356. 6 J6 B2 Q2 h( h# Y
  5357. , o, b8 r! B: _. S" z1 H: J3 n8 ^
  5358. (defun ddchprop_select ()+ Q- w- d' t! S! C
  5359.    (cond
    1 v# _7 M4 \6 S2 R! }/ J$ k9 g2 d
  5360.       (  (and ss (eq (type ss) 'pickset))        ; selection set passed to
    / B5 ~" I) A$ ~6 K  H4 j% w) `( n
  5361.          (cond                                   ; (ddchprop) as argument
    - C  W4 b' @8 W2 L' |( v* p$ m
  5362.             (  (not (zerop (sslength ss)))       ;   If not empty, then1 T( Z4 Y( f1 U/ T
  5363.                (setq ai_seltype 3)               ;   then return pickset.
    $ S% ]% q% l0 _  B' ^
  5364.                (ai_return ss))))
    - d% U2 q5 o8 `, W6 K( B* ?! ~
  5365. % ?" i* r  ?- X% P3 ~( ]
  5366.       (  (ai_aselect))                          ; Use current selection( _7 a% {& o! J- }
  5367.                                                 ; set or prompt for objects
    * e5 P4 `4 q6 P0 Q! N. t

  5368. ; _7 ~- H# g* i
  5369.       (t (princ "\nNothing selected.")4 O9 j7 A/ K1 f: `* j
  5370.          (ai_return nil))
    6 I" T2 n5 ~  M+ s) D  G
  5371.    )+ [. \6 }7 O5 C4 h, J: S: h
  5372. )
    8 z, C' d7 u/ Y) y1 t2 Q
  5373. 2 ^4 b, R2 S( ^* F! E$ e& d7 h
  5374. ;;; Define command function.3 P- U, c3 N, V- X
  5375. ) c3 n/ |3 O4 R5 a' [
  5376. (defun C:CH (): d7 G: q* m$ B
  5377.    (ddchprop nil)
    2 B6 B8 e# M) o0 p+ g
  5378.    (princ)
    5 s8 ~+ p3 i- K+ e) s6 x/ {- ], ~
  5379. )1 L- V0 S* @/ k0 P9 M0 y  m0 H; G
  5380. : M1 @* ^+ a; z  |
  5381. . e' Y; X: R1 g  [, P& u# l
  5382. ;;; Main program function - callable as a subroutine.
    + l2 B/ B# N- ]
  5383. ;;;2 I2 i6 n* e: g, b2 c* d  i
  5384. ;;; (ddchprop <pickset> )
    ( r2 Z/ _/ w) g; ~# d! m  b
  5385. ;;;, a9 B+ _2 c/ _& _
  5386. ;;; <pickset> is the selection set of objects to be changed.. n- Q8 U, a+ m. Y
  5387. ;;;$ ]# o. F% c/ K' v
  5388. ;;; If <pickset> is nil, then the current selection set is, G7 k9 |6 U  s6 r% r
  5389. ;;; aquired, if one exists.  Otherwise, the user is prompted  O- w2 q; R" K' H5 _
  5390. ;;; to select the objects to be changed./ k: c6 `% i- ~( W6 B, V
  5391. ;;;9 z. c0 X9 [, u) g
  5392. ;;; Before (ddchprop) can be called as a subroutine, it must
    : A# F" T( _  {
  5393. ;;; be loaded first.  It is up to the calling application to1 X/ C$ {  t, L; K# k( V8 p1 W
  5394. ;;; first determine this, and load it if necessary.0 C% x1 h& Q& n5 q( d- U* z

  5395. * |& }. q4 p1 P8 R. g( n
  5396. (defun ddchprop (ss  /1 e# A- Z% h4 a3 b$ ^  H9 G
  5397. # u- g0 X0 c, ~
  5398.                   add-mdash      ecolor          ltedit_act      s2 F$ Q7 M) ^: p0 |9 J
  5399.                   assoclist      elayer          ltidx           selset
    $ ?0 U% \9 X6 T! k" V* P& I4 C: m
  5400.                   bit-70         elist           ltlist          set_col_tile
    , {6 I' T; v# z- M
  5401.                   boxlength      eltype          ltlist1  j8 U7 w% ]9 j
  5402.                   bylayer-lt     en              ltlist_act      sortlist: z7 c3 g( c* u
  5403.                   bylayer_col    ethickness      ltname7 X' h- N/ E2 v% _5 j; ?
  5404.                   bylayer_lt     fchk            ltnmlst         sslen
    $ V0 U1 G) V! z6 Z
  5405.                   call_chp       frozth          ltvalue         templist
    6 ~- m  S' u  ~8 v  P
  5406.                   chk-col        getcolor        ltype           temp_color
    3 A) {' ~" k! `/ R+ z8 J7 N
  5407.                   chk-lay        getindex        m               test-ok
    ; m' T6 ^& g0 r: ]/ A3 r
  5408.                   chk-lt         getlayer        makelaylists    testidx
    2 f0 Q, k/ s6 A% s+ u$ A4 w
  5409.                   chk-th         getltype        makeltlists     testlay$ W; r$ o- `  O% A: Q& j3 f4 I9 J
  5410.                   cmd            getprops        match-col       th-value
    4 ]3 Z( Y7 @' o7 e, k0 s! M
  5411.                   cmdecho        getthickness    match-in        thickness7 O# g! Z7 v" Y- R9 @
  5412.                   cn             globals         match-lay       tile
    ! X+ W' c% P6 g( s8 p
  5413.                   cnum           go              match-lt        tilemode
    9 b/ h$ }  A' D8 Z
  5414.                   col-idx        index           match-th        tile_rect0 D& v& w) P# C3 r% V
  5415.                   colname        item            match_col       vi
    . h( `  j8 |( N  e% U4 c5 m, y
  5416.                   colnum         item1           mdashlist       vpf
    ! H, O( ~# W. Y/ [% ^. i
  5417.                   color          item2           n               vpldata
    1 ^& i6 u; Q% {) \$ B
  5418.                   colorname      itemlist        name            vpn
    + L$ @  m& O. w* n+ n
  5419.                   col_def        lay-idx         ncolor          x
    ; ^6 V# u8 M0 Q) w7 m# o
  5420.                   col_tile       layedit_act     nlayer          x1
    0 a1 q. d- g$ m; E
  5421.                   ctr            layer           nltype          x23 q, @$ u- n& k; e. n
  5422.                   cvpname        layinfo         nthickness      xdlist* x: G7 O: }5 r, S! f. `" X
  5423.                   dash           laylist         off             y6 U. g6 l" U/ {( f+ R: B
  5424.                   dashdata       laylist_act     old-idx         y13 H8 A, _& O" p; }( W
  5425.                   dashlist       layname         olderr          y22 G& T; U6 ^  j% e) t
  5426.                   dashsize       laynmlst        on              undo_init1 F4 y, l# s0 Q, h9 E2 Y6 _6 F
  5427.                   dcl_id         layvalue        onoff, [7 ^* R; `! U+ x5 B# R$ A
  5428.                                  linetype        patlist
    / H0 e$ Z# F+ _1 j8 n  Y7 J1 o
  5429.                   ddchprop-err   list1           pattern
    % W# ?/ R& h* O/ n9 u0 S- Y
  5430.                   longlist       proplist
    - X2 ?" ?9 w6 A' Z
  5431.                   lt-idx         reset-lay
    9 f: G/ M$ Z/ Y- L. O* o9 F& Q1 J
  5432.                   drawpattern    ltabstr         reset-lt. x% M7 B+ c3 ~' J$ J" s7 }6 T% e
  5433.                 )) u5 X$ {& \- e5 X5 |
  5434. , _$ I5 _9 w6 Y) X1 f# s
  5435.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    2 W1 }5 ?& N* K3 I. e  b3 X
  5436.         old_error  *error*            ; save current error function
    $ ?; X" [3 U# Z) }/ N
  5437.         *error* ai_error              ; new error function7 b2 y2 G5 L# b, i/ W
  5438.   )
    " P7 ]# y6 u0 a/ {
  5439. + q5 M( R# I. h* j& K; g/ i" ?. U
  5440.   (setvar "cmdecho" 0)0 e1 i5 D# j+ N6 p- N+ Q. L( H$ d
  5441. ) y5 V+ r3 l- k6 z( ]: Y) a6 l
  5442.   (cond& \5 B9 ]. D$ ^% }( t. r
  5443.      (  (not (ai_notrans)))                      ; Not transparent?2 D) q6 Z" g7 w3 F* T
  5444.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    . Y( |, [$ e/ w  ]* I6 n, D/ H
  5445.      (  (not (setq dcl_id (ai_dcl "ddchprop")))) ; is .DCL file loaded?: q& j0 H) {- B7 |
  5446.      (  (not (setq ss (ddchprop_select))))       ; objects to modify?
    * k+ J) R3 F9 ^5 V5 h
  5447. " T7 J" `: d# S' }$ `
  5448.      (t (ai_undo_push)
    % W( W3 `8 e& y" e0 Q/ {
  5449.         (ddchprop_init)                          ; Everything's cool,2 _6 U0 D: g" H; L" y
  5450.         (call_chp)                               ; so proceed!
    1 ]" K! u9 {2 ~8 d6 q8 b
  5451.         (ai_undo_pop), A5 ]$ C) l) E$ A% ?8 h+ R, h5 o
  5452.      )% U& R; I5 v4 [& z* }
  5453.   )# l) x0 _# O" g6 E: K
  5454.   
    ( {( B) H& z* \/ _+ J
  5455.   (setq *error* old_error)
    ; u9 l2 s6 G: U1 s7 o$ x% f
  5456.   (setvar "cmdecho" old_cmd): }( r, H/ K, q/ X3 q
  5457.   (princ)
    + ]; J6 j; |! T6 l& Q; f2 [* Y
  5458. )6 {3 X2 T: S3 y+ w

  5459. 6 G9 F  |1 S9 T6 r9 A' @
  5460. ;;;----------------------------------------------------------------------------
    # O6 e1 _; ]/ R. A8 h

  5461. : W& k2 r# V% N- C  I% E
  5462. (princ "   DDCHPROP loaded."). V6 p, k% V8 m" ^, n
  5463. (princ)
    0 F' F. B* W. R1 A  |) I

  5464. / i* A$ w8 m. w' h# y6 ^8 N: ^
  5465. ;;;----------------------------------------------------------------------------
    4 c! I9 N8 E7 g( z% Q0 ?
  5466. , u, `6 M! s: X5 Z. Y& F/ P9 S# S
  5467. ;--------------------------------ddmodify.lsp----------------------------------/ ^5 Q9 |. f: W- Y
  5468. ; Next available MSG number is    111
    . T- k! h+ n+ O& m: E( s+ ]$ ?3 _: V
  5469. ; MODULE_ID DDMODIFY_LSP_$ k" k5 n$ G/ `+ A, U; n
  5470. ;;;----------------------------------------------------------------------------
      b/ U$ c0 }6 B& C4 P: x5 j9 ]$ B: J5 S
  5471. ;;;    DDMODIFY.LSP* u) N0 D# `  F; ~4 q) C0 b
  5472. ;;;
    ) O# p  ?% t+ ~
  5473. ;;;    Copyright 1997 by Autodesk, Inc.# i& x) P+ q( ]
  5474. ;;;
    ) `4 k! w6 I' M$ H. X/ i
  5475. ;;;    Permission to use, copy, modify, and distribute this software
    ! \) K  y7 r3 d2 n; g
  5476. ;;;    for any purpose and without fee is hereby granted, provided
    ' P. Y* ^8 q$ ~2 }7 }
  5477. ;;;    that the above copyright notice appears in all copies and% H# ~; U# F" W; _
  5478. ;;;    that both that copyright notice and the limited warranty and
    + i# w- z" u$ H- D
  5479. ;;;    restricted rights notice below appear in all supporting1 W' U9 r- t# Z+ ]
  5480. ;;;    documentation.8 X5 l6 P. G7 m3 D" l  y) E  }* K
  5481. ;;;
    # w9 E9 i! I4 G
  5482. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.3 I/ A" B5 _1 B1 X
  5483. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    6 e7 s. m$ Q* b$ u) N
  5484. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.( z# V/ l) W  d: n7 L
  5485. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE# E: C* F# U9 n# e5 G, P* A
  5486. ;;;    UNINTERRUPTED OR ERROR FREE.! \& t& H0 u8 r3 g
  5487. ;;;
    3 |/ @4 O# @  Q3 @2 z9 c  z% g
  5488. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    1 f) R$ K4 h( w0 c+ D, H. a
  5489. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer. j) w; J& R( Z! o* Y- Y, N  P+ Z
  5490. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    2 v% d! g; B' d3 x; v# K; b: |" K& }
  5491. ;;;    (Rights in Technical Data and Computer Software), as applicable." i5 D/ i" j" K1 ~) H
  5492. ;;;
    7 b( i' h& h( S7 @6 e
  5493. ;;;.3 K( S  L3 n5 L2 r7 I! n
  5494. ;;;1 g4 h3 k7 t& a8 c% O6 g1 b) k: A
  5495. ;;;----------------------------------------------------------------------------
    . S  M1 T9 B8 {5 L; D# W- B
  5496. ;;;   DESCRIPTION& a# [% N$ A, Z- o
  5497. ;;;# ^' Y+ a, V  v" v
  5498. ;;;   This function allows the user to get a listing comparable to the LIST
    ! w2 L5 ?8 j, _$ J0 H
  5499. ;;;   command for most objects.  In addition, most object fields in the
    ! y$ n# G+ R+ l& K
  5500. ;;;   dialogue box are editable.  Points can be specified dynamically by* N0 j7 e$ M2 a0 d  \4 ~
  5501. ;;;   temporarily dismissing the dialogue box.  Each object has a unique
    $ O7 N& D" p, ^3 Q/ N* H
  5502. ;;;   dialogue.
    ; U2 L' V9 Y! z% y* R/ L
  5503. ;;;
    ' ~7 E% C# b1 b9 h, z5 }" S
  5504. ;;;   Naming conventions# K6 H4 ^0 Q% ]6 C/ m
  5505. ;;;   Long function and widget names may use an underscore "_"! ?% M3 S( o' M6 P' \4 y( i
  5506. ;;;   in their names to make them easier to read, long variable
    3 e# {1 z, t: Q) n# x3 z3 ~
  5507. ;;;   names use a dash "-".+ R( S& L& \6 |8 V
  5508. ;;;----------------------------------------------------------------------------
    9 I* l: ~- |  }, j
  5509. ;;;----------------------------------------------------------------------------( X, C3 j8 N/ Y" C5 U; C6 a2 ~$ U
  5510. ;;;   Prefixes in command and keyword strings:" _% r  ?6 r! O! x% v' }* X9 x
  5511. ;;;      "."  specifies the built-in AutoCAD command in case it has been( _& x. ^, H+ P! j
  5512. ;;;           redefined." R6 q; h- b/ n2 X2 r. O. d$ T, r
  5513. ;;;      "_"  denotes an AutoCAD command or keyword in the native language. Y8 }) O" N& I
  5514. ;;;           version, English.4 ?9 @; Q) f! J+ \* W' g  R' D
  5515. ;;;----------------------------------------------------------------------------
    ) G- V# f" \) C# ^0 r& b9 ^
  5516. ;;;8 F" B4 L5 s. j! Z+ }8 p
  5517. ;;; Avoid (gc)s on load to improve load time.
    - i6 l& n" e# q/ K1 X  k$ e* n
  5518. ;;;& s, F. w' a5 A, h$ m9 A3 u' T. H
  5519. (defun do_alloc (/ old_allod new_alloc)
    % S; A/ P* v& P2 \2 h- E. @
  5520.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))9 l6 N  U' L1 q* t0 r
  5521.   (expand (1+ (/ 17000 new_alloc)))
    . i2 N( u4 g2 X, {' a) o3 w/ `
  5522.   (alloc old_alloc)/ \9 s1 u3 C* N2 c  z  X9 e
  5523. )7 m1 }7 B9 a" G" |3 }8 m
  5524. (do_alloc)( @  w+ t# V) M" g+ E$ I1 g
  5525. (setq do_alloc nil). c" ~. f4 S/ B7 S. c  y% F- f
  5526. ) O3 V5 V. i5 W/ t- \! k) @4 |& G
  5527. ;;;3 t; C" \# \. L; O/ f! }$ ^7 |
  5528. ;;;! b  h& {: c7 J& P* ?* _7 ]
  5529. ;;; ===========================================================================
    ( M( t& H1 l, ?& Y, s  l
  5530. ;;; ===================== load-time error checking ============================
    1 T6 U0 g( ^" |8 H/ _5 e, r7 F
  5531. ! `6 \, g. Y0 |/ o4 w  A2 u. j
  5532.   (defun ai_abort (app msg)
    4 L( L1 S! v: b+ G) S: ~$ x$ R
  5533.      (defun *error* (s)4 t# c1 W. D( V6 i8 T
  5534.         (if old_error (setq *error* old_error))# W" J9 ?$ V% q3 S" M* n- l7 z2 u
  5535.         (princ)
    ; @/ [  X" @. J4 D) {, G
  5536.      )$ I# C* ]6 [: H. H" ^
  5537.      (if msg+ q# }( U6 K5 }
  5538.        (alert (strcat " Application error: "
    & b$ S. c/ Y0 g4 M: e/ Y' T
  5539.                       app& [; Q  v+ @0 Z+ H+ O/ |
  5540.                       " \n\n  "
    1 q. v- w! `% h7 R, _
  5541.                       msg. I" g! t4 h5 R! x; ^4 e
  5542.                       "  \n"8 n7 p& c; P5 h% V/ J5 t1 z
  5543.               )3 L" B) S) ~+ s
  5544.        )
    + X3 Q' V" r  s# M3 |$ v8 u
  5545.      )
    ' p5 S: M+ k& Y- e, O7 x5 D
  5546.      (exit)
    0 _5 `; N  l2 h0 ~. ~! E$ N
  5547.   )& v. e' O: c' T3 A+ y

  5548. ) z% a+ M: D- ?3 g# G0 l
  5549. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,$ X2 g% o& J5 V) p/ t
  5550. ;;; and then try to load it.  If it can't be found or can't be
    , m( M6 B1 @- w  M" a$ ?
  5551. ;;; loaded, then abort the loading of this file immediately./ i8 ~& ]7 J" q

  5552. % w, ^/ p" N2 o+ l. r1 \  x* m! W
  5553.   (cond
    * b! [! w0 y4 C# {" e; e/ T6 B, H
  5554.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.7 h/ k* r  S' M1 t5 n- o/ s6 H
  5555. 1 n$ R. Z! M  Y( G0 q
  5556.      (  (not (findfile "ai_utils.lsp"))                     ; find it' e1 A6 ^, C1 N7 G) y3 N) F4 o5 ^
  5557.         (ai_abort "DDMODIFY"
    , f# Y, B. _- Z8 K' G
  5558.                   (strcat "Can't locate file AI_UTILS.LSP."! M8 z8 m! w+ ~, y2 T7 l8 U
  5559.                           "\n Check support directory.")))9 |7 j. R$ v8 g7 [0 n& W
  5560. & l5 F$ }7 Z4 k- Y+ n9 P- h
  5561.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it) x5 e# W5 M4 X
  5562.         (ai_abort "DDMODIFY" "Can't load file AI_UTILS.LSP"))
    7 g( L& V: @8 ^: O
  5563.   )8 f: P+ P; R; T
  5564. ) F- U8 h6 M  B* W8 Q& A) d
  5565. ;;; If we get this far, then AI_UTILS.LSP is loaded and it can
    7 f& A* ]5 w" [
  5566. ;;; be assumed that all functions defined therein are available.
    / T( j4 h; E" S5 t) Z  t

  5567. % l4 i! H* j) S8 N9 K
  5568. ;;; Next, check to see if ACADAPP.EXP has been xloaded, and abort
      Q1 ?9 A8 B8 R- E' d3 D* q
  5569. ;;; if the file can't be found or xloaded.  Note that AI_ACADAPP
      N# t& W- m! W2 r
  5570. ;;; does not abort the running application itself (so that it can; f$ N8 H* I4 n* {+ F0 t* ?0 \
  5571. ;;; also be called from within the command without also stopping* S1 D! D8 N! G* R' k- Z/ i
  5572. ;;; an AutoCAD command currently in progress).
    . P$ D% ^+ G  N# a9 j

  5573. 9 w. F7 _8 X1 F; _) ~/ G. R% C
  5574.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    " |! y/ ^; |. e# i
  5575.       (ai_abort "DDMODIFY" nil)        ; a Nil <msg> supresses
    / l, [0 C% K" I7 c7 T
  5576.   )                                    ; ai_abort's alert box dialog.
    % Z' ^$ l0 U! P) B
  5577. & ?9 D# X% F% ?& e
  5578. ;;; ==================== end load-time operations ===========================6 k7 i$ {) h  W  c0 C

  5579. 2 T0 Q- W$ u7 x& ^1 K
  5580. ;;; global variables5 S. m6 `6 D$ M. K  H" ^

  5581. 8 ?7 u+ D3 {, ]5 N) k3 D
  5582. (setq hatch-elist nil)0 D& b! }& t% q" Y' K" Z; b, B

  5583. 6 R3 E$ n: R" t% z
  5584. ;;; If we get this far, both ai_utils.lsp and acadapp.exp are
    $ ~7 f3 L2 `: t6 ~( u# v8 v
  5585. ;;; assumed to be available.
    8 U7 |& B6 E* ^" [

  5586. 4 j0 _6 C$ D+ y' F% |9 r$ w
  5587. ;;; Define and encapsulate all subroutines that are declared
    ) f1 l! z$ Q  m9 D# [* M
  5588. ;;; locals of the (ddmodify) function.
    1 N" R# b( w: @; Z$ E

  5589. + B) N; N; ^* q+ X3 g
  5590. (defun ddmodify_init ()
    & R9 M& G) S* Z& N) `4 P
  5591.   ;;
    . f, i" A. D# @1 F+ k; v5 D
  5592.   ;; These three functions modify the enitity list for common properties.  Since
    " X+ _6 J! Z! X& [4 _1 g( l
  5593.   ;; color, ltype, and thickness are absent from the object list when they are
      a$ y, S4 X* P6 s2 q2 D3 ?
  5594.   ;; set to their defaults (i.e. color = bylayer), a simple substitution using/ J/ }0 t* I  _5 x- I. J1 }
  5595.   ;; SUBST is not possible., y. e! i" [  i# E4 D4 ~
  5596.   ;;: n9 @; `2 E9 q4 n2 @
  5597.   (defun modify_properties ()
    ' k! R6 \$ n! @; P3 R
  5598.     (emod ecolor 62)
    2 o4 ?$ F9 Q" T! T6 g
  5599.     (emod eltype 6)- Z( }" f2 W$ L. Z* f. f; L. A
  5600.     (emod ethickness 39)
    % K. w/ j: F# M( `$ o3 C* }& z- t
  5601.     (emod eltscale 48)& u- K5 q6 ~8 o5 T, g; o. J% c8 ^  U1 S
  5602.     (tempmod elayer 8 nil)& N6 J6 k( Q4 R8 W/ r/ U
  5603.   )
    9 x6 H' O. K6 c
  5604.   ;;
    / f1 J& i$ B, V& F# ^
  5605.   ;; This function is used for modifying common properties of the ACIS6 f& a4 ]( D' T
  5606.   ;; based geometry objects. Thickness is not valid for these objects
    8 i3 Z  S. U( a, p/ [) J: ?5 f! ~
  5607.   ;; so it is left out.9 o- y" m. o3 g5 B" b( z
  5608.   ;;: M5 J( j1 j- X7 K/ D
  5609.   (defun modify_prop_geom ()* R/ Y& m1 [& E4 Q* G! m
  5610.     (emod ecolor 62)
    * D" p% M/ T+ }% l
  5611.     (emod eltype 6)' ]; c$ x5 N% H7 F) r! |
  5612.     (emod eltscale 48)( @0 f, q" J9 G3 y9 w  ]
  5613.     (tempmod elayer 8 nil)
      W7 |6 v2 s7 G9 i" R, S3 h
  5614.   )
    $ g2 v3 Z$ U. S8 S* c' Y% r
  5615. " z! [! ~6 X: K" {  k6 q
  5616.   (defun emod (value bit)
    % T0 b/ `( p* S( x
  5617.     (if (= bit 62)
    ! ~. F; r* T' e5 T9 }4 T2 C+ t
  5618.       (progn  o- c4 }9 G8 D
  5619.         (if (or (= value "BYLAYER")8 d- o7 z  y& T
  5620.                 (= value "BYLAYER")) (setq value 256))
      C% u% a4 d9 ?$ j/ H0 z+ D# G
  5621.         (if (or (= value "BYBLOCK")8 ~/ n( C' d4 \. R7 C( |& G
  5622.                 (= value "BYBLOCK")) (setq value 0))
    : o& ^; \. f9 R% E  ?
  5623.       )  Q. `; g! R2 L9 r, l' r) P4 g- `" n
  5624.     )
    ! X0 X3 r+ F  s4 a
  5625.     (if (setq oldlist (cdr (assoc bit elist)))
    : g- y% E9 U9 ]  ]" ]* E* }
  5626.       (tempmod value bit nil)9 W  Z$ w! `# T
  5627.       (setq elist (append elist (list (cons bit value))))# K# H9 H  Q3 h7 ~- c
  5628.     )5 \8 G, G" R7 W# X. @
  5629.   )( p# K- ]3 {( f1 r4 ~& x% g& l
  5630.   ;;
    7 k- K! W6 V3 u$ P1 Y
  5631.   ;; Resets object list to original values.  Called when the dialogue or* I/ q9 l6 N- u8 K
  5632.   ;; function is cancelled.
    8 M; V; M9 t8 b
  5633.   ;;
    3 _6 N' S; S1 Y' E( k
  5634.   (defun reset (): q6 y+ S6 e/ s9 a+ _1 q
  5635.     (setq elist  old-elist
    - K7 O  y2 b1 ]1 A8 K2 X( C, u8 H
  5636.           ecolor (cdr (assoc 62 old-elist))4 m$ [4 d/ w+ @! \, J+ f
  5637.           ethickness (cdr (assoc 39 old-elist))
    * M, h+ H9 D9 z  _- h
  5638.           eltype (cdr (assoc 6 old-elist)): J3 P6 L, a' D
  5639.           elayer (cdr (assoc 8 old-elist))/ T! k' o$ F2 L. A3 {
  5640.           eltscale (cdr (assoc 48 old-elist))
    ( _7 `9 t, j& E
  5641.     )
    ! \$ f1 T& j& v, Z5 j3 _' g  |
  5642.     (if (not ecolor) (setq ecolor "BYLAYER"))
    ) F. h  R' y  A
  5643.     (if (not eltype) (setq eltype "BYLAYER"))
    - p, K0 X3 {$ H
  5644.     (if (not ethickness) (setq ethickness 0))
    # q6 }' E: D/ a) r
  5645.     (if (not eltscale) (setq eltscale 1))
    $ _2 b. n9 `" {* S
  5646.     (modify_properties)
    ' ]. L+ {! M. u. \- e+ Z; a
  5647.     (setq reset_flag t)  X; }, g9 {5 i( t) i9 D" T
  5648.     (entmod elist)& z5 T: r& ?: V: P
  5649.   )
    5 E; m/ v6 V; p' Z
  5650.   ;;
    $ n( W/ T1 c/ ]8 A7 Q+ _
  5651.   ;; Modify object when dialogue is temporarily dismissed to reflect latest# D6 R9 E' A$ _. w' g
  5652.   ;; settings of dialogue.  It converts the point from current UCS coordinates to
    7 d. O7 \# n8 h9 l5 h. L
  5653.   ;; the proper object coordinates (world or object).
    6 f% c' m0 }$ }* U5 b& @
  5654.   ;;! ^5 W/ i! ~; ]- M
  5655.   ;; Arguments: value - in current UCS coordinates
    $ l# A0 @+ z) G' W5 H
  5656.   ;;            bit   - object code (i.e. 10 for start point)* p$ l$ \$ Q8 Z5 n
  5657.   ;;            ptype - point type  0=world 1=planar
    2 Q+ Q7 E" g' L
  5658.   ;;
      J% u) K1 K$ E$ ~: ?) v
  5659.   (defun tempmod (value bit ptype / newpoint)
    " Y9 }! @- ^( x: J9 ?
  5660.     (cond& ^. Z+ ?5 h+ c
  5661.       ((= ptype 1) (setq value (trans value 1 ename)))/ p( d5 y0 {& N% C1 E! g# r' w
  5662.       ((= ptype 0) (setq value (trans value 1 0)))* E$ a" M7 Q$ T5 u9 K5 v+ e* s, H/ @8 J
  5663.     )
    ' `# Q+ \! Q) E+ l4 b% C: g
  5664.     (setq elist (subst (cons bit value)
    5 p+ F/ T. z* b9 G
  5665.                        (assoc bit elist)
    7 P% R+ k( b% }# x: M
  5666.                        elist
    6 O5 C: {* R6 \: ~- Q
  5667.                 )
    % k3 s7 ?) v3 g  V+ {9 {' \1 o6 r! |
  5668.     )
    * _/ c9 Y/ P4 v" [' i
  5669.   ). o) q8 G& A! U, }) t: C7 ?, j$ |8 j
  5670.   ;;) K5 Y* ~3 s1 I( f; k/ n
  5671.   ;; The following functions are called after a dialogue has been temporarily
    1 V8 f: Q# V' [6 j" ~) e
  5672.   ;; dismissed and the user is selecting a point.  If a point is selected the
    - \4 [: b/ |+ ^! w! @. E* ?( G, A! k
  5673.   ;; object list is modified and new X,Y,Z values set.  If no point is selected
    9 S% h( ]# g$ y# v; H( A" D
  5674.   ;; (null response), then the point is reset back to its previous values.+ `3 @' u- x& H+ {4 G
  5675.   ;;
    5 I( `; {% p" r  U  t1 e  G& l
  5676.   (defun ver_pt1 (ptype)
    1 m& v+ p3 T3 p: K( Q
  5677.     (if pt1: O7 w! v& F0 F; B* e+ L, k4 H& q& A5 S1 d
  5678.       (progn
    2 b5 m2 B- i! s( y+ e  t9 a5 Z
  5679.         (tempmod pt1 10 ptype)
    7 M, q( j6 X5 U: f
  5680.         (entmod elist)4 C, z% y: d7 ^6 h
  5681.       ): S$ I3 T  l2 N- U+ Q0 `/ W0 @
  5682.       (setq pt1 (list x1 y1 z1))
    " A6 n- `2 x0 c/ N2 I0 N+ I. p
  5683.     )7 l) j1 x$ Y% ]1 `& p+ g5 N
  5684.   )
    3 J' z  C0 D( b2 M* l# K

  5685. 9 [) t; n6 {* a7 g/ W5 V* a- U/ c
  5686.   ; (move_pt1 <ptype> )
    3 \6 [( z  e( N0 O6 \) _
  5687.   ;
    1 d2 C" @. C+ {  k+ `1 `0 \
  5688.   ; Called in liew of (ver_pt1) to translate block insertions which
    2 s* t& w/ U6 S1 H3 Y
  5689.   ; might have variable attributes attached to them.  If the distance
    4 w( k+ f$ D0 F, d8 d+ G
  5690.   ; the block is to be moved is < 1e-6, the move is deferred.
    6 [! e5 v0 x' L- E8 W8 m" P1 O" Q

  5691. 5 F( b* e, j+ d+ m" b
  5692.   (defun move_pt1 (ptype / basept hi)
    5 b# W) i$ }* w& q: G  R/ |* p8 H
  5693.     (setq basept (trans (cdr (assoc 10 (entget ename))) ename 1))% f! E$ S; ]2 w; ?
  5694.     (cond
    + Y! I$ }7 s" M3 q* r7 u
  5695.        (  (not pt1)
    , c2 z* l5 s& i% E' Y7 P+ P  U
  5696.           (setq pt1 (list x1 y1 z1)))' t7 Y3 i+ N; q/ j7 Q  E  z5 S

  5697. ) g; T8 ^0 ^' T8 t6 F, f
  5698.        (  (> 1e-6 (distance pt1 basept)))
    # v& U- j( _8 w2 s/ Z

  5699. 1 o+ Z$ s! Q# F# a  X: \% j
  5700.        (t (tempmod pt1 10 ptype)
    : e* X4 [# a/ Y/ Z+ n( l
  5701.           (setq hi (getvar "highlight"))
    . E4 d# Q& L! x/ }& k# }
  5702.           (setvar "highlight" 0)8 }5 r* P4 d3 C& r1 Z
  5703.           (command "._move" ename "" basept pt1)
    & I" u4 d! d8 \1 x) v$ l+ P
  5704.           (setvar "highlight" hi))1 l2 P1 @8 v5 K9 P/ ^6 J
  5705.     )
    , D# y* p( L7 C/ @* j2 j5 w7 r
  5706.   )
    * u/ Q! Y# o  T  |

  5707. + u8 _* P9 g- K, H/ r
  5708.   (defun ver_pt2 (ptype)
    4 D( j  C+ r0 ^9 s3 ~( A  B; T5 ?
  5709.     (if pt2' e4 \  F, Y) ~3 V
  5710.       (progn+ y% i8 |/ t# N( v& F: [6 O' B& o
  5711.         (tempmod pt2 11 ptype)( p0 r0 [0 L/ s/ U# i
  5712.         (entmod elist)
    . F3 M2 F! Z! [6 J! ^  l
  5713.       )1 C: A- J4 i, P
  5714.       (setq pt2 (list x2 y2 z2))
    0 _. a; w  w, E- E/ y
  5715.     )
    ! Q3 j4 d6 p, F9 q8 h1 u
  5716.   )/ h  k  v0 z" K7 P& H7 Q/ f: `. g; Q

  5717. ( g4 s- I' q; v2 U2 n- M7 G8 S
  5718.   (defun ver_pt3 (ptype)2 s  }! D- S) q- @, m
  5719.     (if pt3! m. R: N+ m8 `8 Z: t9 d% X
  5720.       (progn
    ) L! L6 B& p0 T2 ^5 R: C9 o
  5721.         (tempmod pt3 12 ptype)
    ( }& x" c# m; p( X: j; Z5 w6 j
  5722.         (entmod elist); e8 E1 j' ]; C0 N2 ~7 D/ Z6 }2 `
  5723.       )4 p) {. X6 x7 x7 U9 A# b% R
  5724.       (setq pt3 (list x3 y3 z3))7 X+ t1 V- O' F+ Q: r' u  ^
  5725.     )  F% E2 Q' }8 [5 c  J* e/ P0 W. j
  5726.   )
    / H) L! }; y6 i' ?

  5727. 7 y) l  d0 B6 Z8 ], Y5 x; n! `
  5728.   (defun ver_pt4 (ptype)
    % q% c% \' {+ I4 k
  5729.     (if pt4
    2 A# N1 X8 [9 h/ E
  5730.       (progn4 k. n! Y& W3 a
  5731.         (tempmod pt4 13 ptype)3 U4 o' S+ I! {1 @
  5732.         (entmod elist)
    ( y# |- ?; {8 M6 p' k
  5733.       )
    ! W% _! c0 \/ A3 ^+ Q% L
  5734.       (setq pt4 (list x4 y4 z4))
    4 P  q) n3 r( E2 S5 b
  5735.     )' u7 h9 a) _, z4 M3 n
  5736.   )" k: p- s8 [" h) q0 e! n5 P' j
  5737.   ;; Xline/Ray
    ' D$ T# @; V, U
  5738.   (defun ver_xline_pt1()
    6 a- ]7 Y3 r0 g. m* n2 H
  5739.     (if xline_pt1$ t" ?9 v8 ]8 a6 F' h# [* [9 z5 h
  5740.       (progn+ t, n+ c! b* @1 p
  5741.         ;; convert to WCS.
    : n7 K, w# _( W2 S
  5742.         (setq value (trans xline_pt1 1 0))
    6 i4 a' ^: t: E& g
  5743.         (setq elist (subst (cons 10 value)2 R. z) n6 [" z$ D5 o2 O, ^( R: k
  5744.                           (assoc 10 elist)2 d- E; v! s4 z& j0 m2 Y( Z
  5745.                            elist+ P/ h0 Q# A# m3 y8 I3 c
  5746.                     )
    0 \( Y8 M, e3 o! K
  5747.         )+ o( Y2 c: H& E
  5748.       )
    " s& X, y9 g2 H6 E
  5749.       (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))$ |# u8 ^" A: v# |3 Y* d
  5750.     )4 T1 @4 D, a3 p) U$ d$ ?: @: P
  5751.   )- o' p5 W( L2 e. ^) l

  5752. ( t7 M3 _- a5 j( I& D
  5753.   (defun ver_xline_pt2()% @& N! e1 N% d0 {
  5754.     (if xline_pt20 n* V3 K$ p0 C* A
  5755.       (progn3 I& Z3 B! g# ]5 z% @
  5756.     ;;8 t( `/ U* M% ~  r0 ?9 J- ?' p
  5757.     ;; Calculate new Direction Vector WCS# g5 Z+ ]. ^9 Y: u9 W# U2 }
  5758.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))
    , k5 [( Q  H) c. [
  5759.     (setq temp_dir (trans xline_pt2 1 0))) c6 b6 u9 R" ^2 z# |* w4 ^8 C$ ~
  5760.     (setq temp_dir_x (car temp_dir))1 S% e% E! \8 X! y
  5761.     (setq temp_dir_y (cadr temp_dir))
    9 Y3 E* j! m! n3 ]
  5762.     (setq temp_dir_z (caddr temp_dir))
    ; e9 _$ g$ _. |. r
  5763. 6 ]& r$ u% z. o7 K! w& U0 \5 q/ Y
  5764.     (setq temp_xline_pt1 (trans xline_pt1 1 0))6 _& N- f, d4 N4 ?; V/ P5 \
  5765.     (setq temp_xline_x1 (car temp_xline_pt1))) o- i  q0 v5 V& w/ l7 A3 F  h
  5766.     (setq temp_xline_y1 (cadr temp_xline_pt1))" a5 }% i5 }+ u/ c
  5767.     (setq temp_xline_z1 (caddr temp_xline_pt1))
    , X( J7 E* Q# q0 L6 m2 J/ {- i+ E+ b

  5768. ) C+ C. t- {5 V$ t' m
  5769.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)/ |8 B/ T7 D: G
  5770.                          (expt (- temp_dir_y temp_xline_y1) 2)8 N6 [: T1 o* ^
  5771.                          (expt (- temp_dir_z temp_xline_z1) 2)
    7 u9 m- L6 U9 V0 j6 n
  5772.     )))
      \4 F$ b' X; g9 \0 T8 l
  5773.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))8 Y7 Y  `) I7 u, S0 ^5 P9 {
  5774.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))$ n. P8 H$ x5 T3 o
  5775.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))
    * P/ b. R( c8 h- S# Y  Q
  5776.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))* p) I& \" t4 F, q" y1 p$ h; v
  5777.                        (assoc 11 elist)1 K9 m- m: ?6 \; m) w' A
  5778.                        elist' Z" D, r1 H& B
  5779.                 )( W& x3 k  D" z6 C" y
  5780.     )
    - o6 r- t6 v' v* ]: G, B% P4 w  v$ I
  5781.     (entmod elist)
    # q) @3 r9 o: o' _* {, n
  5782.         (setq xline_x2 (car xline_pt2))
    0 q6 r* o: Z& z; a
  5783.         (setq xline_y2 (cadr xline_pt2)): N: J' Q' W5 H' R8 I" m2 {/ h# q
  5784.         (setq xline_z2 (caddr xline_pt2))
    + D5 V. d& p! d2 f8 g

  5785. 6 Q; B0 [: Z/ P7 c; F8 B# T

  5786. + A* Y& j) w2 o9 b
  5787.       )
    1 Z+ J$ [8 H% j; y3 g
  5788.       (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))
    2 D9 z3 S2 f; h! L+ C
  5789.     )
    2 x( a: d" j/ e% O
  5790.   )$ u$ k  N7 K  s8 I0 k* F, e* E
  5791. ; m) o1 a* Y/ C% ]
  5792.   ;;$ X" Y3 ^/ j0 S# T' w0 w
  5793.   ;; Common properties for all objects' ~$ g; U: z% V2 m& v
  5794.   ;;
    % N  _0 e5 G0 w5 M/ O
  5795.   (defun set_tile_props ()$ e; O! I& C* y+ }
  5796.     (set_tile "error" "")
    * K9 l1 s8 {3 {$ \# t
  5797.     (setcolor)4 }& j* `; A2 c! T& c% j
  5798.     (cond
    9 k( b" }% B/ I( T. ^- {/ D% {1 z7 a3 p% w
  5799.       ((= eltype "BYLAYER")
    - ^% {5 P5 f1 X# w
  5800.          (set_tile "t_ltype" (bylayer_lt)))" x) J8 G9 B% u1 k  n
  5801.       ((= eltype "BYBLOCK")
    : j, B1 r4 w( r& k( c! |
  5802.          (set_tile "t_ltype" "BYBLOCK"))+ x0 d3 j, c; v9 k6 [
  5803.       (T (set_tile "t_ltype" eltype))
    * v: ~5 W# }) ~  L/ n3 ^& N* g; B2 C9 R
  5804.     )% S- ^" ]" n! N- n' w# _
  5805.     (set_tile "t_layer" elayer)
    # _5 [" _7 Q2 c- v" f
  5806.     (set_tile "eb_thickness" (ai_rtos ethickness))
    6 C& I  l- v6 E; ~1 ]
  5807.     (set_tile "eb_ltscale" (ai_rtos eltscale))
    7 c- l" a' Q. K5 {& T& [* t
  5808.     (setq which_tiles (ai_common_state etype))
    + B$ W+ p7 q: Q, d5 D7 J1 I
  5809.     ;; Disable tiles if need be...3 a' ?( o% ], q$ d- P4 i

  5810. - }, t* N; Z, k
  5811.     ;; Layer Button and Text Field3 D4 d: y& P  \  g. ~% @5 u
  5812.     (if (/= 1 (logand 1 which_tiles))5 U  b3 u; `/ a9 M  M
  5813.       (progn
    , l9 V( F4 _: x/ k0 X3 O/ _
  5814.         (mode_tile "t_layer" 1)
    , f5 B; \: D; V# X5 O1 r; c6 s
  5815.         (mode_tile "b_name" 1)9 B% j4 d3 H) j1 q! f( I
  5816.       )
    " M, k+ X1 F! |. K
  5817.     )
    + N) F* u% a* {( w& z  ~( P
  5818.     ;; Color Button and Text Field
    ( b3 T6 X% Y# ]7 t
  5819.     (if (/= 2 (logand 2 which_tiles))( v( [! j  e) e0 l
  5820.       (progn" ^/ O3 H- E: G& v3 x
  5821.         (mode_tile "t_color" 1)
    + u- Y+ E1 s( c8 x* `1 i
  5822.         (mode_tile "b_color" 1)
    1 `$ B4 k% U; U4 e4 ]
  5823.         (mode_tile "show_image" 1)! h) D: `7 P" }" a
  5824.       )% S2 G$ c( V4 H
  5825.     )9 {1 ^( m) @; I7 |
  5826.     ;; Linetype Button and Text Field
      J7 Z: ]0 Q+ a$ c% Y% J+ F5 g
  5827.     (if (/= 4 (logand 4 which_tiles))
    ' W  `, i, F8 I, Y& Q
  5828.       (progn
    9 |* l: N9 L  U9 J  F# m. I
  5829.         (mode_tile "t_ltype" 1)8 h* T6 D. O9 d* \& ?
  5830.         (mode_tile "b_line" 1)
    / Q' A. N- e, `. j1 C
  5831.       )  k8 J1 t0 K/ V- o8 ?% }
  5832.     )& j9 O4 @6 N1 V; c9 G, f
  5833.     ;; Linetype Scale Edit Field3 L: q5 l$ C. |$ ]3 D
  5834.     (if (/= 8 (logand 8 which_tiles))
    3 x/ [$ O2 h$ f- |
  5835.       (progn: Z6 b2 r. Z7 ]  T" Q5 X
  5836.         (mode_tile "eb_ltscale" 1)* Z4 ]% z7 Z& D$ c
  5837.       )
    ! A$ n9 u) C* R6 A, }* l
  5838.     )
    ( n4 [2 H/ U2 x8 z
  5839.     ;; Thickness Edit Field.
    . g+ ]% l' t/ \" ?, g4 I& n
  5840.     (if (/= 16 (logand 16 which_tiles))
    2 D, t" Z% x4 F0 c
  5841.       (progn
    0 t8 O) N- e7 R
  5842.         (mode_tile "eb_thickness" 1): D' R( {; A, w  K2 O& I6 O
  5843.       )
    / H) m) c. k- P: @# [% y9 Y2 d' u
  5844.     )' @0 t! M" ~, J+ ?0 H# S" P
  5845.   )
    4 _: z0 ]# u3 g; m- I3 I
  5846.   ;;2 X3 J4 E( d# v2 Y9 e1 }
  5847.   ;; XYZ Point values for all enitites
    . Q8 S" K, J0 ?4 p+ o6 \0 [
  5848.   ;;- y; ]: ~& e" }9 n
  5849.   (defun set_tile_pt1 (ptype)
    ; \4 E% o* n$ T0 N& a4 N3 v: g; _  M
  5850.     (if (= ptype 0)2 b0 M" D6 o. H* v* n" e6 |! k
  5851.       (setq pt1 (trans (cdr (assoc 10 elist)) 0 1))$ O" T4 c* m! \9 q1 }' e7 e
  5852.       (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    $ t# k$ c* B( Z3 D5 J! B
  5853.     )9 n1 i' B' R" ~+ N0 f
  5854.     (set_tile "x1_pt" (ai_rtos (setq x1 (car pt1))))
    6 O% M$ l6 [  v$ G
  5855.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr pt1))))( S6 k, _! ~: b8 u$ M4 W+ Y! q
  5856.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr pt1))))
    " t: J) p. ]+ \* l$ l$ K* h, W
  5857.   ). N6 J- x3 Y- y6 V1 N+ a. k' Q
  5858.   (defun set_tile_pt2 (ptype)
    : I2 I/ r; F9 N# u
  5859.     (if (= ptype 0)
    2 z: d. ^- Y) I$ S% u  p  k
  5860.       (setq pt2 (trans (cdr (assoc 11 elist)) 0 1))2 @8 Z5 {' n" y/ O2 f& {. z
  5861.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))
    - }, X6 S- [( u/ W$ h
  5862.     )  g0 G0 ]  z; Y0 C- M: h
  5863.     (set_tile "x2_pt" (ai_rtos (setq x2 (car pt2))))3 |6 p2 n8 W/ l5 Z6 [
  5864.     (set_tile "y2_pt" (ai_rtos (setq y2 (cadr pt2))))  ~6 @& o  E% Z8 t4 K
  5865.     (set_tile "z2_pt" (ai_rtos (setq z2 (caddr pt2))))2 W" V! W* X! t4 v4 w
  5866.   )
    ( P+ V4 \' i3 @$ A
  5867.   (defun set_tile_pt3 (ptype)% }2 w) e  O0 h9 ~# L# {* U; N
  5868.     (if (= ptype 0)- `4 K& w9 f8 a
  5869.       (setq pt3 (trans (cdr (assoc 12 elist)) 0 1))1 b3 b7 O7 i! @6 s# V5 w7 T
  5870.       (setq pt3 (trans (cdr (assoc 12 elist)) ename 1))6 a" |. G' {( J4 H( M
  5871.     )
    9 V1 }8 a5 w$ h; _
  5872.     (set_tile "x3_pt" (ai_rtos (setq x3 (car pt3))))
    4 g/ ?3 p# e  i' p" r- q' V
  5873.     (set_tile "y3_pt" (ai_rtos (setq y3 (cadr pt3))))
    ' l5 D6 r, e6 U5 V
  5874.     (set_tile "z3_pt" (ai_rtos (setq z3 (caddr pt3))))
    ) @( e6 S7 X3 u
  5875.   ). h7 |9 u/ t, x3 M' C/ g! d9 A) S
  5876.   (defun set_tile_pt4 (ptype)
    & j+ B. j: C, F1 m7 f6 A
  5877.     (if (= ptype 0)
    % m) i- E' N( S, `( ~5 f3 X
  5878.       (setq pt4 (trans (cdr (assoc 13 elist)) 0 1))
    ! k5 ]" U2 O0 t# }3 J/ G9 o/ s$ k
  5879.       (setq pt4 (trans (cdr (assoc 13 elist)) ename 1))
      h- `9 ~% j; ~
  5880.     )
    ' ]* i# b7 C% E3 S1 O. s
  5881.     (set_tile "x4_pt" (ai_rtos (setq x4 (car pt4))))) t$ j; N% C; ^3 i9 t) D" B2 A
  5882.     (set_tile "y4_pt" (ai_rtos (setq y4 (cadr pt4))))
    : {& N( o; v) |
  5883.     (set_tile "z4_pt" (ai_rtos (setq z4 (caddr pt4))))3 t, R& i$ E3 [5 U
  5884.   )
      n0 s1 ?2 G. t: S6 U
  5885.   ;;3 n3 H( ^$ C, E
  5886.   ;; Xline/Ray
    9 ]9 P; p2 S, j9 w2 x
  5887.   ;;
    9 u8 K' g$ ?9 w0 U  m
  5888.   (defun set_tile_xline_pt1 ()
    5 W; v+ ~) i7 F+ a1 F0 x

  5889. ! C" z/ z$ g# K2 d3 ~5 h
  5890.     (setq xline_pt1 (trans (cdr (assoc 10 elist)) 0 1))! {# _3 e7 O6 b/ N8 B, R

  5891. ! ^( @8 J! M! B0 j3 M3 M
  5892.     (set_tile "xline_x1" (ai_rtos (setq xline_x1 (car xline_pt1))))
    2 ]0 d$ `1 o+ O- U% c, p
  5893.     (set_tile "xline_y1" (ai_rtos (setq xline_y1 (cadr xline_pt1))))5 b9 R. V( i$ X& a; s$ V$ _
  5894.     (set_tile "xline_z1" (ai_rtos (setq xline_z1 (caddr xline_pt1))))
    9 B; Z( Y# P. E  }
  5895.   )
    9 N, D# E% b, C, H2 J; y
  5896.   (defun set_tile_dirv ()4 f2 Z: a8 A7 ^" q+ u& a
  5897.         ;; Convert 11 group to local UCS (displacement)
    & I1 O  R& v/ y& A- Q6 d
  5898.     (setq dir_pt (trans (cdr (assoc 11 elist)) 0 1 1))$ a# N& c$ n7 F7 H# ]
  5899. 0 X9 T2 w3 S7 p. f1 ^+ W
  5900.     (set_tile "dir_x" (rtos (setq dir_ptx (car dir_pt))))
    # W+ X: _8 O1 D8 [
  5901.     (set_tile "dir_y" (rtos (setq dir_pty (cadr dir_pt))))8 ]' }0 y' _( C* j$ l5 v7 @% K
  5902.     (set_tile "dir_z" (rtos (setq dir_ptz (caddr dir_pt))))
    , A% Y% h7 n- U! D- ~# s
  5903.   )0 P/ w0 V' i  {* b8 N$ R" J
  5904.   (defun set_tile_xline_pt2 ()
    . s- m4 N( T6 o2 y
  5905.     (if (not xline_pt2)
    & o/ M1 R, `; z
  5906.       ;; Initial second point is Root Point + Direction Vector
    7 Q+ _/ l9 c$ t1 ?- z2 L2 |4 r
  5907.       (setq xline_pt2 (mapcar '+ xline_pt1 dir_pt))
    1 _+ V' d1 q5 B) K  V
  5908.     )
    ; k" R9 \/ ~4 n% o
  5909.     (set_tile "xline_x2" (ai_rtos (setq xline_x2 (car xline_pt2))))
    # Q8 V% v- V; m, a8 u
  5910.     (set_tile "xline_y2" (ai_rtos (setq xline_y2 (cadr xline_pt2))))$ a7 u/ ]/ }8 {" B+ P$ v) w
  5911.     (set_tile "xline_z2" (ai_rtos (setq xline_z2 (caddr xline_pt2))))
    4 H8 X4 z; s4 ^) `; n. r$ o6 s
  5912.   )
    , f* M6 D$ F7 ^. E# r) a; k- s: f- ?

  5913. ) W3 S. [5 s0 R
  5914.   ;;
    . X+ D+ }( A+ Q3 c# x7 F
  5915.   ;; Handle for all objects
    # Y2 ]1 i7 N& ]- x" I- Q
  5916.   ;;4 d* i: y* x: }5 ~7 f$ n& _8 F
  5917.   (defun set_tile_handle ()
    + K2 h5 p0 Z9 U
  5918.     (if (setq hand (cdr (assoc 5 elist)))! _+ \; Q; a# W' b
  5919.       (set_tile "Handle" hand)/ ]8 `: B, l* i
  5920.       (set_tile "Handle" "None")7 ^8 C* f' i. T4 k- Q; L! d( |7 Y
  5921.     )
    : K. W9 l" \9 I  C
  5922.   )
    4 V& e3 P, U% J5 E. n4 l
  5923.   ;;" E# w7 L- s5 R
  5924.   ;; Radius for ARC and CIRCLE
    # w' \+ ?( C1 b% |$ T1 H% c
  5925.   ;;
    2 \4 Y3 E/ z- S  E
  5926.   (defun set_tile_rad ()
    4 {5 T3 A/ }( s0 R9 a$ N
  5927.     (setq radius (cdr (assoc 40 elist)))
    ( v: W$ R+ O6 ^' {: t4 b) D3 W0 R
  5928.     (set_tile "radius" (ai_rtos radius))8 ^) @4 B$ Z7 y. f
  5929.   )
    ; g5 D. d; t2 D* S
  5930.   ;;' p7 ~- F) [0 a" M
  5931.   ;; Start angle for ARC
    7 \$ v# z5 Q  M1 e' n) ^; y
  5932.   ;;9 y; H: [% L& Y+ u
  5933.   (defun set_tile_stang ()8 ]& S- d9 y1 U& t+ K$ b0 S# m3 j
  5934.     (setq st_ang (cdr (assoc 50 elist)))2 O1 W- L7 e# l9 Y) b3 {) i- B+ E! p
  5935.     (set_tile "st_ang" (ai_angtos st_ang))( g/ i  j. e' M- [+ y) F
  5936.   )
    + F$ o4 X+ N( U; f  N- s* J6 @
  5937.   ;;
    1 u) v# K0 v/ z
  5938.   ;; End angle for ARC
    ) X) A* g2 K6 [- }" v
  5939.   ;;8 j; Q' Q/ ?9 b4 M1 g* m) y
  5940.   (defun set_tile_endang ()
    9 L, G: W5 K' W% g6 i' V3 B, D
  5941.     (setq end_ang (cdr (assoc 51 elist)))
    ( ~1 Q  |1 O$ [: A5 W0 Z& W0 ]
  5942.     (set_tile "end_ang" (ai_angtos end_ang)): p9 I9 [8 O! F/ l- C
  5943.   )
    % B2 f1 Z$ j  X* r
  5944.   ;;
    $ R" A. j, n" Q
  5945.   ;; Rotation Angle - Text, Attributes, Block insertions and Shapes
    8 b* F% d. G; T( ]* c1 F( V
  5946.   ;;
    : V  n# L) h. i! m
  5947.   (defun set_tile_rot ()
    7 a- P0 X% C' R7 Z: @4 r
  5948.     (setq rot (cdr (assoc 50 elist)))
    . |1 d6 B" O8 R3 _3 M
  5949.     (set_tile "rot" (ai_angtos rot))7 u1 X; ^  H3 g: x
  5950.   )
    $ d+ I( ~% T9 s/ g, T2 h/ Q
  5951.   ;;
    ' p/ c& `& O1 A9 [  q6 J) X1 B
  5952.   ;; Height - Text, Attributes and Shapes
    , \' l, P/ U5 d; f! s6 f, j
  5953.   ;;! X) ~1 K. L- W# n
  5954.   (defun set_tile_hght ()
    : Q1 [" w/ u7 c) Z& L9 `* D
  5955.     (setq hght (cdr (assoc 40 elist)))
    2 Q* L3 ]! I8 H! v( E- }* |
  5956.     (set_tile "hght" (ai_rtos hght))# }3 B1 W7 r0 n% z" \: h
  5957.   )8 l9 ]8 X% R& F0 K5 |1 @  H9 \3 \
  5958.   ;;* Q. L6 p- d5 U' j+ ~
  5959.   ;; Width Factor - Text, Attributes and Shapes
    ' n" [1 l& w( t9 K- `
  5960.   ;;% n! B# \: L, }. ]4 L5 \
  5961.   (defun set_tile_wid ()
    5 ~: K6 L. {$ u9 W, U
  5962.     (setq wid (cdr (assoc 41 elist)))& N" _7 R: g0 ^
  5963.     (set_tile "wid" (ai_rtos wid))
    : t% k8 m. O! l- `1 |0 S3 ?; C
  5964.   )& G9 |% v! ?' r, \
  5965.   ;;1 Y5 h# i$ `0 K% j3 m
  5966.   ;; Obliquing Angle - Text, Attributes and Shapes- ?6 n, w9 D; d/ P/ m4 a
  5967.   ;;
    ! m% a; Z) d* ?0 e9 S* O+ _/ j
  5968.   (defun set_tile_obl ()
      }+ `5 A& i6 i; T& I# \( D( P% i
  5969.     (setq obl (cdr (assoc 51 elist))): U, Z5 j4 ?- l4 n) Z
  5970.     (set_tile "obl" (ai_angtos obl))+ y: X) U: u2 y0 G& r
  5971.   ); A- l  C1 ]. J1 P7 y& d8 O2 n
  5972.   ;;* N/ u7 g! @% h! w# q
  5973.   ;; Text string
    : P" J) e7 l3 [3 g, l9 B$ K7 r
  5974.   ;;
    , S3 v5 P( W& ?0 [' J5 A. c
  5975.   (defun set_tile_text ()
    ' `8 W2 M" @5 f0 l' |% D, e
  5976.     (setq text (cdr (assoc 1 elist)))
    ; k1 A% M: d- K0 [6 C% K
  5977.     (set_tile "t_string" text)3 f* j0 `  b! K! [! V* ^% a
  5978.   )
    # {( h) l" j9 s# p
  5979.   ;;
    : I: p4 s* |* p' x& K& G" S
  5980.   ;; Attribute Tag+ C: C0 K7 s8 Y+ X* C3 d3 L. b( M
  5981.   ;;
    $ F( k9 c/ u4 ]- Y, z9 p/ u
  5982.   (defun set_tile_tag ()+ ], x' Y0 V! r8 P% S: q$ y
  5983.     (if (= etype "ATTDEF")) m# @$ k0 c; S. B
  5984.       (progn' A9 M% c! ?- n4 T2 ]0 w
  5985.         (setq attag (cdr (assoc 2 elist)))% b- U; l8 _  J+ y( d7 g
  5986.         (set_tile "tag" attag)
    : U: v. J% j# e, T* f8 l
  5987.       )
    5 Q& {: F" A2 |9 j5 s1 J5 }
  5988.     )
    / m: N, s1 S) V. o) E4 [  N1 B
  5989.   ): n" \  a; X0 X( f1 m9 W
  5990.   ;;* Q( o$ U; I8 ~3 m# ]( c
  5991.   ;; Attribute Definition
    2 y1 _6 r! |) ?- h9 }
  5992.   ;;
    / I; v$ b! D' t1 y# Q3 E
  5993.   (defun set_tile_prompt ()
    5 Q* S5 r9 P1 v1 q
  5994.     (if (= etype "ATTDEF")
    0 g1 n- h! e6 D: J; z* S% p
  5995.       (progn. @7 p6 L" Z+ p. Y* t" w
  5996.         (setq atprompt (cdr (assoc 3 elist)))
    9 P7 U% J+ w" k% L
  5997.         (set_tile "prompt" atprompt)
    + |3 \9 C& n! o) G2 F- ?! A$ v8 w
  5998.       )6 J3 \. o( s/ f; N8 x, E9 k* ^
  5999.     )2 i0 D, Y+ i; H
  6000.   )
    6 U+ ^  L' `8 ^4 A% i6 ^
  6001.   ;;
    + R+ u9 g8 U2 P
  6002.   ;; Justification setting for Attributes and Text.  Initializes- ]" O8 N5 ]1 N3 x2 Q
  6003.   ;; popup list box# G. w* z4 ]) z! c
  6004.   ;;
    7 P  f! P9 ]" W' O# U0 {
  6005.   (defun set_tile_just ()  Y4 I' i  L+ E+ x9 y2 C7 V
  6006.     (setq ha (cdr (assoc 72 elist)))  ; horizontal alignment
    & r% A3 q' w4 s* {
  6007.     (setq va (cdr (assoc 73 elist)))  ; vertical alignment
    # Q' L. C- F1 h" m
  6008.     (setq ha-prev ha)
    9 Q/ I9 o( C3 ~* C. l; l
  6009.     (if (= etype "ATTDEF")+ Z; _$ e6 |% ]1 T- W4 T6 T+ w
  6010.         (setq va (cdr (assoc 74 elist)))  ; vertical alignment6 `8 A9 h% O! {$ }; ?1 O
  6011.     )
    ) h' O) W: S0 A# c' G+ J' L
  6012.     (setq jlist
    1 u0 J, h, p* Y2 o' ~
  6013.           (list "Left"        "Center"        "Right"' f9 J( m4 Z0 V8 X
  6014.                 "Aligned"     "Middle"        "Fit"9 N8 w3 A5 V" N2 ]& w0 v! o3 c- Y
  6015.                 "Top left"    "Top center"    "Top right"
    ; L# J" c) V2 ]; Z& w
  6016.                 "Middle left" "Middle center" "Middle right"
    : n6 T/ ^' M3 v9 C$ \+ y+ V) X, x
  6017.                 "Bottom left" "Bottom center" "Bottom right"$ c. E6 x+ k& y( L# ^5 \) Z9 J) M
  6018.           )
    7 H1 r1 z7 `+ }" c/ y+ f
  6019.     )
    0 h" L6 m2 V4 U% c# G, H" _6 k
  6020.     (start_list "popup_just")/ H& C, Z2 B, M! F! C( k% Y# I
  6021.     (mapcar 'add_list jlist)
    * ^# h* [  l6 U, q3 Y& n
  6022.     (end_list)
    : i$ a  K! [* ^  w# q* [0 f5 G
  6023.     (set_just_idx)
    ( F! H/ B6 t# `  ~- E
  6024.     (set_tile "popup_just" (jlist_act just-idx))
    4 L4 u) B: i: a# h, V; M
  6025.   ): w' T. c+ N4 C& Y5 x2 G
  6026.   ;;  m" X. \8 X' e% n
  6027.   ;; Style setting for Attributes and Text.  Reads symbol table for popup list7 G2 |% N0 i* h0 Y% a3 N& ~( R2 \
  6028.   ;; box.
    - @& }; n4 _/ h. q% n
  6029.   ;;
    * R! C0 H7 [" R8 }5 D) _  Z
  6030.   (defun set_tile_style (/ sname style-idx tlist)
    7 ^" {* r1 j% t4 e
  6031.     (setq tlist (tblnext "STYLE" T)
    & N7 b0 e4 o, f% d( O% N
  6032.           slist nil); w* W) d$ k& l9 f
  6033.     (while tlist
    # |7 s5 q4 `) a1 Y4 k
  6034.       (setq sname (cdr (assoc 2 tlist)))
    " ?3 d& N8 m" o
  6035.       (if (and (/= sname "")* ~% E/ I% w. E, [" \/ }
  6036.                (/= (logand 16 (cdr (assoc 70 tlist))) 16))
    ! f5 g6 S) u: F! m! d
  6037.           (setq slist (cons sname slist)))
    ! Y, L; n$ s3 u4 j
  6038.       (setq tlist (tblnext "STYLE")))
    1 a$ p3 N. p9 J( Z% R0 j" r
  6039.     (if (>= (getvar "maxsort") (length slist))
    6 T, A6 B9 P" C& B* N
  6040.         (setq slist (acad_strlsort slist)) ; alphabetize style list! `2 Q# g7 i: Q6 l4 c7 {
  6041.       (setq slist (reverse slist)))     ; or reverse it to put it in DB order
    & O; b0 `/ g: ^) E( C' a) j7 {
  6042. * l( L! ~) k8 K! M
  6043.     (start_list "style")
    : U1 Q1 M# V- C4 o8 _. z- u$ Y+ ^
  6044.     (mapcar 'add_list slist)
    9 D2 K( L) K7 y9 w, T
  6045.     (end_list)
    $ o. L4 \" s* i& U7 q" J1 y
  6046.     (setq tstyle (cdr (assoc 7 elist)))
    + l6 g7 `& O" l" U8 O7 c0 [
  6047.     (setq style-idx (getindex tstyle slist))
    # k0 m0 E% Q5 e6 b
  6048.     (set_tile "style" (itoa style-idx))+ c: g9 W6 B0 Q) S2 u. k) E
  6049.   )
    5 M6 x$ v) F/ f" `5 y" ~
  6050.   ;;2 |! U2 |' l+ [0 i" A" n3 e
  6051.   ;; Text and Attribute setting - upside-down, backwards# _6 g: T, ~+ s; _; y1 y! a& T
  6052.   ;;
    ( ~0 s0 ^6 v+ ]& a1 y
  6053.   (defun set_tile_bk-up ()5 ]; T4 e/ Z$ a
  6054.     (setq bk-up (cdr (assoc 71 elist)))
    % V: ~; N$ L$ l
  6055.     (if (= (logand bk-up 2) 2)
    $ P8 `# Z% t) k& B9 d. k
  6056.       (set_tile "bkwd" (itoa (setq bkwd 1)))& @, h: ~& a4 A2 H2 F
  6057.       (set_tile "bkwd" (itoa (setq bkwd 0)))
    2 p* ]3 z3 w' k0 D) K" c
  6058.     )5 J+ p0 u; r; T/ N3 F/ x6 C* E  w& e* u
  6059.     (if (= (logand bk-up 4) 4)
    6 `4 u2 \! r/ c4 h' V, Y2 }7 _9 |
  6060.       (set_tile "upsd" (itoa (setq upsd 1)))
    7 P  J7 u% W0 m( {6 A# }; |0 t/ [& d; Y
  6061.       (set_tile "upsd" (itoa (setq upsd 0)))9 q& `; _# n. a9 p: t+ c" `; t- `: W
  6062.     ). {; \$ c7 H2 z. x- v
  6063.   )
    # n/ T- V' Q) y. p2 t% b, K
  6064.   ;;) g* Y) v5 D" |( X$ w
  6065.   ;; Attribute setting - invisible, constant, verify, preset% _2 q! t% _5 \  }+ P
  6066.   ;;/ d% Z, m0 O8 s* S( r, Z3 e
  6067.   (defun set_tile_icvp ()# ?* z: h3 q5 [0 _" _
  6068.     (if (not (setq icvp (cdr (assoc 70 elist)))), ^' E- b+ F& Z" p1 T2 J
  6069.       (setq icvp 0)
    ) t( B* w- e+ X2 M! w
  6070.     )
    4 _& ?3 u' F5 }
  6071.     (if (= (logand icvp 1) 1)7 `. X% J3 K! w( q: @1 }" l2 T
  6072.       (set_tile "inv" (itoa (setq inv 1)))( ^8 G4 w7 b( _0 T. B
  6073.       (set_tile "inv" (itoa (setq inv 0)))0 e7 F: \& O: I% O3 G9 t
  6074.     )1 W" r- M: x& K/ X0 r
  6075.     (if (= (logand icvp 2) 2)
    2 e% m0 Y4 x& c4 ?/ n! T3 D/ E
  6076.       (set_tile "con" (itoa (setq con 1)))
    ; F! V- X$ H8 K: t
  6077.       (set_tile "con" (itoa (setq con 0)))
    # p  q2 J7 B5 ^9 q+ i
  6078.     )
    # l* o' b) h* [- J/ X
  6079.     (if (= (logand icvp 4) 4). B1 t$ e: M* F4 G
  6080.       (set_tile "ver" (itoa (setq vfy 1)))
    ; L% K8 j) t2 w) p7 L
  6081.       (set_tile "ver" (itoa (setq vfy 0)))
      p6 R9 b' N  @$ c& y$ Y
  6082.     )
    2 A# A2 u4 t. c# F/ e$ w
  6083.     (if (= (logand icvp 8) 8)* v6 g- {+ Q. n( v- {! V
  6084.       (set_tile "pre" (itoa (setq pre 1)))' ?* I3 `" B/ j# k6 W5 W. b% ^
  6085.       (set_tile "pre" (itoa (setq pre 0)))
    . U; S1 W' ~3 f1 p. {( O, R6 l
  6086.     )
    ) p6 t) i. X2 E$ S( v- V% O; K4 b- }% J: S
  6087.   )
    0 f; i( \" z" o9 L- ]+ Q
  6088.   ;;, a. Y3 W$ F) z+ k
  6089.   ;; Scale factors for block insertions
    6 e7 _3 k" \( i. b+ d
  6090.   ;;
    3 Q" d" [/ q( p+ a1 y# J
  6091.   (defun set_tile_scale (/ temp)
    % t9 L' Z; Q% ]8 W: A* v  b
  6092.     (setq temp (getvar "LUNITS"))7 V+ K0 W0 s: @* L4 P
  6093.     (setvar "LUNITS" 2)
    7 \# r& B$ f# Q  Q% e7 p5 b
  6094.     (setq xscale (cdr (assoc 41 elist)))
    : F# F+ Q/ k0 H9 S# ?% `
  6095.     (set_tile "xscale" (ai_rtos xscale))9 Y/ ^1 h+ D8 X5 J, U7 e1 B
  6096.     (setq yscale (cdr (assoc 42 elist)))% x. g; A& o7 Z, b6 j
  6097.     (set_tile "yscale" (ai_rtos yscale))
    ! j& y0 ~' N* B" T0 v- _8 J
  6098.     (setq zscale (cdr (assoc 43 elist)))
    ' o" n, E( \9 b# @5 }% a; W
  6099.     (set_tile "zscale" (ai_rtos zscale))
    2 ^" L& R- F  N' K- J
  6100.     (setvar "LUNITS" temp)- f; r& E$ S8 o6 x- U: R0 M1 z
  6101.   )
      s3 U5 @4 X2 U  z$ a/ v
  6102.   ;;1 L7 y8 I& x" C# f
  6103.   ;; Rows and columns for block insertions; C% @& N7 d+ B
  6104.   ;;
    / ?0 H% p/ Z3 t* E8 X3 n
  6105.   (defun set_tile_rc ()8 o, h9 ~$ L/ Z* z$ a
  6106.     (setq columns (cdr (assoc 70 elist)))1 O0 v, ]0 _7 E5 M* K' F7 f9 `% c
  6107.     (set_tile "columns" (itoa columns ))
    & o, K( y+ Y" m& K
  6108.     (setq rows (cdr (assoc 71 elist)))1 h: s# V. S% m- z$ ?, x1 R0 j+ g
  6109.     (set_tile "rows" (itoa rows))
    ' a8 q! q4 c3 n: }' {( m. b
  6110.     (setq col-sp (cdr (assoc 44 elist)))# U. e% \* G0 z  r. A
  6111.     (set_tile "col_sp" (ai_rtos col-sp))
    ; s/ S  T- d1 E2 q! I* N
  6112.     (setq row-sp (cdr (assoc 45 elist)))
    ( R% ~' [) `- D$ v0 q+ d1 f, B
  6113.     (set_tile "row_sp" (ai_rtos row-sp))
    8 _4 ?7 P: U' m- J
  6114.         (if (/= hasclip T): c5 f( e8 j. b# b  e& z/ o
  6115.                 (mode_tile "xcliponoff" 1)
    6 M9 q. y, @) _4 p4 F
  6116.                 (set_tile "xcliponoff" (itoa xcliponoff))
    - e& F- x' B: L& Z% g# R: R
  6117.         )
    , ~: e; S* X* t: }/ c5 O. \  g
  6118.   )
    3 `* ?; [  f* u9 n$ Z3 A
  6119.   ;;
    & K3 k8 `8 v" ^2 ]2 Q5 e
  6120.   ;; Invisible edges for 3DFACE
    4 P- y& e- E" s( \: a
  6121.   ;;
    % G  f2 X7 G$ I" z" |! L; p
  6122.   (defun set_tile_edges ()) o. `; k3 F7 y2 U; v& r7 ^8 o
  6123.     (setq f-vis (cdr (assoc 70 elist)))
    ( S0 m8 ]; m$ [7 u) d0 f
  6124.     (if (= (logand f-vis 1) 1)
    4 N! \! g9 c2 ?9 K0 e/ e& r
  6125.       (set_tile "edge_1" (setq edge1 "0"))
    ( N9 _& t3 q& }7 C) L
  6126.       (set_tile "edge_1" (setq edge1 "1"))
    : M9 S  K% l/ B& K- w
  6127.     )) ^+ ~, H( G) U
  6128.     (if (= (logand f-vis 2) 2)5 L: v# N8 ]" L, W* x- \$ }+ s
  6129.       (set_tile "edge_2" (setq edge2 "0"))
    : o" ]$ ~) |" k0 [% L
  6130.       (set_tile "edge_2" (setq edge2 "1"))% ]/ i! b" y0 Y
  6131.     )
    / m, l. z- J8 R  m$ U7 Z( k
  6132.     (if (= (logand f-vis 4) 4)5 M# b2 i8 N, c. ~1 r
  6133.       (set_tile "edge_3" (setq edge3 "0"))( v% [3 M4 s# Q2 l4 ~( z
  6134.       (set_tile "edge_3" (setq edge3 "1"))
    ' C! q) ?/ v; A
  6135.     )
    1 w' k: [1 z5 L0 C- ]! H7 V
  6136.     (if (= (logand f-vis 8) 8)1 m1 U  ?4 _5 p: U+ K
  6137.       (set_tile "edge_4" (setq edge4 "0"))0 E4 N9 g4 l8 F1 C
  6138.       (set_tile "edge_4" (setq edge4 "1"))" ^9 C/ W* g3 r8 ^3 {( H
  6139.     )
    , {' W' {  M3 k
  6140.   )$ [$ _% g0 w, t1 A
  6141.   ;;
    6 i* _' w( \9 I+ g7 \
  6142.   ;; XYZ Point values for polyline vertex
    % R" q( L: Q, @/ N+ H
  6143.   ;;! `7 y3 K3 o% m; E
  6144.   (defun set_tile_vpt (ptype)0 F% V- F6 ^! V8 E) S
  6145.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")
    # ^. R" h/ W, l" I
  6146.         (progn
      E4 i* _3 t' l0 a: d( r2 I
  6147.             ;; ctr is 1 based, vertices are zero based.
    / j2 `* d$ r( _) Z
  6148.             (setq vpt (cdr (getLwVert (- ctr 1))))
    4 G' b+ A: w$ f, {9 E1 l
  6149.             (set_tile "xtext" (rtos (setq x1 (car vpt))))4 z8 Y6 I# Q/ U: T! z& B* _( l
  6150.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    ; c3 c+ ?# S0 ~& I  B1 i# x) c/ A
  6151.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))+ A5 I) q2 |, T9 d
  6152.         )- X/ M7 @  E: u4 Z
  6153.         (progn% Y$ E; f% h3 |8 }
  6154.             (if (= ptype 0)
    0 k# Z6 S1 A- n# S5 {8 F' t/ ?
  6155.                 (setq vpt (trans (cdr (assoc 10 vlist)) 0 1))) U) I: w3 q: L; [& O- F1 \
  6156.                 (setq vpt (trans (cdr (assoc 10 vlist)) ename 1)): B! s6 W- t6 {4 _
  6157.             )
    % }6 U( V( o2 O8 B* u

  6158. $ `' v  E' D9 k& u5 j0 |6 T! X
  6159.             (set_tile "xtext" (rtos (setq x1 (car vpt))))2 D8 R2 {- f* Q0 f
  6160.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    * Y8 b5 }$ p, u/ C
  6161.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))# U' ?. P: k2 u" o
  6162.         )6 c+ d8 m' ?- y4 ]
  6163.     )
    - f7 n3 b# L( c2 }. {
  6164. . k" \( K7 z7 z1 @7 I6 N1 q2 r4 Q
  6165.   )" L' Y: s5 T% G
  6166.   ;; This is the equivalent to doing an entnext on the heavy weight$ g+ ]) e! p' {
  6167.   ;; polylines. The hard coded '4' below allow stepping over the- B9 \. R& u9 C: W4 D4 j
  6168.   ;; 40 41 and 42 group code information. The while loop finds the
      b2 C! A8 Y2 r* }- X: a
  6169.   ;; first vertex which will be used as the starting assoc in the) i8 M/ @' n& U! {5 {: Z
  6170.   ;; call to nth.
    # e) f2 p! i6 `
  6171.   ;;
    ' `; |/ F9 w4 F/ `! @! d
  6172.   (defun getLwVert (tmpctr / count tmp)
    3 C7 i% R4 J( j) i
  6173.     (setq count 0)7 U6 `7 C3 L% t% Y+ x% d. T
  6174.     (while (/= (car (nth count vlist)) 10)
    . e; V/ n6 }7 s  e/ ~  q9 R
  6175.         (setq count (+ count 1))
    ( W5 q& C! O. m0 k$ \+ m
  6176.     )! o3 }# |( p1 i4 m" \+ O8 Q
  6177.     ;; If the counter reaches the number of vertices,
    / u* s) ?  y0 X# S9 S8 ]3 B+ x
  6178.     ;; reset ctr and tmpctr to zero again.
    + @4 c2 H' \; ^% J7 r
  6179.     (if (= tmpctr (cdr (assoc 90 vlist)))
    4 A9 f3 {% J$ i
  6180.         (progn% O# r* {0 A  O6 V2 P5 v) _
  6181.         (setq ctr 0), @' w( w& K8 j& ^
  6182.         (setq tmpctr 0)4 U, h! @" L) f0 \, B
  6183.         )/ r) e/ u0 ?9 ]& T% F1 c' ~# I$ F0 p
  6184.     )
    ; r- n6 w2 c$ t6 u
  6185.     (setq tmp (nth (+ count (* tmpctr 4)) vlist))9 q" d/ f: J; D) J# ]
  6186.     (setq tmp (append tmp (list(cdr (assoc 38 vlist))))); E9 P2 P/ G3 r. v
  6187.     (setq pt1 (trans (cdr tmp) (cdr (assoc -1 vlist)) 1))
    1 b( A4 x) m0 d# s+ p, f
  6188.     (setq tmp (cons 10 pt1))
    1 s4 r" a# B. u
  6189.     (setq tmp tmp)
    * G. @2 d% b. c, X/ L0 E
  6190.   )
    ! X; x: H! A5 t; t1 f' g
  6191.   ;;( |& o/ E) o& p4 p5 I
  6192.   ;; Set tiles for Spline properties. If the spline is rational then we9 ?7 U. _" e4 A( B+ A3 E
  6193.   ;; need to display the weight values of the control points, so set
    # y, J. C4 V4 @- l
  6194.   ;; flag to 1.1 |. R  z% {6 B' i3 N  w+ W
  6195.   ;; 1 = rational spline
    ) b, H, M, m& @; D/ _$ a) |. Y
  6196.   ;; 0 = non-rational spline9 \/ \4 ~; X  C  f8 T  c( `1 |
  6197.   ;;* B2 X1 @: }' H$ f
  6198.   (defun set_tile_spline_props ()0 [2 o$ z3 F7 `  P9 E
  6199.     (setq rational_spl_flag 0)      ;; initialize rational spline flag
    + t4 z* B$ s3 }
  6200.     (set_tile "Degree" (itoa (cdr (assoc 71 elist))))' ?9 f/ Q3 @$ q& D' o
  6201.     (setq bit70 (cdr (assoc 70 elist))), j) ?/ i% l! g7 b7 J
  6202.     (if (= (logand bit70 1) 1), |5 a8 z: H  ?" r, n5 B+ T& `
  6203.         (set_tile "SpProp4" "Closed")! K/ D, ^9 L) n" z
  6204.         (set_tile "SpProp4" "      ")& |# G, L) \& e, N" g
  6205.     )
    7 }5 ~* ]) S, [
  6206.     (if (= (logand bit70 2) 2)$ x- l# k1 U7 Y* W- B, Q' p
  6207.         (set_tile "SpProp3" "Periodic")- b2 N+ V. X; b% n0 G5 J. b
  6208.         (set_tile "SpProp3" "Non-Periodic")4 M- u4 h  z# z& S; Z" Z$ |% G; s% X
  6209.     )9 M( `3 l. X" b) A
  6210.     (if (= (logand bit70 4) 4). B/ f: a( z. ^' ]
  6211.       (progn
    4 N8 U2 g. m/ x
  6212.         (set_tile "SpProp2" "Rational")
    * L% ^1 D0 U5 l+ z/ u* f% h
  6213.         (setq rational_spl_flag 1)      ;; this is a rational spline% t) p) W, B! v! r
  6214.       )$ g3 L& }4 K% o- T+ a. R3 x
  6215.         (set_tile "SpProp2" "Non-Rational")
    5 n+ |) Y0 w1 S6 Y  [
  6216.     )
    # X% ~. y) u. A: V- s5 n+ I0 m. V
  6217.     (if (= (logand bit70 8) 8)1 Z, T) J2 u) J" v9 t
  6218.         (set_tile "SpProp1" "Planar")
    8 T4 z) u( X7 n; J
  6219.         (set_tile "SpProp1" "Non-Planar")
    8 s/ \% o" [9 \; Q/ }( B
  6220.     )- ~; u4 r- J( y3 a. J$ j7 {( Z
  6221.     (if (= (logand bit70 16) 16)
    8 ^" M$ T% \7 D
  6222.         (set_tile "SpProp5" "Linear")5 R. W+ P; D. @6 y9 a0 F/ z  B
  6223.         (set_tile "SpProp5" "      ")
    + Q3 x/ n" E/ a8 s. i
  6224.     )
    7 k2 C9 @# _% B) f* Z4 q
  6225.   )
    . o5 A; w$ g! z3 K7 d
  6226.   ;;
    ! p7 n3 s! n- r/ P
  6227.   ;; XYZ Point values for spline points
    + y& N- [; q, d7 M$ `' g5 S2 x
  6228.   ;; Need to account for WCS/UCS0 Z2 _2 T2 J( R+ r
  6229.   ;;2 O# f. l3 W9 q& A
  6230.   (defun set_tile_cntl_pt ()
      K; j6 }* }! `; E' x% J& i
  6231.     (setq cntl-pt (cdr (assoc 10  elist)))- B: J7 n) k2 e- \6 T9 h) J
  6232.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    0 D1 B) B- i6 u/ [! R# J
  6233.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))/ E0 W: F2 \* E& s, E' v
  6234.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))
    - O3 g4 X. u# n
  6235.     (if (= rational_spl_flag 1)      ;; if rational spline* ~, C: ]1 i# T" v; u0 i  J, l& ?5 T' X
  6236.       (progn                         ;; show weight
    & Y$ p7 O; K1 x; Z6 L
  6237.         (setq weight (cdr (assoc 41 elist)))
    ; R$ I7 k0 i3 g% N' |9 d# x- G' i4 m
  6238.         (set_tile "weight" (rtos weight))/ p+ U- z" k; |5 r9 P
  6239.       )                              ;; else
    4 f' u1 ]" c% y5 h+ ~0 n9 R( Q
  6240.         (mode_tile "weight_text" 1)  ;; disable weight field% w" n/ d7 |$ q
  6241.     )9 b4 J+ u! C; g+ M+ E
  6242.   )# u5 k% ], d0 g: [; w2 y3 p
  6243.   ;;
    1 w9 D* Q3 q+ l6 V& @: n1 q4 ?1 R
  6244.   ;; XYZ Point values for spline points
    * S' q' M3 X- {9 j5 I8 X1 _
  6245.   ;; Need to account for WCS/UCS4 T$ w5 G% u1 i/ V+ z" W( ^
  6246.   ;;
    8 R& ~; d1 d. b( m. N4 N
  6247.   (defun set_tile_data_pt ()5 V; d, j& l9 t' E( V! J# z
  6248.     (if (not (assoc 11 elist))/ G. Q" {7 m( n, Q
  6249.       (mode_tile "data_pts" 1)
    : p4 W  j: C. B  |' {% U- U& [
  6250.       (progn& K& X, Y8 Z0 I  v8 ]4 \# `
  6251.          (setq data-pt (cdr (assoc 11  elist)))6 |  i4 J9 g* u' b' c. n+ ?0 Y
  6252.          ;; display points with current precision.
    % R. d" Q0 Z7 ]
  6253.          (set_tile "dxtext" (rtos (setq x1 (car data-pt))))$ c" G7 }  \  I# i  s  ?" l
  6254.          (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))" N. C2 ]+ A) L  ~+ }) z
  6255.          (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))- f/ }5 L7 G6 @. s
  6256.       )4 P& J4 `( @6 w3 A" h
  6257.     )
    2 D( }1 E/ y6 b3 N
  6258.   )
    8 `. O1 I. g% E, E# l
  6259.   ;;+ y) l( Y, t1 X5 a# A2 \2 ^
  6260.   ;; Fit curve, fit spline, or smooth spline surface setting/ S! @$ x8 Z1 E# |
  6261.   ;;: K; ^1 i9 K- a& Q3 U0 i3 A
  6262.   (defun set_tile_fitsmooth ()% i: n- A9 l' g( b0 @
  6263.     (cond
    & n( y6 R. f! _& T
  6264.       ((= (cdr (assoc 0 elist)) "LWPOLYLINE")8 K) Q+ I* _  P6 f
  6265.         (set_tile "none" "1"); m. U' Z0 K3 _3 i3 j4 N) {, r% ?
  6266.       )( v* [8 v; }# C8 P
  6267.       ((= (logand bit70 4) 4)
    " X- k# T) _4 j5 H/ H
  6268.        (cond& S4 ^- Q8 L$ n* G  U$ t
  6269.          ((= bit75 0)
    - C0 A8 L1 |/ v2 C' I5 I
  6270.            (set_tile "none" "1")0 F' u% B4 U- g3 G# d1 q7 C) t: c& X( U3 j
  6271.            (setq spltype 0)
    ' D- ~* a8 _, P* x0 L, p
  6272.          )9 w3 ^) Y8 A8 \9 N' u7 H& A# m! T& A
  6273.          ((= bit75 5)- k% p  D# |7 z1 n& a! V  H
  6274.            (set_tile "quad" "1")
    4 s, a- i: K! b( Q+ T
  6275.            (setq spltype 5)
    0 j( I% H! D) ]% H
  6276.          )9 D7 r& D  L0 T  ^- H$ q; ~
  6277.          ((= bit75 6)
    * c4 w9 d+ [$ A3 y" I7 W/ T
  6278.            (set_tile "cubic" "1")
    ) o7 O8 a4 e% u; u
  6279.            (setq spltype 6)0 w2 X6 q, u. b0 `2 L9 H
  6280.          )
    0 B2 u9 @# O7 A; N1 s
  6281.          ((= bit75 8)6 l; c7 v# ^+ b- C. ^6 h, J
  6282.            (set_tile "bezier" "1")
    3 O4 J0 d5 T  t, N- T
  6283.            (setq spltype 8)
    $ E, M( x/ l' ~1 N- u
  6284.          )* ^2 [+ F% s! a9 K. B
  6285.        )
    * B3 I  `. P+ J6 v  S7 C9 {* b
  6286.       ); J* _! [$ a/ e6 [7 I/ N0 P8 E& v
  6287.       ((= (logand bit70 2) 2), M4 J- W3 ~; v( m; z
  6288.         (set_tile "fit" "1")
    , p3 I- @7 _' p2 b% M- F
  6289.         (setq spltype 1)% D( e2 F2 ]; u5 k4 ^: H
  6290.       )
    , k4 r7 M; b* `7 A; Z- `4 C
  6291.       (T (set_tile "none" "1"))# L; T6 `1 U# ~1 d) S& b; b% L9 a
  6292.     )7 j% {' a* h  P4 U
  6293.   )
    6 C& I; p7 L9 i- v  l0 f
  6294.   ;;
    ' e8 J- J9 N2 o( v1 U. z
  6295.   ;; Closed or Open mesh and polyline setting
    $ h8 I, a8 ~9 h
  6296.   ;;
    8 z8 S" V& |7 {' S% ]
  6297.   (defun set_tile_closed ()3 F- w( j: i/ m# ^% e
  6298.       (if (= pltype "3D mesh")' t: y  I; O' u3 K* L, V- h) U
  6299.         (progn/ y4 C& \: T* h3 m3 h# G
  6300.           (if (= (logand bit70 32) 32)* s8 C$ F% p; _' ^; ?6 L, U8 w
  6301.             (set_tile "closedn" (setq closedn "1"))8 {# T3 w" l- R7 T8 x: o1 n
  6302.             (set_tile "closedn" (setq closedn "0"))
    3 C4 u0 {0 W* d- O. z
  6303.           )
    " l9 I  w2 a1 i1 S+ [
  6304.           (if (= (logand bit70 1) 1)* r- a/ Q: f$ u% i& Y2 L
  6305.             (set_tile "closedm" (setq closed "1"))) c$ ~" E5 I( I8 k/ f# j, p! J! y
  6306.             (set_tile "closedm" (setq closed "0"))
    ; j4 g! ^9 g1 h+ X- R, `' A- z5 a
  6307.           )
    # E3 h/ Q1 a, i& ^4 P
  6308.           (setq old-closedm closedm old-closedn closedn)- L: d. u( K  K% V: M. \+ m0 |. z
  6309.         )
    ( e: h: Y1 k) Z0 o; U! `# t
  6310.       )6 L9 U) Y* t" [( Y+ H+ R
  6311.       (if (or (= pltype "2D polyline")
    3 Q  m% [+ J; ?5 U, F
  6312.               (= pltype "3D polyline")4 Y3 Z2 s% q+ f' Z3 {/ u' Z4 q% t$ s
  6313.           )( |. Z3 a. [* `5 B- ]. o$ W/ y
  6314.         (progn
    3 v$ N( a8 F8 W' P6 A: X
  6315.           (if (= (logand bit70 1) 1)
    3 m" p4 s$ Z- Y! K  y7 g, @
  6316.             (set_tile "closed" (setq closed "1"))# E4 U0 K" f" M/ b% y
  6317.             (set_tile "closed" (setq closed "0"))
    9 X, s7 r/ {6 B6 D( v" Y: p
  6318.           )
    / m* S2 B' r( u- b7 M
  6319.           (setq old-closed closed); j) j/ o" e3 b4 Q2 F1 m
  6320.         )
      I8 I: M& i& Q% I  ]% D& r
  6321.       ), ^( o- D5 R! n, Q0 n1 s
  6322.   )
    / K# q" |+ u! ]7 p- l
  6323.   ;; Set common action tiles
    1 Y% X( C: V, Q, v; d# u
  6324.   ;;' W7 G3 @1 d4 R( X
  6325.   ;; Defines action to be taken when pressing various widgets.  It is called
    ) P' [) u* V; V" w9 }
  6326.   ;; for every object dialogue.  Not all widgets exist for each object dialogue,
    7 ]9 d0 d) |5 [+ P  W  C! d
  6327.   ;; but defining an action for a non-existent widget does no harm.
    * \- R% q- Q* J3 \3 a& D
  6328.   (defun set_action_tiles ()' a, d7 \0 Q/ P& ]  e! c
  6329.     (action_tile "cancel"       "(dismiss_dialog 0)")
    : p( b- Z) ~' s# k7 |( U8 U
  6330.     (action_tile "accept"       "(dismiss_dialog 1)")
    4 H* p  L$ s3 _5 u
  6331.     (action_tile "help"         "(help \"\" help_entry)")6 ]7 D3 K; q& N4 C! r. ?) G
  6332.     (action_tile "b_color"      "(getcolor)")
    0 w; o( F+ }; V: k, W# H1 _
  6333.     (action_tile "show_image"   "(getcolor)")
    0 H2 C* }, ^4 t. m* R5 g
  6334.     (action_tile "b_name"       "(setq elayer (getlayer))")" ~1 M) }$ Z/ \
  6335.     (action_tile "b_line"       "(setq eltype (getltype))")
    " a6 a) n/ e" J$ b7 a
  6336.     (action_tile "eb_thickness" "(getthickness $value)")! |' x- ~1 q- h
  6337.     (action_tile "eb_ltscale"   "(getltscale $value)")3 x* u/ F  Y/ N$ H4 V6 a

  6338. ( b% g; F8 p3 s" r
  6339.     (action_tile "pick_1"       "(dismiss_dialog 3)")
    & V: q* L/ ?9 q; L# X5 Y' `: t
  6340.     (action_tile "pick_2"       "(dismiss_dialog 4)"): L, I6 b/ Q3 z
  6341.     (action_tile "pick_3"       "(dismiss_dialog 5)")
    ' H6 ~! H2 [" K. }# p' S
  6342.     (action_tile "pick_4"       "(dismiss_dialog 6)")1 r9 ?9 F. E7 ~$ ?$ l
  6343.     (action_tile "x1_pt"        "(ver_x1 $value)")
    " k1 R5 T- {! J3 J8 z
  6344.     (action_tile "y1_pt"        "(ver_y1 $value)")
    0 e* l( S# a0 G% V
  6345.     (action_tile "z1_pt"        "(ver_z1 $value)")! t. y, h+ k4 A4 J' ~, G! R
  6346.     (action_tile "x2_pt"        "(ver_x2 $value)")
    9 e4 e- t, b  [* n: _
  6347.     (action_tile "y2_pt"        "(ver_y2 $value)")6 u" P* x: [: p3 q5 e5 ?: J
  6348.     (action_tile "z2_pt"        "(ver_z2 $value)")
    : m4 I# ~: b; ?
  6349.     (action_tile "x3_pt"        "(ver_x3 $value)")
    " H3 t+ C; h! h- t2 G3 N# j
  6350.     (action_tile "y3_pt"        "(ver_y3 $value)")) a' Y/ _. ?% l# U
  6351.     (action_tile "z3_pt"        "(ver_z3 $value)"). O3 K+ ]+ n$ k  ~; D( {, g
  6352.     (action_tile "x4_pt"        "(ver_x4 $value)"). Q; B7 k) Z4 j
  6353.     (action_tile "y4_pt"        "(ver_y4 $value)")+ G  i3 i7 s$ i- c8 M9 D
  6354.     (action_tile "z4_pt"        "(ver_4 $value)")
    6 U6 u0 t  r# {
  6355.   w% X) J0 F) W% x& O- W
  6356.     ;; Action tiles for Xline & Ray
    * ~" J% G9 t. B
  6357.     (action_tile "xline_x1" "(ver_xline_x1 $value)")0 u$ L% J; Q- a+ k0 l
  6358.     (action_tile "xline_y1" "(ver_xline_y1 $value)")2 u4 E1 z7 K" G; O1 U+ {1 H7 ~
  6359.     (action_tile "xline_z1" "(ver_xline_z1 $value)")" X+ J7 {6 J+ z$ Y
  6360.     (action_tile "xline_x2" "(ver_xline_x2 $value)")5 o( B5 |" G- k- D% D* o- ]
  6361.     (action_tile "xline_y2" "(ver_xline_y2 $value)")
    , t) P0 F  b) {& \7 U
  6362.     (action_tile "xline_z2" "(ver_xline_z2 $value)")9 l. w& X) P& k/ }( D9 M9 Y1 F  b

  6363. & ?5 W$ h6 `2 u7 @
  6364.     (action_tile "edge_1"       "(setq edge1 $value)")( d+ _* O. ], g/ u& s# z) D
  6365.     (action_tile "edge_2"       "(setq edge2 $value)")
    $ o* x- @' B% a, y' Q4 ?: j
  6366.     (action_tile "edge_3"       "(setq edge3 $value)")
    " G. ^! E  H: M7 D. i
  6367.     (action_tile "edge_4"       "(setq edge4 $value)"), R1 y2 F! l% I6 t! l2 ?( [6 _

  6368. 2 C- p8 m1 x5 F8 A  L1 J* Y( ?
  6369.     (action_tile "radius"       "(ver_rad $value)")3 d. q" r: {; u
  6370.     (action_tile "st_ang"       "(ver_ang1 $value)")( R& y! w& ^6 _
  6371.     (action_tile "end_ang"      "(ver_ang2 $value)")
    5 w+ Q% u! l: o) A- y, U& ^
  6372.     (action_tile "end_eang"     "(ver_eang $value)")2 ]  I1 }! L0 r" _
  6373.     (action_tile "minrad"       "(ver_minrad $value)")$ J5 V8 ]; O8 H. ~) ~& b5 {
  6374.     (action_tile "majrad"       "(ver_majrad $value)")
    ; A7 h5 L" F, h2 V  N% m  U

  6375. / z' V& S/ o2 j' ~* q. ]# r4 v
  6376.     (action_tile "xscale"       "(ver_xscl $value)")$ W( L" ]2 c/ |
  6377.     (action_tile "yscale"       "(ver_yscl $value)")
    $ t+ `+ p. f- r& N& g
  6378.     (action_tile "zscale"       "(ver_zscl $value)")% i1 f& h! u. m5 Y" S
  6379.     (action_tile "rot"          "(ver_rot $value)"): R' G  d( A/ c9 b) z- w+ |  i
  6380.     (action_tile "columns"      "(ver_col $value)")' P. W3 p  f; J. F$ T
  6381.     (action_tile "rows"         "(ver_row $value)")5 P. X0 |+ i8 T- {
  6382.     (action_tile "col_sp"       "(ver_colsp $value)")$ i5 N  c6 ~) h- `
  6383.     (action_tile "row_sp"       "(ver_rowsp $value)")
    # f+ v: I2 q) m1 K5 |" r
  6384. 9 O8 p- U5 A/ P  V5 r% K
  6385.     (action_tile "hght"         "(ver_hght $value)")
    ' t# c* u7 r" u' {( Y
  6386.     (action_tile "wid"          "(ver_wid $value)")/ k9 C0 e" K; d. v( m  Z( g  N
  6387.     (action_tile "obl"          "(ver_obl $value)")9 F3 K2 _; k1 k; Y( e6 g
  6388.     (action_tile "style"        "(style_act $value)")- W4 `- N  S3 c  |

  6389. ) J2 m- o) _/ Y' g' g9 j
  6390.     (action_tile "t_string"     "(ddgettext)")* k) X8 h% P( w! o: o" i4 X% Z
  6391.     (action_tile "tag"          "(ver_tag)"): k& k+ q& r7 y5 `
  6392.     (action_tile "prompt"       "(ddgetprompt)")
    / P) K; q1 `9 A5 p- o( M
  6393.     (action_tile "bkwd"         "(setq bkwd (atoi $value))")6 \- m* Z  Q3 r9 a
  6394.     (action_tile "upsd"         "(setq upsd (atoi $value))")' {& C/ |& p( p$ R! _
  6395.     (action_tile "inv"          "(setq inv (atoi $value))")
    4 K; U3 \& D* k2 l: z( v2 K; z; J
  6396.     (action_tile "con"          "(setq con (atoi $value))")
    - T. X( v, |3 c; ]6 ?) Y
  6397.     (action_tile "ver"          "(setq vfy (atoi $value))")
    7 S. A/ @. B& j% \  n
  6398.     (action_tile "pre"          "(setq pre (atoi $value))")) S0 m% d, I. D" A
  6399.     (action_tile "popup_just"   "(jlist_act $value)")
    ' U7 I* N6 X! B' D4 A. D( S8 r. r
  6400. 7 Q& p4 d6 X. q% s9 b; S
  6401.     (action_tile "closed"       "(setq closed $value)")8 a& r, r- M9 g8 G8 b9 \9 o5 B
  6402.     (action_tile "ltgen"        "(setq ltgen $value)")
    ( @7 C, ^( }, Z0 h! R' K
  6403.     (action_tile "closedm"      "(setq closedm $value)")
    + v2 ~* y& R# Z5 t/ m/ o& a- T* \8 I
  6404.     (action_tile "closedn"      "(setq closedn $value)")
    - b0 B1 Z. c, S* N9 e
  6405.     (action_tile "next_v"       "(next_vertex)")
    , }- N% U$ K( O% p" h
  6406.     (action_tile "xcliponoff"   "(setq xcliponoff $value)")
    " O$ b$ h) ~; C8 p, \0 |

  6407. 1 {1 A+ j' K9 p
  6408.     (action_tile "next_cntlpt"  "(next_cntl_pt)")6 _# I5 N: R9 E& ?1 }/ k( I
  6409.     (action_tile "next_datapt"  "(next_data_pt)")( n3 {6 `7 @# r. ^
  6410. # W0 k+ i6 o" R
  6411.     (action_tile "none"         "(if (radio_gaga \"none\")(set_uv 0))")
    ( F! z( b) c! [
  6412.     (action_tile "fit"          "(if (radio_gaga \"fit\")(set_uv 1))")7 A. [$ j9 q5 \( B! j
  6413.     (action_tile "quad"         "(if (radio_gaga \"quad\")(set_uv 5))")4 E4 G/ V: }7 I% g/ `
  6414.     (action_tile "cubic"        "(if (radio_gaga \"cubic\")(set_uv 6))")# `2 D9 E; v2 d5 H0 _; y2 k
  6415.     (action_tile "bezier"       "(if (radio_gaga \"bezier\")(set_uv 8))"), F0 j0 l4 @, ]0 V3 ^
  6416. . K* v$ H7 _( g0 @" g' N
  6417.     (action_tile "u"            "(ver_u $value)")6 J5 C! U# M8 c2 |# R  m/ m& B
  6418.     (action_tile "v"            "(ver_v $value)")
    . U0 f4 F: j! h# i& B8 l1 ?. Y
  6419.   )- e+ [3 S% P. U/ Q+ q& e
  6420. / s6 e- ]. r! _
  6421.   (defun ddgettext()" b3 I7 u: ]- O. s# v1 Z; c( U) a4 H
  6422.     (setq text (get_tile "t_string"))
    * A- \: r) h5 \$ L
  6423.   )
    5 z1 Z6 R( c& W( F3 C8 V& T$ K
  6424. 5 {( h- u7 [4 p$ O$ ?) O: {0 g
  6425.   (defun ddgetprompt()" p7 |4 \' @" i) }& h  o% d
  6426.     (setq atprompt (get_tile "prompt"))
    7 s" |- T+ x% S7 |$ `/ ~  n
  6427.   )
    2 {7 C- R8 {2 a) F8 ^# c4 M
  6428. , w* v: ^7 C# ~9 C3 D! ~1 q
  6429.   ;; As OW doesn't support disabling of individual radio buttons within
    / K4 ]# l. b+ U6 n. ]; m) ~
  6430.   ;; clusters, a check must be performed as to the legitimacy of the
    1 z9 d6 f% d' f* T$ D3 G
  6431.   ;; button pushed and reset if necessary.+ Y' \/ a$ z! N; {2 G. L0 V
  6432.   (defun radio_gaga (pushed)
    + @# X. ~- Y4 J2 S: W
  6433.     (cond5 F: G3 i9 B$ q4 _
  6434.       ((and (= pltype "3D polyline")8 }; K4 i# {7 j- T6 t
  6435.             (or (= pushed "fit")
    1 D) T$ t7 s0 t' z* `. m2 j0 a5 _
  6436.                 (= pushed "bezier")0 V' l: V  @- L( J9 R, ^7 e7 E6 l# O
  6437.             )5 X/ z% K$ p+ m/ x! ]7 y' N
  6438.        ); M/ t6 j2 l1 h6 u3 m% L5 H; x
  6439.         (set_tile "none" "1")* C8 M4 a1 s0 Y/ O) g: ^
  6440.         nil
    2 [* M6 a+ P4 ~( x4 o# q: ^: }) z" f
  6441.       )
    ; h- S$ I4 y/ w8 W! p/ L2 a
  6442.       ((and (= pltype "3D mesh")
    5 C% F6 Y' H; P1 T, P
  6443.             (= "fit" pushed)" R1 X0 v! W$ ?+ i* ^$ I
  6444.        )7 V5 L% r. T7 g* p
  6445.         (set_tile "none" "1")
    + `( _/ w0 N1 o3 l6 d
  6446.         nil. u! C6 A. I4 T
  6447.       )9 {2 m% p) P9 s  A% `) Y; o- c7 Y
  6448.       ((= pltype "Polyface mesh")
    ! V) _7 y0 s( H$ p. {5 l
  6449.         (set_tile "none" "1")2 w1 C; A4 _  Y# S, @$ z
  6450.         nil
    1 U- h- F4 {: c4 p1 x& e2 E
  6451.       )
    / e* R5 T8 H. S" `1 v' G
  6452.       ((and (= pltype "2D polyline")( r; ]9 h! `! @$ l" J. e7 B/ I/ T  A: Q
  6453.             (= "bezier" pushed)
    " k- J. U/ w0 A/ b( g
  6454.        )& L9 ^) V4 J8 B/ \5 a
  6455.         (set_tile "none" "1")
    , G3 N0 |  g% z3 z8 r$ G$ u
  6456.         nil5 T) s, e- `! t- k# N
  6457.       )
    7 ~% F/ P1 h' X9 a  b" W) ^  m
  6458.       (T)
    $ q5 m) k0 @* Q. g
  6459.     )( z) J2 W/ f) z" \
  6460.   )" m+ L) K7 h$ `3 C9 z& J; \* }% c
  6461.   ;;
    $ Z  X: _' \7 R  m8 _' A; R
  6462.   (defun set_uv (type_n)
    5 p. v: E9 i' Q) U. B8 J  a
  6463.     (setq spltype type_n)
    : Z! h; y9 n( S
  6464.     (if (= pltype "3D mesh"), v  {! ^7 p5 n4 {
  6465.       (if (= spltype 0)
    / Z1 r; B) U2 L0 ?2 L- o7 j: v$ W
  6466.         (progn
    ! q" _/ x2 |4 k4 L5 [, ]: {" k
  6467.           (set_tile "u" (itoa (setq u 0)))! ?/ W; u: d$ n' u
  6468.           (set_tile "v" (itoa (setq v 0)))
    6 {+ g. V5 }% [* T# L& V
  6469.         )" k5 ^5 s. a9 Y0 _7 R; L/ E
  6470.         (progn1 e% }7 C+ ^& y4 H0 V; G. ~
  6471.           (if (= u 0)% t9 B+ u0 V3 l& y9 z
  6472.             (set_tile "u" (itoa (setq u (getvar "surfu"))))
    & K& k; x3 C/ @* q' D
  6473.           )
    " e0 {0 _1 l) o
  6474.           (if (= v 0)6 t' v& ^9 u7 G4 _
  6475.             (set_tile "v" (itoa (setq v (getvar "surfv"))))
    3 A3 A# ~2 `5 t* {- F2 ?' C. W
  6476.           )  s+ i/ N6 s/ U3 K! s
  6477.         ): Z' j' o* X1 U* l
  6478.       )- G# i: f$ H& t" v* m  l
  6479.     )
    $ ]9 X: b; a3 V0 P+ }: Z' {' L* J: z
  6480.   )8 [; Q* j* ^* ?

  6481. $ s0 p* w/ `$ J( P% k

  6482. 6 f: Z2 r# U& y. C* g) D: H  W
  6483.   ;;
    ' x  ]3 D: j/ x" p# i* q* O
  6484.   ;; Verification functions: {, K; T8 I- I, ]& w$ q
  6485.   ;;3 d& L! J/ a, `* r
  6486.   ;; Verify distance function.  This takes a new X, Y, or Z coordinate or
    4 \6 j* S3 `) l. g0 E4 v' {. Y
  6487.   ;; distance value, the tile name, and the previous value as arguments.
    1 o/ e& M+ o, i
  6488.   ;; If the distance is valid, it returns the distance and resets the tile.
    2 i1 y8 s8 o2 \" O9 {, |
  6489.   ;; Otherwise, it returns the previous value, sets the error tile and keeps
    . w+ ~; D! z8 W3 e8 L
  6490.   ;; focus on the tile.  Shifting focus to the tile with invalid value can
    & k. t4 Z: m/ j
  6491.   ;; trigger a callback from another tile whose value is valid.  In order
    % l% X6 A" Y$ m  C
  6492.   ;; to keep the error message from being cleared by this secondary callback," [" w0 E6 Z! d1 f3 W! U
  6493.   ;; the variable errchk is set and checked.  The last-tile variable is set
    $ Y5 \) \+ k& T  i
  6494.   ;; and checked to ensure the error message is properly cleared when the- v- U6 @/ ~& t; |  n
  6495.   ;; user corrects the value and hits return.
    * d. t. ~3 R# A  T0 U) J
  6496.   ;;
    : l' f: D! i  J5 D- x1 ~
  6497.   (defun verify_d (tile value old-value / coord valid errmsg)
    5 g# b0 x; ?  W$ l$ l
  6498.     (setq valid nil errmsg "Invalid input value.")
    5 K! R  x0 z& X) r  x4 i% n1 }
  6499.     (if (setq coord (distof value))& d5 d3 o; V& t/ P
  6500.       (progn; W- }7 x9 w* z4 Z# Y
  6501.         (cond
    2 L* n, l! S( n) Z; k
  6502.           ((or (= tile "radius")
      c# q9 \3 V: |& |9 d# y  d
  6503.                (= tile "hght")( |+ t0 [5 s1 X' @2 t: J+ k; S! S
  6504.                (= tile "wid")( ^: K% f% X- P
  6505.                (= tile "majrad")
    4 R$ Y; Q: V3 [0 ?
  6506.                (= tile "minrad")
    9 ?! p, K( y- }
  6507.                (= tile "eb_ltscale")0 H! k, V! P+ X
  6508.            )9 k, x& N3 E# I
  6509.            (if (> coord 0)
    8 T5 p: j; n- m0 L. z, I
  6510.              (setq valid T)& _& T( a  x5 Q  Q+ i; m
  6511.              (setq errmsg "Value must be positive and nonzero.")
    $ J% Y$ l* w( m/ q
  6512.            )
    3 y  S' E: b$ F7 m
  6513.           )
    / a& [' e8 T# ]; X
  6514.           ((or (= tile "xscale")
    . J: x7 J- T( P6 f& O* X9 u6 {
  6515.                (= tile "yscale")
    6 Q/ s+ u; w1 g" Z$ W/ C, V8 C
  6516.                (= tile "zscale")
    ( n& Y8 N! \  b: q4 Y1 D7 k
  6517.            )7 m/ l. W* p# X* J+ W8 N0 ~
  6518.            (if (/= coord 0)
    ' @4 H( `2 z& Q+ p
  6519.              (setq valid T)
      V/ Q1 S6 H, y) y) [
  6520.              (setq errmsg "Value must be nonzero.")$ d$ R: L. @/ k8 u8 f
  6521.            )
    ! \7 A( x$ N. ~0 f
  6522.           )) C; Y- \+ U" C* \
  6523.           (T (setq valid T))* N0 h" c$ z' ~4 h3 I/ ]% G0 F2 Y
  6524.         )% {/ h' E7 \$ a* J, w" |
  6525.       )
    4 n* w3 A! l6 }; E3 _( f
  6526.       (setq valid nil)
    0 F! r' }" p  a% c4 l: u
  6527.     )/ Z! Q* t, Q8 R- A/ B
  6528.     (if valid
    ; r, M9 ]& ?9 M3 ]- k. R
  6529.       (progn* M! G; B3 }( [! |4 L4 Y/ a
  6530.         (if (or (= errchk 0) (= tile last-tile))
    $ k9 B# Z: z( m/ F4 [# V' q" x9 l. o
  6531.           (set_tile "error" "")) [" b( ^9 R0 F& ?  y
  6532.         )
    3 M3 ^7 D2 K7 ?4 a, m; q
  6533.         (set_tile tile (ai_rtos coord))) p9 @' T" l8 \
  6534.         (setq errchk 0)
    ; b, ?8 \3 I: w$ o9 N
  6535.         (setq last-tile tile)6 \2 p  t9 a6 G% h4 ^  a( y
  6536.         coord1 L1 C; U, a- @. E% y8 k* F
  6537.       )$ L7 j9 t4 W$ k! W2 n# i
  6538.       (progn" _. b) U5 o; V2 c
  6539.         (mode_tile tile 2)            ; Move focus to offending field" K. ?" K: t# ]# Q2 y! \
  6540.         (mode_tile tile 3)            ; Select offending text
    1 m" C) G, M/ Y6 S" H& Y) T
  6541.         (set_tile "error" errmsg)
    5 [( I0 i/ M4 p7 I; M2 {0 X
  6542.         (setq errchk 1)
    $ m( ]; }5 i2 ?5 j. X; g
  6543.         (setq last-tile tile)) O' _7 g9 x! O/ Q
  6544.         old-value
    * \' H8 ~6 t2 @+ R$ @* Q. Q4 X# l
  6545.       )
    - Q2 E, f; \- }+ W9 T4 `; ^* o) k
  6546.     )
    7 [% T! X/ Y  i9 t7 ^
  6547.   )6 \- b: Q) p! {. d6 R/ \
  6548.   ;; Function for Xline coord edit box checking.
    0 y9 B* m% H0 {2 g# _) P
  6549.   (defun verify_xline (tile value old-value / coord valid errmsg)
    ; {# d/ s$ y. c) p! W% ^: a
  6550.     (setq valid nil errmsg "Invalid input value.")
    % A4 F/ h5 a7 D. {4 J6 o
  6551.     (if (setq coord (distof value))
    ( H  w' P+ j! V( m0 Z, e
  6552.       (setq valid T)$ M  x0 N. s( V5 V9 G8 P/ ?
  6553.       (setq valid nil)' N$ V: h1 ~- D% t, @. w( A1 w
  6554.     )8 K, ~  W2 y$ J" L
  6555.     (if (and coord
    4 V+ Q+ c4 G+ c2 R. }
  6556.           (and (= (atof (get_tile "xline_x1")) (atof (get_tile "xline_x2")) ); i5 B$ o" `" J7 O
  6557.                (= (atof (get_tile "xline_y1")) (atof (get_tile "xline_y2")) )
    & t5 G6 j9 ]/ f, d
  6558.                (= (atof (get_tile "xline_z1")) (atof (get_tile "xline_z2")) )
    ) A) o  d6 I6 X% ^0 O- J4 L
  6559.           )5 v5 y8 z: Q6 A: t, M+ D
  6560.         )
    % y# N; {6 B% {- K
  6561.        (progn' o( h; x: [( D
  6562.          (setq errmsg
    ! W! M" ?8 d& U* d
  6563.                   "The Root point and the Second point cannot be equal.")" f5 B0 f: h4 D* W0 ~0 _% B
  6564.          (setq valid nil)+ y, v: G1 K) \/ k; B6 G
  6565.        )5 w5 L$ H- i- i
  6566.     )% G  T- E3 A% D1 V4 o
  6567.     (if valid' \1 _+ o% n1 O5 e& i
  6568.       (progn1 f2 B: l6 I) E, Y1 {
  6569.         (if (or (= errchk 0) (= tile last-tile))
    7 V- M3 e$ ^8 }0 L. R& f2 D
  6570.           (set_tile "error" "")
    0 o! Y6 m( B; o: o
  6571.         )
    3 }/ b; |& S7 g! j* U
  6572.         (set_tile tile (ai_rtos coord))2 t* H# Z0 J$ j( D6 F* ^: H
  6573.         (setq errchk 0)
    ! m9 Z) l$ ^6 A
  6574.         (setq last-tile tile)' \% ?6 o- Z/ p" x
  6575.         coord
      j7 l2 Z- p; a3 T8 U
  6576.       )! A2 Q- Y3 y; c4 t
  6577.       (progn
    " ?' h, H- ~4 Q% Z$ R
  6578.         (mode_tile tile 2)            ; Move focus to offending field% M! z7 ]! R, ?& _7 c
  6579.         (mode_tile tile 3)            ; Select offending text' _: T- T8 ]0 W! f* p7 W
  6580.         (set_tile "error" errmsg)
    / |+ \; z0 i9 E
  6581.         (setq errchk 1)
    6 x# s, U$ a6 y
  6582.         (setq last-tile tile)! E7 A6 d- l* v, s: \
  6583.         old-value
    ! j3 b3 S! x7 I. P' D. \6 v
  6584.       )+ m! `9 ]: z7 w$ Y  O# N8 O
  6585.     )6 k  K. @7 {1 o0 [$ v
  6586.   )  [# b) }! u, d  U) b0 V3 {

  6587. 2 w9 ?" _- Q, `- J+ L
  6588.   ;;$ D. g' k  Y  O
  6589.   ;; Verify angle function.  This takes an angle and a tile name as arguments.4 I$ L; [0 C0 K9 U1 ~7 Y  n- h
  6590.   ;; If the angle is valid, it returns the angle and resets the tile.* [( f0 n# z' l# i
  6591.   ;; Otherwise, it sets the error tile and keeps focus on the tile.
    ' R2 k: ]2 l$ D- w- L. w
  6592.   ;;+ s/ s: v7 v  F% ]! c
  6593.   (defun verify_a (tile value old-value / ang valid errmsg oblqmax)4 p5 Y; X) p$ Q3 ?# q
  6594.     (setq valid  nil" t: F) J+ s8 X
  6595.           errmsg "Illegal input value."+ a, V& T0 X: i1 k
  6596.     )
    % m8 i: n  Y" l. `+ G% H  ?: u1 W
  6597.     (if (setq ang (angtof value))' j- n2 V* _0 s8 G9 z& [) v
  6598.       (cond0 Y0 Y4 r( Q5 m) E/ X
  6599.         ((= tile "obl")               ; Restrict obliquing angle
    & N& @3 o4 h, k2 h6 X0 X
  6600.          (setq oblqmax (+ (* (/ PI 2.0) (/ 85.0 90.0)) 0.000001))
    6 a2 ]4 Q3 w" s" g! {! F# `
  6601.          (if (or (<= ang oblqmax)
    : q: r7 p1 I& i( s
  6602.                  (>= ang (- (* 2.0 PI) oblqmax))9 y0 E5 @6 b9 L2 B: ~' l6 a7 Z
  6603.              )
    / A' A8 C8 u6 X. G
  6604.            (setq valid T)8 t7 H6 c, C4 j% @5 B& ^1 _
  6605.            (setq errmsg
    ( B4 W% l/ @' r
  6606.                  "Value must be between -85 and +85 degrees.")
    4 c5 h& Q* \/ |
  6607.          ). T5 _8 Y1 a! P0 Z# [8 G
  6608.         )8 p0 U$ Y( V$ G) R
  6609.         (T (setq valid T))            ; Other angles not restricted
    1 K8 ?( ]8 D/ a
  6610.       )
    7 J; f9 f# z- ?7 k" k  S. V7 f
  6611.       (setq valid nil)                ; Invalid angle input( V$ Q* X) p1 @; k6 I* |
  6612.     )
    9 t0 U; ^3 ]/ [$ G+ J0 v8 `( N6 `* n
  6613.     (if valid4 K' a! _. c+ S/ P
  6614.       (progn7 p' u7 }/ Q! F! Z2 G/ j
  6615.         (if (or (= errchk 0) (= tile last-tile))
    6 T6 D4 F9 S% z6 k
  6616.           (set_tile "error" "")# D3 ?* X! x) c3 \2 g/ S0 x
  6617.         )
    & Q. P3 m, Y( h
  6618.         (set_tile tile (ai_angtos ang))0 v; X0 p, g# r1 j4 O
  6619.         (setq errchk 0)0 M% Y  ~, ~# E' S2 o. V: d
  6620.         (setq last-tile tile)
    & B3 c2 R& U9 q4 y7 s
  6621.         ang
    1 m" T) |+ n1 T
  6622.       )6 h3 V- C( J! ?' j$ h& C+ Q: h5 e
  6623.       (progn, _" c6 r- F4 `7 g5 V5 Q. x
  6624.         (mode_tile tile 2)            ; Move focus to offending field" S5 R5 S0 k# n/ d' h
  6625.         (mode_tile tile 3)            ; Select offending text
    " D" r% l* G. Q, O2 q/ F
  6626.         (setq last-tile tile)
    6 R7 a" v# S$ c# u% o0 S! J- J$ ?! _
  6627.         (setq errchk 1), H& ^$ L# v5 e% K( o
  6628.         (set_tile "error" errmsg)
    , g( M0 t6 d5 Q$ a) `0 H
  6629.         old-value/ q, `# m, ]3 L# F" e3 m
  6630.       )
    ! g; O3 J* C4 `# N8 h9 V1 X
  6631.     )
    + i) [: h0 q; _" O8 u$ a: ?
  6632.   )" j& K7 k  T( L
  6633.   ;;
    9 \1 g# K7 R4 [& U6 }( f7 O
  6634.   ;; Verify angle function.  This takes an angle and a tile name as arguments.! O( k/ ]- `' R* g$ a7 F" h
  6635.   ;; If the angle is valid, it returns the angle and resets the tile.# G# B+ t( h; v0 R$ F0 y% i3 O
  6636.   ;; Otherwise, it sets the error tile and keeps focus on the tile.# b8 I+ o2 f9 l" }
  6637.   ;; This function is specifically for the end angle of the ellipse object. If7 t1 S6 ~0 T* l, o3 @& p& F: h+ v2 `
  6638.   ;; the end angle resolves to zero then we want to display it as 360.
    7 i& X) o8 @1 ~3 X" Z5 i$ k% }
  6639.   ;;
    0 d# v% E8 [5 S: a* Z0 D$ S& Q
  6640.   (defun verify_ae (tile value old-value / ang tempend)
    ; _$ `7 t  a6 K, G8 Y) y
  6641.     (if (setq ang (angtof value))7 w5 I& a8 ~- N' \3 P' T) D
  6642.       (progn# H5 Q7 Y- f1 I% z! E- {; S
  6643.         (if (or (= errchk 0) (= tile last-tile))1 u* f. w, N8 |# g
  6644.           (set_tile "error" "")
    ; N0 d, \8 U4 u! @# x* H
  6645.         )$ `4 r, b9 X5 I) s
  6646.         (setq tempend (ai_angtos ang))+ u, |9 ^( m) t% b! K, f6 \
  6647.         (if (= tempend "0")( z5 E: Z2 a, g( d' H" F& q6 d9 g
  6648.            (set_tile tile "360")
    ) |, `7 J# w8 m+ O1 }3 Z
  6649.            (set_tile tile tempend)+ |7 u) H( V! P' z7 X& ^
  6650.         )
    $ A, s. X5 V4 E, b4 `
  6651.         (setq errchk 0)
    6 k! P; w) I+ P: {4 q
  6652.         (setq last-tile tile)
      T. b& S! m3 {2 U+ E
  6653.         ang
    7 T, q. X# D& \' F2 S
  6654.       )* J; ^' g! c. ?& Y
  6655.       (progn1 t: q. V- S* s! D. m; s8 g
  6656.         (mode_tile tile 2)            ; Move focus to offending field
    0 m; K: U' `0 P( B, d
  6657.         (mode_tile tile 3)            ; Select offending text
    3 r/ T. M% H7 F2 @* Q2 {- X
  6658.         (setq last-tile tile)
    + b& i& ]/ E  h! w
  6659.         (setq errchk 1)
    ; [/ x! \9 ^$ m0 K9 A
  6660.         (set_tile "error" "Illegal input value."): T3 Q0 n( C9 {% m/ `* ^- F
  6661.         old-value+ Y; N8 O. E" T4 P6 `: E
  6662.       )" L8 Q3 q' y! A4 w% R. O6 k! Z
  6663.     )
    0 ]( q# Y0 n+ o2 {
  6664.   )
      P8 d8 o% ^! @; b/ O' a
  6665.   ;;9 c6 X$ U! I' A% E. C/ _
  6666.   ;; Verify integer function.  This takes an integer and a tile name as* I- t# \6 |% z4 F: ]# ^3 l8 J7 M
  6667.   ;; arguments.  If the integer is valid, it returns the integer and resets the3 a& Q, A2 D8 k5 r3 V
  6668.   ;; tile.  Otherwise, it sets the error tile and keeps focus on the tile.  U, O5 Q4 B. x. @- k
  6669.   ;;/ p/ m& N& P1 v' z8 v3 [. t6 R- v
  6670.   (defun verify_i (tile value old-value / int valid errmsg)
    : B5 ?: T8 T- I" P, _
  6671.     (setq valid nil)
    6 w4 q" U3 V# _" C' U% j
  6672.     (setq errmsg "Value must be an integer.")1 V" b7 [- q. W7 J- k+ h
  6673.     (setq int (atoi value))
      n+ q, O, B: G, P$ v& o9 {2 {
  6674.     (if (setq intchk (distof value))  \0 W) d) h- M  C. S) o( V$ U/ N% c) N# [
  6675.       (cond
    0 v5 P, |( Q3 B7 s% b, K7 e
  6676.         ((or (= tile "columns") (= tile "rows"))5 P4 A- Z& K( j6 n( g1 e: g, j
  6677.          (if (and (= int intchk)
    * t1 I5 \/ k  s% v( x+ j$ e, s5 `& ?  B& ]
  6678.                   (>= int 0)
    * T% v' i1 P  ^$ v. p3 i- R% L
  6679.                   (<= int 32767)
    ' @# y. a1 B1 P# Y( O1 L
  6680.              )3 G  H0 }! A, ?
  6681.            (setq valid T): C" i5 t0 ?3 o" Y2 T% E# \
  6682.            (setq errmsg "Value must be an integer between 0 and 32767.")% ^! `. o7 d- Z1 T: c  d0 Q
  6683.          )
    4 y3 f1 P5 ]; t; f% s
  6684.         )$ X8 K3 T; j/ R! x5 J( Z/ ?  y8 q- n
  6685.         ((and (or (= tile "u") (= tile "v"))): j5 Y; v# R; j- B% y; _! x7 G
  6686.          (if (and (= int intchk)
    * ?. |$ h! T( S0 R
  6687.                   (>= int 0)
    ' |' A, Y5 \7 H# L1 x3 Z/ |
  6688.                   (< int 201)
    1 ?8 c1 ?0 \% H5 `$ N9 O
  6689.              )5 @  a% U: r4 l; u) I; u% z
  6690.            (setq valid T)
    1 W7 m8 u& I, x0 I% T7 B* [: J
  6691.            (setq errmsg "Value must be an integer between 0 and 200.")
    - O" o6 p, `3 F- ?% Y7 x
  6692.          )0 N" Z3 m! P+ u, b% J9 g& ?
  6693.         ). Q5 E7 E1 J* G6 P5 A6 B2 A
  6694.       )
    " X0 \- h1 a! H2 D% k- x
  6695.     )# J" x3 |9 V. S: F' P
  6696.     (if valid7 A# L0 D* ]& e
  6697.       (progn
    ! A0 V% I$ z2 [; M  x
  6698.         (if (or (= errchk 0) (= tile last-tile))9 s9 t. L3 E4 S/ ?; M* e- T: g
  6699.             (set_tile "error" "")
    * e' e/ R' }" I4 i( ~- d0 n
  6700.         )$ q0 ?9 Y; u$ L3 y. j
  6701.         (set_tile tile (itoa int))
    9 ]/ }3 k6 C( j0 C' s  Q
  6702.         (setq errchk 0)
    9 K: s$ i/ R* ]2 c4 b
  6703.         (setq last-tile tile)
    ( h5 b9 L! V8 d- s9 C
  6704.         int
    2 k- P+ ~0 o0 F; I
  6705.       )3 j; R4 P% @1 }1 E/ o+ O5 W
  6706.       (progn
    $ a- D) r% s* u% P3 u, A
  6707.         (mode_tile tile 2)            ; Move focus to offending field
    $ A; X+ q) Y: A  S* T9 L$ V
  6708.         (mode_tile tile 3)            ; Select offending text# i7 i! ^( A& U
  6709.         (set_tile "error" errmsg)* G$ u* g( l+ z* N# \
  6710.         (setq errchk 1)
    % ?, R8 |7 x& X2 a) p
  6711.         (setq last-tile tile)  t- w1 K0 K3 U( |9 O
  6712.         old-value
    5 g( D" T" c( K8 v: O2 \! [
  6713.       )0 T! b& _" T' t: w! }  |
  6714.     )
    0 f/ C! ?( a  z: v
  6715.   ). t; R, ?7 Z/ _3 g) E6 x
  6716.   ;;! T; [+ ]- a. K
  6717.   ;; Functions that verify tile values for integers! U' S8 m! k6 b8 T8 j- a9 E, E  y
  6718.   ;;
    . J5 d, y$ J6 A! R* Z( ^/ ^" f
  6719.   (defun ver_col (value)
    6 Y+ R5 _* w. o9 R" |
  6720.     (setq columns (verify_i "columns" value columns))
      @! z( d. E( h- ~  V1 W
  6721.   ); a0 q* O6 L4 A% N
  6722.   (defun ver_row (value)
    # D; [. P3 p" i# z
  6723.     (setq rows (verify_i "rows" value rows))
    : s" h8 m- B8 ?: C& B
  6724.   ); O. k6 B. V3 q1 O
  6725.   (defun ver_u (value): c3 s5 ]0 w& r$ e
  6726.     (setq u (verify_i "u" value u))" J  c: A' z1 x4 B
  6727.   )
    - @/ \( }6 @! g3 g. _
  6728.   (defun ver_v (value)
    # _2 [* a! N1 T' h+ n, I1 s
  6729.     (setq v (verify_i "v" value v))1 U8 |+ N* R) B' M
  6730.   )% i: K+ P' Q4 V' L7 u. D
  6731.   ;;
    5 u: ]' z, [8 P+ ^- X9 ^6 O
  6732.   ;; Functions that verify tile values for reals3 m1 E* D' {& k7 Q6 p) z8 Y; V
  6733.   ;;
    % N# ~, L( V& E+ x. j9 b
  6734.   (defun ver_x1 (value)
    * F* Z8 W6 c( p+ \- s. B
  6735.     (if (setq x1 (verify_d "x1_pt" value x1)) (calc))- D) o7 B0 O; V% k* V) M
  6736.   ), o+ h- X4 Z, ~' k& U2 J$ d* h
  6737.   (defun ver_y1 (value)
    7 q) u% X% ?( u6 c1 u" H
  6738.     (if (setq y1 (verify_d "y1_pt" value y1)) (calc))
    7 ^$ j/ \# `2 B8 G- x* G% B
  6739.   )
    3 f- B5 L8 B6 }& [, q8 Y
  6740.   (defun ver_z1 (value)8 h* U, W. F1 Q; W- O: ^' U; C
  6741.     (if (setq z1 (verify_d "z1_pt" value z1)) (calc))! U9 M% [1 j* d- ^6 H
  6742.   )
    2 c( t$ ], D7 S% \+ w
  6743.   (defun ver_x2 (value)
    7 o5 F/ o) J6 I& o1 F
  6744.     (if (setq x2 (verify_d "x2_pt" value x2)) (calc))5 _0 f7 ~- ]1 W. G$ S4 b0 X1 d
  6745.   )
    3 W5 |/ R1 A1 H( Y$ s, z
  6746.   (defun ver_y2 (value)* h0 A/ Z! Z. m
  6747.     (if (setq y2 (verify_d "y2_pt" value y2)) (calc))
    " e" [$ Z  U+ S5 i! J
  6748.   )
    7 T3 [0 k9 {- ^# b. {3 |% {
  6749.   (defun ver_z2 (value)
    5 m5 A. d& Q% }+ }0 V6 D( ~8 r
  6750.     (if (setq z2 (verify_d "z2_pt" value z2)) (calc))6 q$ ]3 r5 i% ?: e& c
  6751.   )& q# u  r8 b4 r& o, H
  6752.   (defun ver_x3 (value)
    1 [- Q. k% ~  c% K( h. q
  6753.     (setq x3 (verify_d "x3_pt" value x3))" w" T* W0 M9 z/ O3 c! b- I. \) k
  6754.   )' t3 G0 {: `9 Q2 v4 ?2 p
  6755.   (defun ver_y3 (value)
    " w1 N( `" E* h! t( @; e$ V
  6756.     (setq y3 (verify_d "y3_pt" value y3))
    ' ?9 g) v/ }. E# Z! B5 i& x
  6757.   )
    4 C) n/ m4 r* a/ a9 Y% U
  6758.   (defun ver_z3 (value)
    ) l2 ]7 d. I) p3 M3 i
  6759.     (setq z3 (verify_d "z3_pt" value z3))
    0 q1 `* T8 H- O4 O! Z  o3 |. Y
  6760.   )
    / s9 D7 k- ~) s) q1 L
  6761.   (defun ver_x4 (value)! ?! }! g' P* h: n7 ^  g" x
  6762.     (setq x4 (verify_d "x4_pt" value x4))+ i: x% {, {& }+ l: V' A
  6763.   )& K+ L: f# A7 P" L$ q4 X, }
  6764.   (defun ver_y4 (value)
    * w8 {- \( P/ M3 w% [. L
  6765.     (setq y4 (verify_d "y4_pt" value y4))
    & m4 _9 L) X/ b; X; @
  6766.   )0 I  J$ L- I. W7 r
  6767.   (defun ver_4 (value)
    . ?" {9 M1 ^4 a
  6768.     (setq z4 (verify_d "z4_pt" value z4))
    4 c0 U) R/ T3 Z  W* l1 E
  6769.   )
    ( H( [8 v, t- I, Y. B3 ~
  6770.   (defun ver_xscl (value)
    * s) R  |2 J* W- k
  6771.     (setq xscale (verify_d "xscale" value xscale))* X" `- K6 D: k3 v# q
  6772.   )
    $ L+ e% A6 o: |. m: l# a; P7 Q
  6773.   (defun ver_yscl (value)
    ; w6 K) |' a8 C9 b! N" U4 Y" L1 Z
  6774.     (setq yscale (verify_d "yscale" value yscale))  G8 T' f* ]# Y' b
  6775.   )
    . x5 ?3 e4 M- u+ M" A, u  A
  6776.   (defun ver_zscl (value)
    & W4 f' J# s+ a3 d
  6777.     (setq zscale (verify_d "zscale" value zscale))
      A$ [* w' Y* n9 Q# l
  6778.   )
    8 `* ?& e, T, K: p0 ?
  6779.   (defun ver_colsp (value)2 v/ a6 N. u: i2 m
  6780.     (setq col-sp (verify_d "col_sp" value col-sp)): M3 M; v: p) }
  6781.   )+ h; r5 R. c4 X5 h8 j
  6782.   (defun ver_rowsp (value)
      b0 b7 h2 [; f# y& \" A
  6783.     (setq row-sp (verify_d "row_sp" value row-sp))
    + k- t9 ^& L  @( J3 c& E" D
  6784.   )2 D# N# Z3 G" d1 k
  6785.   (defun xclip ()0 o7 R1 r+ Z/ h2 P3 j
  6786.     (setq xclipmode t)6 s" S* R2 V/ s1 m6 B
  6787.     (if (= xcliponoff "1")( W. w$ l3 ?2 J% s5 _; V
  6788.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_on")- Y  n/ E2 E6 o
  6789.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_off")
    : E7 H6 \3 j- u5 v6 F$ p2 Q* r
  6790.     )
    & ~. @7 }: g8 u+ s  T( b
  6791.   )8 d1 m7 v6 f$ c& ^2 w0 _( t
  6792.   (defun ver_rad (value)* R5 Z. Q" q  |1 C2 }9 X0 t
  6793.     (if (setq radius (verify_d "radius" value radius))
    / y8 z/ `, ^( z" o% D) v
  6794.       (calc)' E4 W2 g' B3 J5 c3 ]. }
  6795.     )
    7 A: Y' Q. x; y' Q4 m3 f
  6796.   )% S3 a/ o/ U  J2 d- r  _
  6797.   (defun ver_majrad (value)
    $ y' n3 [( r# o: D; u- y
  6798.     (if (setq majrad (verify_d "majrad" value majrad))8 Y% q" g& D* u, n# J4 a
  6799.       (ell_calc_newval "majrad")
    $ {/ m, {1 V7 T5 ^7 y" U
  6800.     )/ f+ ^+ ^8 o$ `4 L* m+ B' V) v
  6801.   )4 u' L3 v/ x" `0 A' t* v$ ^& D1 l, Z* K
  6802.   (defun ver_minrad (value)% }9 M% y4 ^. r) h+ i: t$ [" ^
  6803.     (if (setq minrad (verify_d "minrad" value minrad))2 {" h" ~$ ]* k: o  X
  6804.       (ell_calc_newval "minrad"). k7 t$ G5 H, ^
  6805.     )0 w! L0 L' F- `$ G+ X; u
  6806.   )
    + f6 q$ r4 a0 ^3 t4 F. `
  6807.   (defun ver_hght (value)
    4 \6 ^! p% S* N: g- U
  6808.     (setq hght (verify_d "hght" value hght))  ?9 @: A/ p. c; @1 \
  6809.   )
    ) @. M9 i2 r% F9 M$ t
  6810.   (defun ver_wid (value)5 P/ l9 h0 F! Q- X$ H. I
  6811.     (setq wid (verify_d "wid" value wid))$ E$ a8 B" [* U
  6812.   )9 F- g, A0 Z# K4 b% m" @  m/ W
  6813.   (defun ver_xline_x1 (value / temp)8 f/ t, ^  I2 W* y
  6814.     (setq temp xline_x1)
    7 R6 M& D+ e6 e
  6815.     (setq xline_x1 (verify_xline "xline_x1" value xline_x1))7 \5 [2 `+ o4 v1 ]- ?) \
  6816.     (if (/= temp xline_x1)7 S+ N% U0 b/ X( I
  6817.       (progn (modify_xline 0) (set_tile_dirv) )
    7 @2 ^: |: e9 Q$ Z* I& g8 G
  6818.     )8 f* v* g! S- O2 Q- O
  6819.   )
    * W# i$ r& g% ?
  6820.   (defun ver_xline_y1 (value / temp)
    ) U0 X! c0 H7 k, J
  6821.     (setq temp xline_y1)0 z( k- B7 V' g) @& V
  6822.     (setq xline_y1 (verify_xline "xline_y1" value xline_y1))+ p6 L- N# \0 C1 ?0 L9 I
  6823.     (if (/= temp xline_y1)
    ; H& O- E* y6 j/ }  Y: c
  6824.       (progn (modify_xline 0) (set_tile_dirv) )& b; Q$ B' K, ~  g  N2 u- Y, o
  6825.     )
    0 f' ^* M) }/ M% l$ ]1 d8 U* m
  6826.   )
    / _* t& j; n' t2 t7 N' N& H
  6827.   (defun ver_xline_z1 (value / temp)) Z$ i. _9 Z7 i3 W+ |" L
  6828.     (setq temp xline_z1): e( `9 M" W+ A, S' A
  6829.     (setq xline_z1 (verify_xline "xline_z1" value xline_z1))4 Z- E& Q: M2 g- {& z6 |7 h( l
  6830.     (if (/= temp xline_z1)
    + p1 ]6 ~8 w( x: R+ {! t
  6831.       (progn (modify_xline 0) (set_tile_dirv) ): X1 H+ Y1 `3 I2 @6 I8 L
  6832.     )- j/ k+ n- `; j3 I; c
  6833.   )
      {* d" _3 @) f! X  `
  6834.   (defun ver_xline_x2 (value / temp)
    & y/ S+ d: X4 j0 n2 f
  6835.     (setq temp xline_x2)( e+ g7 o# O( I. X, O; h
  6836.     (setq xline_x2 (verify_xline "xline_x2" value xline_x2))
    . J, D' x5 K# @
  6837.     (if (/= temp xline_x2)* w2 {# O0 C+ Z4 \
  6838.       (progn (modify_xline 0) (set_tile_dirv))
    # k8 J% h- Z: H5 J: |2 M/ F
  6839.     )
    ' y: C4 q. Y" }( t2 W3 r/ T& }
  6840.   )& J1 ]: D6 f0 r& X1 g: ~
  6841.   (defun ver_xline_y2 (value / temp)
    ' K" ^2 R1 f7 x1 |$ S$ ?% s  }
  6842.     (setq temp xline_y2)
    9 n0 D2 L2 t: {1 s
  6843.     (setq xline_y2 (verify_xline "xline_y2" value xline_y2)). s$ Y0 W6 F. e7 {
  6844.     (if (/= temp xline_y2)% Z1 b. d/ q' g$ c" q3 x
  6845.       (progn (modify_xline 0) (set_tile_dirv) )% N5 ]! T$ d3 ?4 I9 Z6 m
  6846.     )- _* Q6 S# N4 F0 n, m1 z
  6847.   )6 v4 O1 Y2 |! s7 t( e. c1 W5 ]
  6848.   (defun ver_xline_z2 (value / temp)2 K% n' F4 G- I7 q
  6849.     (setq temp xline_z2)  e" }% E* b8 P( A2 S+ O" [: p
  6850.     (setq xline_z2 (verify_xline "xline_z2" value xline_z2))5 T1 K4 V5 P2 S; L2 u# W; ]9 k1 o9 i
  6851.     (if (/= temp xline_z2)
    ! \) Q- r) D5 P  c! l% k
  6852.       (progn (modify_xline 0) (set_tile_dirv) )
    $ L6 @' K) f2 Q
  6853.     )
    , O& ?3 Q# k. V. G* x  g2 W; X
  6854.   ), C8 _/ y. H) {' d1 r* n
  6855.   ;;
    0 }, N9 T8 b# k" Y% h4 V
  6856.   ;; Functions that verify tile values for angles
    0 E/ R/ k/ j2 _$ E1 ]
  6857.   ;;
    ' Q2 x7 t7 s# k3 X- g8 ~; P
  6858.   (defun ver_ang1 (value)+ s8 p" V6 T2 J  }3 p' C: W
  6859.     (if (setq st_ang (verify_a "st_ang" value st_ang))
    9 Y- d$ X4 y0 I0 {, }  {
  6860.       (calc)
    , p! m- g. D- `2 ^  f1 y% }, t
  6861.     )" U- G7 S2 l& g
  6862.   )
    7 i: V8 Y1 a5 G! Q1 X5 [0 s
  6863.   (defun ver_ang2 (value): g  q8 M% T& V) A& i$ u
  6864.     (if (setq end_ang (verify_a "end_ang" value end_ang))
      ]/ k3 i7 g9 b
  6865.       (calc)& J4 @* k- {% K( l8 g1 }8 q& R
  6866.     )! U. J- z) I- h! y5 t2 @* N
  6867.   )
    2 w' o' B- \# q, [3 G  C$ ^& ~
  6868.   ;;
    7 T. g4 Y) ?; x( n
  6869.   ;; Verify tile value for ellipse end angle. Handled slightly
    % z" C" S$ [3 v8 m1 ?: M
  6870.   ;; differently than the other angles.
    2 ~" O+ S: N& f! f+ I  R# }  R
  6871.   ;;$ }7 }! m8 A) [
  6872.   (defun ver_eang (value)
    1 E/ ]' W! C* W$ M
  6873.     (setq end_eang (verify_ae "end_eang" value end_eang))
    $ H& v+ q: U  |+ g: r6 l4 |
  6874.   ); b, V$ V1 I  t9 R4 O; U) _
  6875.   (defun ver_rot (value)4 S5 m1 T% ^5 A. i
  6876.     (setq rot (verify_a "rot" value rot))0 V7 ?: N7 e- A+ h2 l$ F  |$ m1 u
  6877.   )* Q, g! S- o7 S0 j, u
  6878.   (defun ver_obl (value)
    $ Z/ O4 ?0 V) R: T- Q( Q
  6879.     (setq obl (verify_a "obl" value obl))* p- S) T8 d5 O9 E1 h# p0 J
  6880.   )5 B9 d$ k9 r$ J/ X0 q9 {
  6881.   ;;
    4 U  l" P! ~% x/ @' }
  6882.   ;; Function that verifies attribute tag field for null string,
    0 o( e5 K* o* F8 f; e2 C$ y
  6883.   ;; or a string that contains one or more spaces.  Tile value
    : X' H" N! Y0 E. n4 y) K
  6884.   ;; is also converted to upper-case as well.! M9 m4 S/ B# T
  6885.   ;;
      S3 C) L; ]  x' C
  6886.   ;;
    * `* {/ r/ B* ^! |9 k5 i8 ]* E  {
  6887.   (defun ver_tag ( / tval)) [1 X$ W2 n# K+ {1 s' o4 I
  6888.      (setq tagval (get_tile "tag"))
    ' k! a8 m0 r& O: t
  6889.      (set_tile "error" "")
    ! }% F3 f! |2 W' s) w
  6890.      (cond8 P# t& f2 ?% F( W0 C
  6891.         (  (or (eq "" (setq tval (strcase (ai_strtrim tagval))))! M* d- o- Q/ H/ n
  6892.                (wcmatch tval "* *"))+ p. X; ^8 ]. Q
  6893.            (set_tile "error" "Invalid attribute tag.")8 x6 @$ Z, f" n$ t+ |' Y/ ?
  6894.            (mode_tile "tag" 2)% ], m8 V8 l, Q  B
  6895.            (mode_tile "tag" 3))" N2 |3 m: `2 ?9 b/ h; f8 W( Z
  6896.         (t (set_tile "error" "")6 T% E3 I9 I1 P1 o1 q5 L( s! v4 j# L
  6897.            (set_tile "tag" tval)/ ]5 A+ c! w' `2 S
  6898.            (setq attag tval)))* X; _) G. Y% U4 u; e) j
  6899.   )' A* m2 e: P: g( C% v
  6900.   ;;8 a4 [# Y( U1 _; c  m
  6901.   ;; Calculation functions  R2 P' ?0 K* M' w- q1 n, I, @: u# p
  6902.   ;;$ K3 t: g9 i* C0 R$ Z
  6903.   (defun calc ()) F- X- D# g3 i3 r
  6904.     (if (= etype "LINE") (line_calc))7 o" Z4 c0 B/ }' K4 B4 y/ N
  6905.     (if (= etype "ARC") (arc_calc))( t1 j/ G8 h# h: @0 x- d, T
  6906.     (if (= etype "CIRCLE") (cir_calc))
    $ w9 l: P" q( L1 ?! `3 n
  6907.   )
    0 N; x8 r4 ]: T! d( Y. B
  6908.   ;;
    & }7 p& o4 y5 i9 L5 V
  6909.   ;; Calculation functions for lines, arcs, and circles
    ; o4 F: F4 ?. J. e: O( V
  6910.   ;;
    + `( O3 k: e+ N( d
  6911.   (defun line_calc ()( c& m1 |! W( }- P6 W
  6912.     (setq stpt  (list x1 y1 z1))1 {$ V6 A$ b# R5 _
  6913.     (setq endpt (list x2 y2 z2))
    & G% g( [8 [7 g! c+ E6 H& T! C
  6914.     (set_tile "delta_x" (rtos (- x2 x1)))
    4 l6 \$ g0 ?3 ~8 V; S- K
  6915.     (set_tile "delta_y" (rtos (- y2 y1)))
    * |$ H3 J! G3 y: G2 _; O+ m
  6916.     (set_tile "delta_z" (rtos (- z2 z1)))
    / v% l: U" W9 n
  6917.     (set_tile "l_length" (rtos (distance stpt endpt)))
    0 Z! J+ c& ]( ]0 f- c$ ^' @
  6918.     (set_tile "l_angle" (angtos (angle stpt endpt))), H( A) Z* ?  W7 s- k" F  C
  6919.   ): X8 d3 r% Z, X3 P
  6920. 0 x2 B1 e6 @0 s1 L
  6921.   (defun cir_calc ( / area units)
    / k( p6 n1 h9 k* V- D$ C
  6922.         (setq radtest radius)1 b/ b4 l- t3 K; n8 y& _
  6923.         (set_tile "Dia" (rtos (* 2 radius)))) k- f6 n9 c$ d/ v
  6924.         (set_tile "Circum" (rtos (* 2 pi radius)))
    1 M( _4 `; D  H# |8 l
  6925.         (setq area  (* pi (* radius radius)))0 a* U- ]' o$ c$ m  q% D  Q1 B; G
  6926.         (setq units (getvar "LUNITS"))0 v& u* |5 |, K$ W  B# U
  6927.         (if (or (= units 3) (= units 4))
    / V' I7 O: ^! Y4 R! e4 t
  6928.             (progn9 ]* _4 G6 c; i( J9 v6 D, a
  6929.                (setq area (/ area 144.0))6 V" u6 R! ]* @# M  C5 N1 v
  6930.                (set_tile "Area" (strcat (rtos area 2) " square ft"))
    8 t/ h2 l& a/ X7 p* B& M% h
  6931.             )
    + P! U! x+ b' \3 _0 c8 @3 H
  6932.             (set_tile "Area" (rtos area))
    ( z/ c, Y1 s3 H. o  E# Q
  6933.         )
    ; n% h& X2 v/ C; d( X5 I! E. S
  6934.   )4 _$ P" c% B( C! j  e+ [! R2 f) x' {" x  v

  6935. 2 a, m. s  O, H( D/ j
  6936.   (defun arc_calc ()
    - J1 `1 d" L: ?$ |& @0 F
  6937.     (setq totang (- end_ang st_ang)), c8 |" B! ]5 u- [
  6938.     (while (< totang 0)
    5 q1 j/ K3 \! K- X8 v8 ?. B
  6939.       (setq totang (+ totang (* 2 pi)))
    # C& b# T0 R3 z3 ]" l4 n# N% Y. M
  6940.     )8 B/ F" i4 R0 Q' a- `
  6941.     (while (> totang (* 2 pi))
    2 c, E* a7 z6 t, O; X0 p. F' G  B
  6942.       (setq totang (- totang (* 2 pi)))/ c6 B: [8 U( a3 K8 G: k8 P
  6943.     )
    4 P/ P" {- B$ E6 ?: l
  6944.     (set_tile "tot_angle" (angtos totang))% D# a1 t( |; W, }8 J7 O) a
  6945.     (setq arclen (* (* 2 pi radius) (/ totang (* 2 pi))))
    + r/ R! n& _4 X0 y5 q! h5 K
  6946.     (set_tile "arclen" (rtos arclen))+ G+ o& R: ?, z
  6947.   )
    : v$ j7 P' ]' F5 V8 t/ p
  6948.   ;;9 S' `2 M+ M1 f% ~! e& ^
  6949.   ;; Calculate the major radius, minor radius, major axis direction.
    * A1 T+ H4 v: w9 W1 O2 x0 n
  6950.   ;; Get radius ratio. Convert Start, end parameters to start and end
    7 Q& A/ ]* M. [  C' _) n
  6951.   ;; angles. Save Major Radius value in "old_majrad" in case the user
    2 `5 m9 q& B% S: J+ E( I
  6952.   ;; chooses to input a new Major Radius value later. It's needed to0 E4 i# o! U* X
  6953.   ;; calculate a new Major Axis Vector value.& `7 T" N4 @$ y1 i2 j
  6954.   ;;
    # b5 A, |5 l! u6 I; `
  6955.   (defun ell_calc (), U; I9 C. [+ u& @2 U3 L8 q
  6956.         ;; Get major radius from the major axis vector.
    ' s$ u, e6 i, K( q% Q* t! I$ V
  6957.         (setq majaxis (cdr (assoc 11 elist)))& B: G1 Y6 h& O5 i1 L' C
  6958.         (setq xx (car majaxis))
    . L  ~0 f' {. |1 W" h% {! t4 b( l
  6959.         (setq yy (cadr majaxis)): C2 V3 J6 c6 N6 n0 W. F
  6960.         (setq zz (caddr majaxis))' J1 b+ D2 Z# n: y6 p7 i. P! X2 }
  6961.         (setq majrad (sqrt (+ (* xx xx) (* yy yy) (* zz zz) )))" p' J, s  }7 H
  6962.         (set_tile "majrad" (ai_rtos majrad))
    4 y& ?/ t7 E6 y) v$ m4 j, V) `
  6963.         (setq old_majrad majrad)% D- {1 N7 J8 ], {6 x# |
  6964.         ;; Get radius ratio& t/ `4 E* Y, M1 R* Y  l
  6965.         (setq rrat (cdr (assoc 40 elist)))
    + m9 v$ m" H5 s0 ?$ s+ _. [
  6966.         (set_tile "rratio" (rtos rrat))* w3 r/ b' a3 n6 |3 ?
  6967.         ;; Calculate minor radius" I& A: ]* R. }% [6 x2 I4 K
  6968.         (setq minrad (* majrad rrat))
    # G6 e! d# D) D( d
  6969.         (set_tile "minrad" (ai_rtos minrad))( ^9 V0 c+ R3 s; B7 M; Q( J! G/ |
  6970.         ;; display major axis vector# Z- r. R, d2 v4 J8 m+ u& C
  6971.         (set_tile "Majraddirx" (rtos xx))3 _( I6 o" x7 [7 S
  6972.         (set_tile "Majraddiry" (rtos yy))! l6 o& ?+ i6 H2 k6 |# Y
  6973.         (set_tile "Majraddirz" (rtos zz))' i2 l$ C6 R' \. X
  6974. * U6 L8 Y. f$ {
  6975.         ;; Convert start parm to start angle
    # E% D! r0 S. A
  6976.         (setq stparm (cdr (assoc 41 elist)))- t, n! q! F. [# L+ \9 d: x
  6977.         (setq vecx (cos stparm))
    # M4 I7 f9 Y& F4 L5 Q  h; M
  6978.         (setq vecy (sin stparm))
    1 r) m: f6 Z' A" G
  6979.         (setq st_ang (atan (* rrat vecy) vecx))
    : a1 x* r3 @' M/ @* `# J( W
  6980.         (setq tempst_ang (ai_angtos st_ang)), T7 t: c' Y, M+ i' s, B) y
  6981.         (set_tile "st_ang" tempst_ang)
    ! S1 |$ R% R( b& c7 R* f( R
  6982.         ;; Convert end parm to end angle. If end angle evaluates to 0
    ) S/ x2 G( B8 ]2 O$ p. d8 ?. y; X
  6983.         ;; degrees then display it as 360 degrees.
    2 S8 v6 s3 R+ Z, @# @
  6984.         (setq endparm (cdr (assoc 42 elist)))3 I5 z/ D5 Z/ k: o) [
  6985.         (setq evecx (cos endparm))
    % w2 ]. p; m+ U: ]  Y4 O3 }
  6986.         (setq evecy (sin endparm))  Y7 a/ _2 [9 e& C+ f4 J7 _
  6987.         (setq end_eang (atan (* rrat evecy) evecx))1 l5 J' N; @4 y1 d" r0 q* C
  6988.         (setq tempend_eang (ai_angtos end_eang))9 x. C; K( {  B! I6 M8 E# k: v# C
  6989.         (if (= tempend_eang "0")& {9 k0 p4 H3 E1 I1 {
  6990.             (set_tile "end_eang" "360")1 ^- a, d+ f7 _+ H
  6991.             (set_tile "end_eang" tempend_eang)" k% Q/ L) R1 O! z1 Q
  6992.         )
    % O6 [) O1 v1 i* S
  6993.         ;; Get area of the ellipse.
    ( J: W- N( ~" t4 n' Z: k
  6994.         (ell_calc_area)6 h- \* v1 v) l9 H0 c$ E8 Z
  6995.   )/ B8 u' g" U9 o. _
  6996.   ;; Calculate area of ellipse. If it is an arc then
    ) |* T$ w  W" r* s' o8 J
  6997.   ;; grey out area display.  C& n& W5 c8 d+ ?& `
  6998.   ;;1 \7 A1 p4 N7 {: _
  6999.   (defun ell_calc_area ( / area units)
    5 Q" y" U0 o+ d- g
  7000.      (if (and (= tempst_ang "0") (= tempend_eang "0"))
    , o. t8 d! X0 _9 |) {
  7001.          (progn
    & W3 l* b0 t1 e4 z) \! e
  7002.              (setq area  (* pi majrad minrad))
    & i$ S4 i3 G$ a! O
  7003.              (setq units (getvar "LUNITS"))' u6 `: J/ S7 N
  7004.              (if (or (= units 3) (= units 4))0 N- T$ z( t9 |8 Q1 h2 \
  7005.                  (progn
    . i9 _# a# A" V4 r
  7006.                      (setq area (/ area 144.0))
    : ]; E2 G9 ?' m' D: H8 g
  7007.                      (set_tile "Area" (strcat (rtos area 2)" square ft"))
    ; k- n$ i" p" O6 A4 {7 _7 K
  7008.                  )
    $ `0 _  @! V3 r% N) v' s
  7009.                  (set_tile "Area" (rtos area))
    - _+ W) e, T. |6 U* H! @+ _2 K
  7010.              )2 o' h* m. b3 P+ A% n9 y0 y
  7011.          )
    , y* t# d9 @- p9 o
  7012.         (mode_tile "Area_text" 1)8 u, f4 D- A, k' e
  7013.      )- \4 M' t  D. R3 k& z2 [! n8 h
  7014.   )6 R# z) q# o( @; Q7 I
  7015.   ;;2 x* w5 |. G3 a# o  ?
  7016.   ;; Calculate new values for ELLIPSE7 Q; R* Z. b# L$ E9 c% V: T. P/ H
  7017.   ;; Minor Radius, Area
    9 N7 U6 v  n5 e
  7018.   ;;! g6 m5 n4 x. j0 S2 h" @
  7019.   (defun ell_calc_newval (ell_tile)
    5 @; X2 I/ V. Z* l
  7020.     (if (= ell_tile "majrad")
    8 z# b+ U1 i0 R8 B) n3 V7 U* V8 s
  7021.       (progn
      r5 r8 j! C2 v
  7022.          (setq rrat (/ minrad majrad))
    8 W9 t, W6 V7 b* J8 F
  7023.          (set_tile "rratio" (rtos rrat))- W9 C+ \/ _/ F7 C4 p
  7024.          (ell_calc_area)- F3 `' z$ G7 W  \7 p: I; t
  7025.       )
    & v9 P$ I, K3 L
  7026.     )4 ~3 A* m$ \9 _/ R6 b5 I. S
  7027.     (if (= ell_tile "minrad")/ V- O# r% u1 T0 ]
  7028.       (progn6 N" X1 w6 Y/ r) Q& s5 l: G! [
  7029.          (setq rrat (/ minrad majrad))/ Y/ Q: z* ~1 u, f
  7030.          (set_tile "rratio" (rtos rrat))  J2 T, l5 g. ^* E
  7031.          (ell_calc_area); J# p& |- K# H7 [. y6 r
  7032.       )
    ( s: i* S: X# h, i
  7033.     )
    + x0 ]% x$ P% g2 G: w5 ^
  7034.   )
    " S: x& _  g5 A6 G2 @% k% s

  7035. # {" Y* @' E# K0 V# ]& d! u
  7036.   (defun set_dimen_props (/ loop a stl txstyname)# J0 s9 ~; O+ R
  7037. ) ^# j# u1 p# A
  7038.     (setq stname (cdr (assoc 3 elist)) ; get style name
    & m6 g: t" V8 A0 U7 j% ?8 ?
  7039.           stl (tblnext "DIMSTYLE" T)
    : S8 E8 h2 b5 j1 T2 h$ Z" w
  7040.           stlist nil)9 U/ G; o4 d9 }
  7041.     ;; Get all style names and list them in alphabetical order6 h% W1 F( w9 T
  7042.     (while stl
    - a+ ~( p$ h2 @* }' H8 b
  7043.       (setq sname (cdr (assoc 2 stl))); T; d: p1 C  Y' P4 {( r
  7044.       (if (/= (logand 16 (cdr (assoc 70 stl))) 16)
    & v4 U/ i& n& G7 l
  7045.            (setq stlist (cons sname stlist)))
    - L3 v. t) f# L) ^: u
  7046.       (setq stl (tblnext "DIMSTYLE")))- U" F% w! P0 X& L" Y* M) q! i
  7047. 1 y3 I9 d5 H4 |2 d; x! a0 F
  7048.     (setq len    (length stlist)
    ) a  x3 `7 C$ _. ~, c0 B. y
  7049.           loop   07 O2 }2 s, X' p0 \% p6 T" B
  7050.           dimsty stname" L8 w4 b+ \; |9 x
  7051.     )8 [) s, d" T/ R, q

  7052. , T. Z$ L. [& H" y/ R$ h
  7053.     ;; alphabetize style list, depending on maxsort
    # o/ Z) }0 Q8 f1 ?
  7054.     (if (>= (getvar "maxsort") len)9 Q- d" |- t9 B! e
  7055.         (setq stlist (acad_strlsort stlist))
    3 G4 d' K5 e" |8 |' t
  7056.       (setq stlist (reverse stlist)))- g; v: t' C' ?5 p1 n+ I  t

  7057. 3 A9 `  K' ?$ G8 w. o% t" v
  7058.     ; *UNNAMED style (dimsty = nil at this point) is replaced with
    9 l& V+ u& I: b. h' d
  7059.     ; the current style.  After R13, we require dimensiosn to have a4 M& H- J  n8 _/ V' o8 K
  7060.     ; dimstyle, so we plug any holes where we find them." n) \9 s5 _# A* N
  7061.     (if (null dimsty)4 t. g8 H; [: d: g1 q! E
  7062.       (setq dimsty (getvar "dimstyle"))
    1 k3 Q2 b* j' G" o
  7063.     )
    $ B, T  e3 h* g  B# z  O- P
  7064.     ; Show the styles in combo box. o8 f# k( ?2 z8 u2 G
  7065.     (start_list "mod_style" 2)' F8 k7 \$ c9 A9 J# g& @! @# j
  7066.     (while (< loop len)
    ' r. r- W8 P4 J9 o
  7067.       (add_list (nth loop stlist))' ]! C% |9 t, g5 @2 k+ |  \
  7068.       (setq loop (1+ loop))! J6 h# u& u( H4 n" \$ k+ W; f
  7069.     )
    4 }5 y: b1 D, C+ u5 p* g% E& _
  7070.   N  ?& e: j- d9 c# v% c
  7071.     (end_list)
    ) J1 o/ o# I: F; g5 s+ x# B
  7072. 7 h% v8 \& ?1 N* s
  7073.     ; Hilight the style name of the selected entity
    % `5 G  |- Z, q$ l  j4 c4 M
  7074.     (while (and (< 0 loop) (/= dimsty (nth loop stlist)))
    . M; O$ u- ^4 J" ^* l: P* F
  7075.       (setq loop (1- loop))3 C0 V$ _- b' ^$ ?; s  R4 A
  7076.     )
    , C2 o  j; D) f& q) k2 V- Z3 M
  7077.     (set_tile "mod_style" (itoa loop))2 G8 A/ [# g, o6 r  M/ ~% n' D
  7078. . W1 d! K: W/ Z9 U2 d
  7079.     ; The following is the list dimvars. It must be sorted in the same7 r- ]6 B, _/ V1 l5 O" a
  7080.     ; order as the resfub returned from DDIM (ADS module).
      q3 d# R& i: r9 E$ l

  7081. 9 Z) u9 z6 W8 [" k9 N( [
  7082.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values": n1 x' C' {5 S+ n5 T/ q5 e
  7083.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"
    + q7 U) J2 v9 t+ |% Z) M7 n
  7084.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    $ N( O# }* B# ~( `% u1 Y
  7085.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"
    5 p; c0 |" Q+ {) Z1 l  I; v
  7086.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    - B4 p# y. q* B" a* ^6 t
  7087.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"
    ' f4 E0 V1 M3 E
  7088.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"
    # \7 b+ r  s* P8 y
  7089.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"
    1 W0 n. `" P5 \' u
  7090.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"/ u' E1 X6 }& n
  7091.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"$ Z: s7 W% _( j! y9 I1 p( A; S
  7092.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj": g2 u! I2 p  \* f9 Q" }
  7093.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"$ X& }* o5 L: j- _% E8 r
  7094.         "dimtxsty"% U: e& ], X0 E6 T$ S7 U
  7095.     ))' b, h0 l5 U0 r% `. [
  7096.     (progn
    ! H8 K' z9 z* g% l$ D
  7097.         (setq sv_dvlist (ddimen_getostate dimsty)
    % r6 K: S/ O$ E. a
  7098.               txstyname (assoc 340 sv_dvlist)1 {- l4 K! w2 R! n
  7099.               sv_dvlist (subst (cons 340 (tblobjname "STYLE" (cdr txstyname)))9 V8 \& D  l3 [+ x
  7100.                                 txstyname sv_dvlist)0 n/ f5 m5 h* @+ U7 a
  7101.               dimlist sv_dvlist  B( Z% R$ S3 v0 K5 P7 {
  7102.         )
    - Y4 ~) D1 d& c7 I4 j7 O
  7103.     )
    # }- [& G) k, c% g0 C* X" }4 d9 ]* {
  7104.     (if (= dimtype "DDLEADER")
    % j8 M) O  b0 j4 q0 ~& |! m8 I
  7105.       (mode_tile "mod_format" 1)
    % A- [$ z: h. G
  7106.     )
    & T$ v! E* q, b( p- f( Q. L
  7107.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")# H$ C# }( Y. H6 g
  7108.     (action_tile "mod_text"  "(done_dialog 4)")0 h0 b) T8 P3 l& R6 P/ l1 s; P
  7109.     (action_tile "mod_geom" "(setq dimlist (ddimen_dlg dimtype 11 dimsty dimlist))")3 q* f4 M' }% N3 l( B( [* R6 F; D
  7110.     (action_tile "mod_format" "(setq dimlist (ddimen_dlg dimtype 12 dimsty dimlist))")( i9 ?+ b- }" J5 q7 D
  7111.     (action_tile "mod_annot" "(setq dimlist (ddimen_dlg dimtype 13 dimsty dimlist))")
    , \0 s' {. d( U$ q$ q# |+ c
  7112.     (action_tile "accept" "(done_dialog 1)")" d+ h1 N/ ~5 O( b# }* C
  7113.   )9 E. }$ B& T8 Y/ y, h; v
  7114.   ;;
      Y+ X$ K2 a# B
  7115.   ;; Get dimvars that have been restored.2 r! [6 |; e1 L: Y6 [- ^
  7116.   ;;
    ! h( u6 H' V* R/ @+ [. q
  7117.   (defun ddimen_getvars (/ elm dvlist dv i)
    5 q7 i2 u9 i" c& \+ F& l
  7118.     (setq i 3! }- s( ]% @' n3 w/ l
  7119.           dvlist (list (cons 0 "DIMSTYLE")
    & O( v; o$ K4 |
  7120.                   (cons 2 (getvar "dimstyle")) (cons 70 0))- ]8 }9 X6 \/ D" H5 o
  7121.     )0 j8 Y% y3 H# @1 U  |- x
  7122.     (while (setq dv (nth i dimtbl))' ~3 g6 L! M3 c: _4 G
  7123.       (setq elm (getvar dv)+ c, E3 E: S1 @/ J
  7124.             dvlist (append dvlist (list (cons dv elm)))
    1 l: a/ G4 u+ c! X
  7125.             i (1+ i)
    ) q+ U- t+ ]( ^
  7126.       )- S: G7 }" p3 W1 I3 E: W' p2 d
  7127.     )
    ! s0 ]! m& D. H0 g( t9 B  L2 }9 o
  7128.     dvlist; v- z+ P3 K+ j
  7129.   )
    7 f$ l) \! T+ F9 j

  7130. 5 {0 W9 R, C  r4 e# {3 ^
  7131.   ;;
    7 ]+ g" b9 X7 [! ]
  7132.   ;; Get the original states of dimvars. This is for DIMENSION entities.0 a$ V4 w2 D- n  r- g* b7 ~& Q
  7133.   ;;
    4 B5 B8 b1 W+ x( u
  7134.   (defun ddimen_getostate (dimsty / dvlist elm i dvvars)" O/ s* N5 S9 r# l1 I  J
  7135.     (setq dvlist (tblnext "dimstyle" T) ; Get a skelton list
    . W# W! X. ]- v" M
  7136.           dvvars (ddimen_getvars)       ; Get dimvars for that entity& W" i+ r. f) z- v6 E& n1 s
  7137.           i 1
    ' A( J; ^% G( G9 c6 ]
  7138.     )
    ( K' Z) n+ S0 [9 ?% [

  7139. 2 n# X9 J  K' |1 A/ S
  7140.     ; Create a list that contains values of the selected entity.1 q' v1 }  m" y* H1 f( t: ]
  7141. # U; I. m( g: |+ `6 T
  7142.     (while (setq elm (nth i dvlist))! C: B/ n8 B$ [& ^6 e/ U
  7143.       (setq dvlist (subst (cons (car elm) (cdr (nth i dvvars))) elm dvlist): U5 R# k6 o4 f
  7144.             i (1+ i)
    & q9 c3 b" D8 @; z; d+ ?2 i
  7145.       )
    ! S- @5 T2 E& H  x2 N' O$ R) B
  7146.     )
    " G  L# d% I# j6 X) X
  7147.     dvlist
    % ^3 O3 r: G% ?- @
  7148.   )
    0 s# P6 D: p8 r7 Z4 q& p! I, y
  7149. , o2 U6 o% M6 r5 }& l
  7150.   ;;
    $ E$ @7 s/ V7 E: [. b
  7151.   ;; Restores dimvars of the selected enity.
    6 S7 [$ ]' E% Y$ J7 E: F/ r
  7152.   ;;
    " P! y, V# i6 v7 ~9 `+ I
  7153.   (defun ddimen_dimsty_restore(/ dimtbl dimsvcurset en)
    3 x, P6 W' ?  T
  7154.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"/ o$ p5 q2 i+ v
  7155.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"
    7 ^$ N3 f# s2 c% ]8 s, R
  7156.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"" d$ e% E* i5 c% |6 ~* I4 Q/ U, b! D
  7157.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"
    , E1 g) g3 t2 e! L0 i1 s7 ~9 q
  7158.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    3 c) n  P) t, B) v# C
  7159.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"
    & b7 R! _% G+ y3 v* Z& l: w6 e& K
  7160.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin". |; I' d' C8 V: B6 V( _
  7161.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"( A% n+ I2 P" ?
  7162.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"
    ; t( ^: n0 {: v% F
  7163.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"1 o+ l" w& w) B
  7164.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"6 j- ?5 u1 }% v, c
  7165.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"
    ! P6 ], S$ G7 R' m6 w" ?& c
  7166.         "dimtxsty"! ^& M& U2 Y; `5 W% b
  7167.     ))
    % Q- a! v* z2 v$ [4 R8 S
  7168.     (setq dimsvcurset (ddimen_getvars))  ; Save current variable settings  e4 n2 _/ h% k( `
  7169.     (progn
    ! c# o7 Y; x# k6 `8 z
  7170.         (setq en (cdr (assoc -1 elist)))/ M( B( G* K  `) m/ p
  7171.         (command "_.dimstyle" "" "" en)
    % @( e+ @8 e9 _8 o8 C
  7172.     )2 P# ^% {+ v/ m
  7173.     dimsvcurset
    - r/ v* n7 s- s' x; I
  7174.   )
      {! `" _+ h5 ^/ l. O
  7175.   ;;
    0 C, [' Q9 }+ G" E0 P) Q9 I
  7176.   ;; Modify Leader1 Y' G6 m* D2 C- h! h4 c
  7177.   ;;
    0 [, @( S0 k2 j2 \! x% t& o
  7178.   (defun ddleader (/ dtypebit blkname bename sublist a  stname n dimtbl/ R2 Q! ~  x# q/ m2 n( k' W
  7179.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist2 b8 }% i* X# u, W
  7180.                    dimtype dimsvcurset). |) F) P5 M( L: G# c6 D
  7181.     (setq dimtype "DDLEADER"
    5 O: U0 ~9 W$ U4 l+ Z
  7182.           dimsvcurset (ddimen_dimsty_restore)
    $ i$ a  Q" p- F8 a, v3 G' k* z$ R
  7183.     )
    9 ^; U0 h" F* q- h
  7184.     (if (not (new_dialog "ddleader" dcl_id)) (exit))
      w( m0 ^% U" e! v
  7185.     ;; Set initial tile values3 s7 l1 f4 S, O. p9 f' |
  7186.     (set_tile_props)/ j0 l8 E5 X4 d
  7187.     (set_dimen_props)
    7 E7 X' R% `9 e' j, ?& r
  7188.     (set_tile_handle)
    % s3 C" Q, l. P, K' z) V' d! U
  7189.     ;; Define action for tiles
    ; T# f% J/ B( p
  7190.     (set_action_tiles)
    ! S2 {0 n1 i6 \. c/ G9 O
  7191.     (mode_tile "mod_text" 1)# D9 {2 I; R; ]" P7 e" U" S
  7192. $ T" a/ }- t1 j8 ~
  7193.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")
    + k. x% o0 @2 Y5 n" j
  7194.     (action_tile "accept" "(setq leadtype (get_tile \"s-s\"))(setq arrow (get_tile \"arrow\"))(done_dialog 1)")& g/ v& Z4 U9 j- b5 e* y8 {, @
  7195.     ;; Get ARROW and TYPE.
    % _5 p9 F1 f, V2 J( v2 t) i3 ~
  7196.     (if (= 1 (logand (cdr (assoc '71 elist)))) (set_tile "arrow" "1"))1 R6 B* B7 q5 p2 n. h4 S
  7197.     (if (= 1 (logand (cdr (assoc '72 elist))))
    # p7 @5 a& _) ?9 g
  7198.       (set_tile "s-s" "spline")
    " `/ l9 w# f& s7 u1 f( r
  7199.       (set_tile "s-s" "straight")
    7 Q: I( Y% N2 z, }+ g0 w- q0 x# q
  7200.     ). w. h* ]6 z" E0 B) s! y& k
  7201.     ;; Start the dialogue.. e! @5 u$ d7 {3 \2 @% P
  7202.     (setq dialog-state (start_dialog))
    * R4 O9 ~$ b% |3 S
  7203.     (if (= dialog-state 1)
    2 v- D" |8 C# G
  7204.       (progn
    & E2 v& Q* C# Y# F6 l
  7205.         ;; update the style+ C' T1 i. q/ F1 d$ B/ R
  7206.         (if (/= dimsty stname); L+ e$ X* m8 H0 w+ W
  7207.           (progn
    ( j# k$ s8 f9 l
  7208.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case  f- E" Q( J! p% e, U+ J; X
  7209.             ; doesn't have it.
    $ v% R% Z! ^/ T/ j
  7210.             (if (null (assoc 3 elist))
    7 f& i) F2 W, \/ \' s1 v
  7211.               (setq elist (append elist (list (cons 3 dimsty))))
    / _; i$ S  a2 J: ?
  7212.               ; else just replace it.( o! ?. J# u7 [# U
  7213.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    ( E3 \% {# y# k* b, g
  7214.             )3 ]4 `* i: h# z+ r# G
  7215.             ; refresh sv_dvlist with new dimstyle.8 \7 ]5 z" [. I7 Q& p( g
  7216.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
      d  F1 m1 w: b
  7217.           )
    5 B: z: O% n1 [: e3 J6 i6 N7 v# d
  7218.         )
    $ D! a) G! D5 \- G6 `& t$ g' {
  7219.         (if (not (null dimlist))   ; attempted to change dimvars
    9 k* A% }! }/ `+ M3 K* `) `$ U
  7220.           (ddimen_complist sv_dvlist dimlist dimtbl)! n0 ?5 \. X, a6 o) U
  7221.         )
    ( i8 A5 l2 g1 [2 _) {
  7222.         ;; update for ARROW.
    5 U5 X& z% K3 H+ m: b
  7223.         (if (= "1" arrow)7 L1 |' F# M2 L
  7224.           (setq elist (subst (cons 71 (logior 1 (cdr (assoc 71 elist)))) (assoc 71 elist) elist))" E# {; ?+ B4 w
  7225.           (setq elist (subst (cons 71 (logand (~ 1) (cdr (assoc 71 elist)))) (assoc 71 elist) elist))
    6 r. [' O# E0 U1 F0 {
  7226.         )* T+ n. T9 |5 g, Q
  7227.         ;; update the TYPE.3 t, M" s0 Y0 I+ S2 K
  7228.         (if (= "spline" leadtype)$ Z9 z- ~3 ]# y9 T
  7229.           (setq elist (subst (cons 72 (logior 1 (cdr (assoc 72 elist)))) (assoc 72 elist) elist))
    9 ]9 x1 D8 j; x% N
  7230.           (setq elist (subst (cons 72 (logand (~ 1) (cdr (assoc 72 elist)))) (assoc 72 elist) elist))
    7 s. l7 G3 T8 d% r5 A
  7231.         )
    9 q* Y/ ?$ \9 ]9 [; E. L
  7232.         (modify_prop_geom)# a1 H. ]9 ?9 k: [- }0 Y% _; M. t
  7233.         ;; update the Color' R% X" e. q/ N
  7234.         (setq elist (subst (cons 77 ecolor) (assoc 77 elist) elist))
    & l5 N2 q  N0 I$ y
  7235.         (entmod elist)
    / u- j1 x$ |+ E0 j( y0 |5 ?0 U
  7236.       )
    & `* D/ v1 b  `9 y' j2 N/ ~2 S
  7237.     )
    4 H1 f  j# }) j+ U5 Z; @/ w+ o
  7238.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    ( e( o/ L" P  n# Z' L
  7239.   )
    3 o, T  V: l! z5 L3 b# Z& z
  7240. 2 N) }: |6 k& L  j  F
  7241.   ;;- n' k5 g. ?3 f$ w
  7242.   ;; Get dimvars of a dimstyle with overrides.1 G! v# q$ f" C4 I5 r6 Y5 X0 c
  7243.   ;;1 i- h- U0 k1 a+ }% W9 B8 F
  7244. 8 `% u) ^2 P' ^0 g
  7245.   (defun ddimen_getdimvars (dimsty / dimovr dvlist elm i)0 y) i8 p6 Q; W- o

  7246. - Z8 J. ~6 S* }1 A( N
  7247.     ;; Get override information for the specified entity., L) [0 H7 i) A0 l1 i: x. m, `( z6 }
  7248.     ;; Leader/Tolerance cannot be restored by DIMSTYLE command, so we8 G# U/ y; N! H6 h+ [8 s, c. v
  7249.     ;; must obtain override information through this tedious operation.
    1 X6 f" L! I& b2 o5 L: i
  7250.     (setq dimovr (car (cdr (assoc -3 (entget (cdr (assoc -1 elist)) (list "*")))))
    7 ]3 g+ G  x. i& G, t
  7251.           dvlist (tblsearch "dimstyle" dimsty)0 c9 M* S# A" [8 o, _2 k
  7252.           i 26 r% p7 l/ ^0 {+ E+ H
  7253.     )
    0 L$ P3 q$ y/ Q7 E2 r) o/ p6 |
  7254. % o$ S; D0 j! s/ w2 h) z
  7255.     ; Update the list with overrides if overrides exist.
    ; c) A) O/ N& a

  7256. 1 y7 N; ]1 ^6 |3 u0 g( V! I
  7257.     (if (and dimovr (= "DSTYLE" (cdr (nth 1 dimovr))))
    $ C! ?5 f5 M* {  ]. [2 g$ Y6 q0 g  ~
  7258.       (progn' k- b8 k/ |4 U6 }: J# H  y, \6 y
  7259.         (while (setq elm (cdr (nth i dimovr))). d* |$ W9 A, ^! c$ C' z
  7260.           (progn/ k3 U' `  l% h
  7261.             (if (or (= elm "{") (= elm "}"))
    4 o% |5 I9 ]- E# d' [
  7262.               (setq i (1+ i))
    6 e3 M# z. M: l- n5 L' H
  7263.               (progn  m+ C6 K7 f3 u
  7264.                 (if (or (and (< 180 elm)
    3 K7 ]8 y$ v6 w# U& I
  7265.                              (< elm 190)
    & I. n8 k: E$ n5 @
  7266.                         )" {; ~7 G8 W* t6 S; q7 r% K
  7267.                         (and (< 80 elm)
    ) F1 d- N, _. M  K
  7268.                              (< elm 90)
    & W: \3 u$ p$ B0 @+ h+ T( J
  7269.                         )/ @6 d7 T. x5 v' q9 l# V
  7270.                     )
    7 g3 _% V2 P: B, q" T
  7271.                   (setq elm (- elm 10))/ c4 Y3 Z* ?$ s( c  F/ f" ?( I4 I
  7272.                 )2 Z4 y7 c7 L) F0 r( ?
  7273.                 (setq i (1+ i)
    0 Q; q( @$ F, X# u" H- E. x
  7274.                       elm (cons elm (cdr (nth i dimovr)))$ s4 Y* o$ ]  ?' t! D" f+ d
  7275.                       dvlist (subst elm (assoc (car elm) dvlist) dvlist)
    6 Y4 V% J- B9 R# c% r( B) c
  7276.                       i (1+ i)+ ~% G* W6 e  x+ X4 T2 o3 x, A- ^
  7277.                 ); H: I" \1 R- S* R( X3 N
  7278.               )) [3 e0 h  E3 [9 ]( ?
  7279.             )1 j. C4 n! P. H0 T4 S# H* [
  7280.           )
    & b: {) u  _4 `: X
  7281.         )
    " ^' u% W: |9 K) u- ^$ ]
  7282.       )
      c' F, D8 E  s- I' {
  7283.     )7 B" _4 C, M% Z# Y
  7284.     dvlist& ^4 m8 ^& U6 H! a5 Z
  7285.   ); Y  X; h8 z1 w( x7 P8 ^+ f5 ~
  7286. ; D' \1 z6 c- X9 F
  7287.   ;;
    9 w* c7 t( L* l& x- r
  7288.   ;; Modify POINT6 a1 Q/ @5 @& z+ \
  7289.   ;;+ J8 K* J, \4 g+ h1 ~0 ]
  7290.   (defun modify_point ()% ?+ u; T8 K% q' A
  7291.     (modify_properties)
    8 [' t9 {# S# D
  7292.     (setq pt1 (list x1 y1 z1))1 i" \7 H( P0 Q
  7293.     (tempmod pt1 10 0)( X5 n$ z, B# C2 O4 a
  7294.     (entmod elist)* M+ B, g$ f1 Y8 U. p( s
  7295.   )
    7 q2 `2 O+ q: F2 j9 d8 i3 w
  7296. % M/ L) u/ ~1 ?/ J! `
  7297.   (defun ddpoint ()
    9 D4 {( m4 j$ @
  7298.     (if (not (new_dialog "ddpoint" dcl_id)) (exit))+ F: \  m7 F9 S/ C, I8 q; ~
  7299.     ;; Set initial tile values) v! a; i( s5 z+ y, X
  7300.     (set_tile_props)) m$ K  r) B9 s0 c
  7301.     (set_tile_handle)8 D# j' E7 ^( ^/ D0 l( ^8 S
  7302.     (set_tile_pt1 0)' ~: d. B. L: a# k6 U
  7303.     ;; Define action for tiles% [: U. C2 e( }6 R# {/ n1 f& E( E
  7304.     (set_action_tiles)/ Q6 _# `* r' Q& a" w" y3 G
  7305.     (setq dialog-state (start_dialog))+ {8 c9 e- G2 i$ I1 y
  7306.     (if (= dialog-state 0)1 W  \$ h6 n( @) K1 O) O  l
  7307.       (reset)+ f8 |5 O9 u% y4 @0 u, e
  7308.     )
    5 s& x" G3 w3 X6 \
  7309.     (if (= dialog-state 3)
    # N) p: w- V. C! L' K
  7310.       (progn' i) f4 f* W* F) }# a
  7311.         (modify_point)
    - f; b! u% q: a1 G/ K5 N# Q
  7312.         (setq pt1 (getpoint (list x1 y1 z1)  "\nPoint: "))4 b# c- c, @9 W- `
  7313.         (ver_pt1 0)! l4 A. M' Y1 E" Z/ I& O; P3 Q; G' ]
  7314.         (ddpoint)3 P' y% M, e5 T& o! {1 K
  7315.       )
    # i' }7 Q3 K, |
  7316.     )
    * C$ x: d6 C  ?  h7 Y) m2 V, Q! f
  7317.     (if (= dialog-state 1)7 E! p2 l% C9 I
  7318.       (modify_point)
    : c( m- c* I* U5 b: u  x
  7319.     )" f/ w8 a1 w  ^  v' I
  7320.   )  ~1 K3 F2 ?6 z5 m* _
  7321.   ;;4 g) _4 K2 g# ~8 V4 H8 I% \
  7322.   ;; Modify LINE1 o. {  L% \0 B: [& I" d' g
  7323.   ;;+ U, @$ b/ E) e* G0 b' J' ~% h1 ]
  7324.   (defun modify_line ()
    4 W; I  \$ Y) i& J; X
  7325.     (modify_properties)
    8 d* s% U! M; c9 d1 `( m
  7326.     (setq pt1 (list x1 y1 z1))
    6 W4 O/ x9 D1 I( u; U5 @% c: E' ]% w" f( f
  7327.     (setq pt2 (list x2 y2 z2))
    0 W* D0 ~5 n: P: s
  7328.     (tempmod pt1 10 0)
    - d# M7 }) [7 v# j) Z, P
  7329.     (tempmod pt2 11 0)% P( H/ j, _* S& x) s7 z8 t
  7330.     (entmod elist)  ~+ t) p, }, J1 c$ |6 K
  7331.   )6 J- l. z5 X# E1 u& t) h1 p4 w
  7332.   (defun ddline ()
    ' R8 E2 l1 p2 K( H6 \; k
  7333.     (if (not (new_dialog "ddline" dcl_id)) (exit))
    , h! O7 J( s* V5 z% y
  7334.     ;; Set initial tile values
    / ?; S4 A5 `$ H3 Q
  7335.     (set_tile_props)" v- c5 z. [; O1 C& _1 T6 d4 y- u
  7336.     (set_tile_handle)
    % M" i9 |0 |" r4 n8 q. S
  7337.     (set_tile_pt1 0)" e2 R! e# x4 y+ E+ G
  7338.     (set_tile_pt2 0)1 I8 N8 r# q; Q' V4 M' a
  7339.     (line_calc)7 [" O2 M0 n, S0 b/ c! x3 I/ l$ `
  7340.     ;; Define action for tiles
    , f- u( {9 ^, w: h, h$ t% F
  7341.     (set_action_tiles)% V5 A6 d# }1 n3 a2 }" h
  7342.     (setq dialog-state (start_dialog))
    $ c  ~6 U$ v2 d
  7343.     (if (= dialog-state 0)+ K( A2 G* s: }
  7344.       (reset); p* ^6 X( U. k" f7 C9 {; I$ w
  7345.     )1 w. S0 M! C8 v, R6 `# s9 O1 @
  7346.     (if (= dialog-state 3)0 P. z9 J4 M* V' K8 R% M* S: W
  7347.       (progn
    & `! Y' ]. `$ O
  7348.         (modify_line)+ `7 E% |# `* R4 ~
  7349.         (setq pt1 (getpoint (list x2 y2 z2)  "\nFrom point: "))
    ; L* H' g' Y% B3 [
  7350.         (ver_pt1 0)
    ' |, l' Q  z: m' p: u" l
  7351.         (ddline)0 |  _8 M& V' p" r& l
  7352.       )
    4 A7 G' l- H3 P$ m4 S5 d
  7353.     )' a7 B& K/ D0 h6 F% V
  7354.     (if (= dialog-state 4)" I; ^9 K$ @6 j% T4 O! ^
  7355.       (progn! U' E. \3 J5 C" C
  7356.         (modify_line)
    & N" p" |& \) M+ C) [  K) ]
  7357.         (setq pt2 (getpoint (list x1 y1 z1) "\nTo point: "))1 s  R* D1 ~$ H7 ]% E- d4 m
  7358.         (ver_pt2 0)
    1 v% O, R6 l9 l
  7359.         (ddline)
    # B- g9 D, Z. Z# }$ a( C
  7360.       )4 O0 L0 k& F5 V. P! |
  7361.     )
    6 J  E. @1 ^: R" ]
  7362.     (if (= dialog-state 1)( @5 z+ P; @# @: }/ V
  7363.       (modify_line)# f3 K8 e4 d9 k7 {
  7364.     )
    9 O0 l% J  K4 a: L
  7365.   )
    % C; Y8 H% F2 p# e4 H  T) U$ B- u' O
  7366.   ;;# ~1 o/ G! q" ?4 M
  7367.   ;; Modify MLine  o* F% I' U7 a( E. _; J! W
  7368.   ;;
    $ r) j, t2 J) C# b7 x  a
  7369.   (defun modify_mline ()
    . G+ E; m$ _/ r' q$ _
  7370.     (modify_properties)
    * @- t5 F# {1 g$ E0 I$ J  [$ ]
  7371.     (entmod elist)
    5 d1 k% i6 n7 j7 p4 d
  7372.   )
    , B3 p+ E4 V) M0 T6 H1 G
  7373.   (defun ddmline ()
      v2 m- E( q. x% I* b/ l9 s2 ^) m
  7374.     (if (not (new_dialog "ddmline" dcl_id)) (exit))( j3 x7 z- i! W* |+ @1 c7 |
  7375.     ;; Set initial tile values
    5 `5 Y- r: E$ G( ]3 N! t
  7376.     (set_tile_props)( ~4 N/ m5 c/ n6 w' u. l7 h
  7377.     (set_tile_handle)0 x1 j& m4 }- {
  7378.     ;; Set mline style text field.
    : [. n/ @3 p. h, m; I
  7379.     (set_tile "ml_style" (cdr (assoc '2 elist)))5 D6 s  t- }9 W6 o% \
  7380. $ R: t+ W; l; A6 x4 ?, X, G7 |
  7381.     ;; Define action for tiles. n5 E- T+ z+ ?0 ^; G
  7382.     (set_action_tiles)
    0 j) ]% J% }: K/ \. K+ Q' d
  7383.     (action_tile "ml_edit" "(done_dialog 3)")
    ' j9 ~& K+ t: V: s
  7384.     (setq dialog-state (start_dialog))
    ) Y# v" d) h' k2 v) K- w
  7385.     ;; Dialog cancelled, reset to original values.
    5 V4 y- U% |& G7 u9 m
  7386.     (if (= dialog-state 0)
    / L) e- a2 Y$ C9 `- ]. s  X  P
  7387.       (reset)
    ( B+ m! s8 @+ X7 ?% Y
  7388.     )5 ]/ V" M- C! t( {  `! G$ D5 v
  7389.     ;; Dialog OKed, update the mline.; ]0 q+ S! A* l5 ~2 k( Y5 T4 ~
  7390.     (if (= dialog-state 1)& B* n: S" \% q# V/ Y; q# H! s
  7391.       (modify_mline)# }% G9 C2 d% g% V$ Q
  7392.     )
    ' r7 D% q- t! G. w* t' j2 e+ Z, @8 n
  7393.     ;; Edit Mline, call MLEDIT.
    ' {6 N( z" H0 _; y8 g* U* l, w( d
  7394.     (if (= dialog-state 3)
    9 B  h7 ^% @3 v  m# q- S
  7395.       (progn
    ( v3 e* `/ O% Z' _
  7396.         (modify_mline)
    + R/ @4 h9 f3 p# G2 N( y
  7397.         (command "_mledit")
    ; a5 u- M) U- s* `6 m
  7398.         (ddmline)# m# c# `  L6 V7 k) K2 l
  7399.       )
    / n2 N1 @; U8 |
  7400.     )0 {# h9 j4 u( u2 A+ ?0 }! {" x
  7401.   )6 h" E# {; b- i( _0 ]- U( c
  7402.   ;;
    # ~9 I0 a4 ^! D- ~
  7403.   ;; Modify Xline
    ) b/ k3 k) k# o+ o& r" ]5 u
  7404.   ;;' x: Q7 k. n+ V; o3 X) e
  7405.   (defun modify_xline (flag)* S8 ?: g4 P* Y8 Q% E+ P2 W
  7406.     (modify_prop_geom)3 j0 b+ R/ l- t& [
  7407.     (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))
    2 Y- F* q/ j, M! }
  7408.     (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))
    ; O  ^. |) s3 Z/ Q8 U, P
  7409.     ;; Update the Root point.
    ! ?4 ^+ p5 `9 f
  7410.     (setq elist (subst (cons 10 (trans xline_pt1 1 0))
    8 P% h/ ^; J  |
  7411.                        (assoc 10 elist)
    ! c/ C$ O, a4 O. b5 W' c, d; E
  7412.                        elist. T1 U2 }3 A/ X' d6 x2 _$ y) Q; t
  7413.                 )  p* K- x# Z5 T, b7 ?
  7414.     )/ e& z2 `( `& D; N+ G" r0 W* [0 M
  7415.     ;;
    $ G8 p+ O" r. l4 u
  7416.     ;; Calculate new Direction Vector WCS/ V2 L* ]) }7 N9 E8 ^/ B: O
  7417.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))
    8 `0 R' s% d% D! }/ l" M8 c3 i1 Q6 |0 u

  7418. / K0 s+ \7 ]' m! Z" z6 P4 G
  7419.     (setq temp_dir (trans xline_pt2 1 0))4 W% @- K# _* O, \6 K& ]
  7420.     (setq temp_dir_x (car temp_dir))
    ! F3 d( ]7 I8 i( x& t
  7421.     (setq temp_dir_y (cadr temp_dir))
    + D8 s/ J9 V) ]& L: v6 x2 A
  7422.     (setq temp_dir_z (caddr temp_dir)), W7 A' u& ^3 N' _

  7423. # F  Q+ o  |1 I1 }* }
  7424.     (setq temp_xline_pt1 (trans xline_pt1 1 0))
    5 e! o) F0 H4 w
  7425.     (setq temp_xline_x1 (car temp_xline_pt1))
    ) I" s/ v% r8 b# V
  7426.     (setq temp_xline_y1 (cadr temp_xline_pt1))* Z3 d8 E6 b% f# }# t4 Z
  7427.     (setq temp_xline_z1 (caddr temp_xline_pt1))
    / Y1 V4 G4 S; y# w, e
  7428. $ g( D8 n# u0 s$ m
  7429.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    - p9 |; P7 Y# q% M; T" `: q# e
  7430.                          (expt (- temp_dir_y temp_xline_y1) 2)& g8 \* y4 M( w' `
  7431.                          (expt (- temp_dir_z temp_xline_z1) 2)4 {" G1 ?9 c( g+ x, d
  7432.     )))
    ' }* j! i7 s& [8 ~8 }
  7433.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))" Z5 Y- M. r% A1 z
  7434.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))
    # W- a2 j# l; ~+ Z
  7435.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))7 m  j% D6 d  Z
  7436.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))
    " \, ?; z- }& G* E- `
  7437.                        (assoc 11 elist)
    9 A* l8 O1 _( l/ D/ R0 B1 {( J
  7438.                        elist
    & f! ]8 d- }: Q2 y
  7439.                 )
    + ]+ i# f3 m0 {7 K" l" h
  7440.     )
    0 Z1 m  h2 D# Z9 m
  7441.     (if (= 1 flag)$ r5 g% j2 f+ _% F: I2 s
  7442.       (entmod elist). X: Z$ z  i0 W, Z: Q% i
  7443.     )2 F7 X8 m$ W! I& w2 l! F! S
  7444.   )
    ; X0 R" S; o& d
  7445. 7 g2 W9 g& {% x; J
  7446.   (defun ddxline ()% E) h. G6 o$ i4 I
  7447.     (if (= etype "XLINE")
    , O* c0 ]( e/ D" a0 I+ r& ?' t6 T& s
  7448.       (if (not (new_dialog "ddxline" dcl_id)) (exit))
    0 s. v/ d% E4 J+ L" R
  7449.       (if (not (new_dialog "ddray" dcl_id)) (exit))
    5 A3 @& h3 k7 G( m
  7450.     )0 i* T8 G5 s- H- j1 {3 J: x
  7451.     ;; Set initial tile values7 R1 _$ m" h7 L
  7452.     (set_tile_props)" m$ j) ?6 j% \5 a
  7453.     (set_tile_handle)
    + n- v! Q& V) ^# U( w9 S1 W
  7454.     (set_tile_xline_pt1)) ^, |; _8 n* d+ B
  7455.     ;; Convert to UCS and post Direction vector.6 r. s- v, f1 z7 U" z
  7456.     (set_tile_dirv)
    ) K: W+ M- K* |% _* F
  7457.     ;; Calculate second point by adding Root Point + Direction Vector.
    : y4 @! t) i8 _; F* O$ U
  7458.     (set_tile_xline_pt2)& y( j! _+ |: W
  7459.     ;; Define action for tiles
    / M4 l  n6 r8 ~5 n* r1 c
  7460.     (set_action_tiles)4 @7 K* r- u, l
  7461.     (setq dialog-state (start_dialog))
    , G. u5 x8 Q$ A% Z4 P0 Y! m
  7462.     (if (= dialog-state 0)
    & g5 a+ q" T; |" `0 @9 }
  7463.       (reset)
    1 R9 J2 T2 L# I' Z
  7464.     )& w: C, ~. Y2 \- x- ?
  7465.     (if (= dialog-state 3)( ?3 q+ P/ b- I& _: F
  7466.       (progn$ ]; _; S: U2 P# x4 R" b5 i) }; T3 w. g
  7467.         (modify_xline 1)
    & q9 D/ @0 g- S5 C7 D
  7468.         (while (equal xline_pt2
    ! K$ y- I, k, w/ C
  7469.           (setq xline_pt1 (getpoint xline_pt2 "\nRoot point: ")) 0.000001)
    , F# g3 k/ r# l5 m0 u
  7470.           (princ "The Root point cannot equal the Second point.")
    4 f* Z9 G/ O0 d0 U
  7471.         )
    6 A7 Z1 S, S% B% b" [
  7472.         (ver_xline_pt1)
    6 r7 D; @2 i; j0 R# K- {1 K
  7473.         (ver_xline_pt2)5 s" }4 z0 ~9 Q. X+ s
  7474. (princ). l5 Z7 h( p8 |3 p6 a9 i7 S
  7475.         (ddxline)
    8 f" M+ X/ k# |3 \; H7 J9 n
  7476.       )3 M0 G5 \1 C9 F: B! w
  7477.     )
      U! ?1 Q7 J7 {" o) w
  7478.     (if (= dialog-state 4)
    , `, Q; ]) U% N. c( J
  7479.       (progn- t% T3 k9 w) r9 c0 G- z
  7480.         (modify_xline 1)8 s) i1 S1 [8 |" [; R1 W
  7481.         (while (equal xline_pt1) s& M5 }$ z- U3 c) T) A
  7482.           (setq xline_pt2 (getpoint xline_pt1 "\nSecond point: ")) 0.000001)+ |* b4 L- g+ `. r
  7483.           (princ "The Second point cannot equal the Root point.")8 Z* A; Z' S. x5 b1 I( G4 i
  7484.         )+ P6 }+ J! m' J5 B6 |
  7485.         (ver_xline_pt2)/ W2 s* f! E/ o2 f" C7 m2 W: s
  7486. (princ)
    6 i. i- d6 G' Z$ J
  7487.         (ddxline)
    ; |4 T! g- T" T7 X# P
  7488.       )4 W  p* V3 c. Y
  7489.     )' V9 u: r* ]) v) N
  7490.     (if (= dialog-state 1)
    / ~2 t9 [/ E0 b, L' V2 T  d, a
  7491.       (modify_xline 1)
    1 Y4 M2 t3 X% p, B* `' R
  7492.     )9 r6 ?/ C% E! W3 a" D( {( S9 \7 M
  7493.   )% Q* I6 C/ K5 {4 g6 _
  7494.   ;;
      a0 S$ @6 G! V: t
  7495.   ;; Modify ELLIPSE' m- F+ x$ X* P, n
  7496.   ;;3 c, d. |# v1 E" {+ [- \. k
  7497.   (defun modify_ellipse ()5 ^4 k% C) }1 l8 u
  7498.     (modify_prop_geom)
    ) M7 M$ K2 m1 x0 J8 x  E
  7499.     ;; Update Ellipse Center Point value.8 J+ y9 p6 T3 T/ ?% g
  7500.     (setq pt1 (list x1 y1 z1))1 G4 `: F: N: ^6 ]. a* Q+ p
  7501.     (tempmod pt1 10 1)
    1 `' c  ?0 o3 M; K* b
  7502.     ;; Update Start Parameter value.
    . a, K$ v: z" _1 D  L  A1 E
  7503.     (setq y_val (sin st_ang))6 }7 ^6 V1 J" d, X" U
  7504.     (setq x_val (* rrat (cos st_ang)))
    $ O* X1 {( l4 z: M
  7505.     (setq stparm (atan y_val x_val))9 t4 L1 n+ z9 N7 J8 [7 l* |) b
  7506.     (setq elist (subst (cons 41 stparm) (assoc 41 elist) elist ))! T/ g' {  D! ]0 n6 m9 F& [/ Y9 {
  7507.     ;; Update End Parameter value. Normalize it, if it's less than
    & B. x3 t7 O1 Q
  7508.     ;; the start parameter.
    ! l  H: s  n; y% r. Z' J  M4 X
  7509.     (setq y_eval (sin end_eang))/ T% n3 Y/ M9 Z5 Q; i0 v& z1 b+ U
  7510.     (setq x_eval (* rrat (cos end_eang)))2 S0 X5 r8 v2 }4 I- X, u
  7511.     (setq endparm (atan y_eval x_eval))
    * Z5 Q, i  Z# ~& n
  7512.     (setq diffparm (- endparm stparm))1 N( w0 u1 o4 A7 T' ]9 r: v
  7513.     ;; Epsilon of 1.0e-6 radians for checking a zero length arc.; b8 i* }+ W8 [
  7514.     ;; Since zero length arcs are not allowed - construct the full
    ; v$ A1 I' J' Z6 H9 X% b0 |1 p
  7515.     ;; ellipse in this case.
    1 n4 |  u8 Z: P, a: t- b
  7516.     (if (<= (* diffparm diffparm) 1.0e-12)
    0 ^: d5 C) Z+ g5 A- a2 e
  7517.         (setq endparm (+ stparm (* 2 pi)))
    $ ~: v8 `, E; K3 z1 o: V( d* Y$ ~8 V
  7518.     )% ?0 l) Y* l" i$ `+ v
  7519.     (if (<= endparm stparm)
    ( Y1 s3 I* i7 S& F; J6 L# L" w9 H
  7520.         (setq endparm (+ endparm (* 2 pi)))
    ( L% x. Q' [' u4 J* V- v# E. d
  7521.     ). Q% i& M  l* e# e
  7522.     (setq elist (subst (cons 42 endparm) (assoc 42 elist) elist ))+ M7 G( {. @& K! [9 J" V& ^$ d
  7523.     ;; Calculate the Major Axis Vector by first calculating  E: r8 s9 z' u+ j8 y4 o9 w
  7524.     ;; a unit vector using the old Major Radius value. Then
    5 `. x. C1 Y9 I' _
  7525.     ;; Multiplying that by the (possibly) new Major Radius( i+ |  f6 ?5 v
  7526.     ;; value to get the new Major Axis Vector value.
    7 `6 Q1 e& N* ]0 K) G
  7527.     (setq unitxx (/ xx old_majrad))  k$ W& |5 H* u# o
  7528.     (setq unityy (/ yy old_majrad))+ {+ m" w  c5 \5 P/ f
  7529.     (setq unitzz (/ zz old_majrad))
    : A/ z9 N6 O+ j6 x2 l! |# X$ n
  7530.     (setq newvecxx (* unitxx majrad))
    8 e( o: E( M+ j0 E; e8 n
  7531.     (setq newvecyy (* unityy majrad))" D" X/ U0 ~0 T( a  T
  7532.     (setq newveczz (* unitzz majrad))0 P! ~& J6 B$ i2 f# w+ p! ?( e
  7533.     (setq newmajaxis (list newvecxx newvecyy newveczz))! k) g( j: ^8 R8 s! h. e* s3 d+ I% N1 S
  7534.     ;; Update Major Axis Vector value
    0 I3 b* R' g, U2 `8 k
  7535.     (setq elist (subst (cons 11 newmajaxis) (assoc 11 elist) elist ))
    4 }6 h) T) V9 G4 _
  7536.     ;; Update Radius Ratio value
    ( n  u/ t: E1 [& a
  7537.     (setq elist (subst (cons 40 rrat) (assoc 40 elist) elist ))
    & ~3 }* ~& M) q6 w
  7538.     (entmod elist): S  L& ?5 Y& A/ A4 e5 @# z. _
  7539.   )6 U) N3 _/ `. c7 b( C

  7540.   C9 \) W, Y4 F
  7541.   (defun ddellipse ()6 O7 F2 d' K1 S3 G* t: b: R( H
  7542.     (if (not (new_dialog "ddellipse" dcl_id)) (exit)), _, t. z( v- ^$ g8 Y
  7543.     ;; Set initial tile values
    $ A. @7 E1 e! s0 X" [" o
  7544.     (set_tile_props)# ~( r: H$ o7 n4 J  ]* W4 X8 o5 P
  7545.     (set_tile_handle); D3 b+ W( X* O. k0 ]2 S
  7546.     (set_tile_pt1 1)3 `' R0 t$ `- h% u$ U- {
  7547.     (ell_calc)
    , _; ]% Q2 r* u
  7548.     ;; Define action for tiles+ a/ O; U. J- c" {/ [6 f
  7549.     (set_action_tiles)
    " r7 Q, ~5 l7 v5 ^& m$ F$ k
  7550.     (setq dialog-state (start_dialog))
    1 V% j' y! n" b
  7551.     (if (= dialog-state 0)- q: F0 K; r' ?5 p/ n
  7552.       (reset)2 A$ O/ s0 ~: {0 f3 a( c9 a( }+ Y
  7553.     )
    1 Z' T) X# Q% ]9 b, p
  7554.     (if (= dialog-state 1)& z5 z. I/ B. ~0 e
  7555.       (modify_ellipse)9 I; U3 z' G6 n+ |$ J4 C1 @
  7556.     )( d: p: Y% z6 B
  7557.     (if (= dialog-state 3)( N0 S$ S0 ~9 c% R( P
  7558.       (progn
      K: T  g0 E% S) K
  7559.         (modify_ellipse)
    & L# T8 I$ Z1 y' u
  7560.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))
    " E) u8 H: _6 f  p3 \  b; O
  7561.         (ver_pt1 1)1 A; C) ~5 p) j* ]
  7562.         (ddellipse), B6 M( f7 Q& L3 }0 C
  7563.       )/ T  Q& m5 k* _9 W0 v5 j
  7564.     )
    9 }0 ~, W1 z' ~
  7565.   )& h4 Y# H+ V: w$ J- J9 g9 G5 R
  7566.   ;;' [1 r5 p9 I# {- e. T  d) K; [
  7567.   ;; Modify REGION4 f- R) H. @. R3 ^( k7 q
  7568.   ;;( b7 `+ W/ W" f, K* a. v
  7569.   (defun modify_region (), N8 }. S# T# j: H/ C7 ?/ i
  7570.     (modify_prop_geom)
    3 \( U" F* n" K0 y8 t- l# m5 N6 t
  7571.     (entmod elist)
    + e7 p8 A/ q3 r( L
  7572.   )2 Y# W, {) \! e* l* A0 v5 o+ @% g8 w
  7573. ) {' }# q3 T8 O$ f
  7574.   (defun ddregion ()0 H. G5 H( {% I+ x, ^
  7575.     (if (not (new_dialog "ddregion" dcl_id)) (exit))( r. N9 i/ [$ ^: Y2 i
  7576.     ;; Set initial tile values* m. v3 F" i) I  z& i/ x+ z4 V
  7577.     (set_tile_props)+ X3 i- B9 b$ o# R4 [" U
  7578.     (set_tile_handle)
    * z) g  o( Y( B" I+ ?' I% ?
  7579.     ;; Define action for tiles
    3 @' j3 J6 A5 p3 V$ r4 W# T; D
  7580.     (set_action_tiles)# e: Q8 y$ U/ E+ J: A( ~
  7581.     (setq dialog-state (start_dialog)). J/ P, v, o& z2 r
  7582.     (if (= dialog-state 0)4 S' f! ^& ?/ u- P! ^/ }" W0 }: Z1 ~4 A! Q* C
  7583.       (reset)
      \+ o- e- u0 v3 H
  7584.     )
    7 K! V/ e8 @. R$ O2 N# k! ]
  7585.     (if (= dialog-state 1)# H4 K+ [" d. ^4 b
  7586.       (modify_region)
    " N7 `: g/ ?" S' I  a( m
  7587.     )6 C1 _6 n) Z# H' G; D* u- U2 s
  7588.   )/ S& A0 T1 k$ j, K) b
  7589.   ;;2 Z- M' n% ]7 x: a* B2 G9 `
  7590.   ;; Modify 3DSOLID/ \' e" Y5 Q  n5 T7 n5 W. x. ?7 l
  7591.   ;;
    " y! V7 H4 B- m+ p& t& R2 q5 V; r
  7592.   (defun modify_3dsolid ()4 S1 G% f7 E# h1 j
  7593.     (modify_prop_geom)2 l( }$ m% s' ?
  7594.     (entmod elist)
    # V5 _& ]3 y) h- b2 S9 q6 p
  7595.   )6 s" S# L% v4 }% H. y8 x8 }
  7596. 0 M) P+ x5 C& y1 X* Y; }% e
  7597.   (defun dd3dsolid ()
    9 p( Z7 U0 [' D3 M) ~" n
  7598.     (if (not (new_dialog "dd3dsolid" dcl_id)) (exit))" b8 i. ]2 S: x$ c2 J6 A$ T
  7599.     ;; Set initial tile values' O4 w9 C) u8 D: g5 q9 x) G! r
  7600.     (set_tile_props)
    " b- M/ X0 z) e% k8 c- b. O0 H
  7601.     (set_tile_handle)
    4 R; i  T5 ~) e- ~1 m
  7602.     ;; Define action for tiles" Z# h& D9 S% p
  7603.     (set_action_tiles): a# d& y$ s: p8 i
  7604.     (setq dialog-state (start_dialog))
    / y' j7 G$ X4 Q# Z# p" B. g' P
  7605.     (if (= dialog-state 0)( `6 i! V) S% p0 }1 J
  7606.       (reset)
    $ @1 a5 Q$ y4 ~7 ~' O
  7607.     )
    * ^8 k/ R9 q& T- n& I
  7608.     (if (= dialog-state 1)6 _- x* S$ V! u  j
  7609.       (modify_3dsolid)
    ; S0 d% z1 w5 g2 W* Q! {
  7610.     )& y9 R- z7 M- b& i
  7611.   )
    ' ]! S3 @) j: y" u- W
  7612.   ;;) E+ T, W* ?9 ~0 w' M8 h
  7613.   ;; Modify AcDbHatch
    4 i& U, r, D+ C0 t5 ?
  7614.   ;;
      p) `" y9 Z& o2 u5 r* {, U
  7615.   (defun modify_hatch ()' Q0 v  y: G* P. K9 U
  7616.     (modify_prop_geom)7 b( y& o4 Y! p! H6 r
  7617.     (entmod elist)7 }, Q: x: L5 q, T* J/ ]$ p9 M, Z
  7618.   )
    . Q5 {+ {% B% E8 T

  7619. 3 P% [& j3 S- U. X
  7620.   (defun ddnewhatch (), n5 S3 M* u# @8 V' r+ H0 [$ ]: t- z
  7621.     (if (equal hatch-elist nil)
    # F5 _4 j. V# l5 `# E* Y8 G
  7622.          (setq hatch-elist old-elist)
    . y8 D. K  O" n: |$ s' Q& a
  7623.     )$ G  g2 ]5 i2 j1 w% I. S1 H

  7624. ; i2 m2 |1 z5 V3 x# W- ]% b
  7625.     (if (not (new_dialog "ddnewhatch" dcl_id)) (exit))
    3 x  ?, l0 V, m: F; v, ~
  7626. ) T* W1 d1 A' l! C6 A/ Z6 r
  7627.     ;; disable the thickness tile
    : n! m% j1 `/ i7 N
  7628.     (mode_tile "eb_thickness" 1)
    ; z, z- Z( Z3 M: z$ W0 B
  7629.     (mode_tile "e_thickness" 1)
    : `: I5 A& D1 f+ `) m7 i4 n( [

  7630. - d9 r; z1 Z& s9 M1 V
  7631.     (setq help_entry "modify_associative_hatch_dialog")
    $ e% W* g& l0 v) g0 v! N& n
  7632.     (set_tile_props)0 e" o7 A: N# U0 C* e4 _4 |
  7633.     (set_tile_handle)
    * R$ L8 _' Z* b

  7634.   S: _- K2 X4 C( b# R* y
  7635.     ;; Define action for tiles
    + A% `; y0 k% r
  7636.     (set_action_tiles)7 K3 e: h4 e: o# }$ v0 O$ A/ ]# U- O( H
  7637.     (action_tile "b_hatch" "(done_dialog 2)")
    # A6 P5 R' X' l1 _6 N7 a
  7638.     (setq dialog-state (start_dialog))6 e  `4 }; |1 b# i
  7639.     (cond
      q/ T) w! Z2 M
  7640.        (  (eq dialog-state 0), z2 B) _1 f& s1 `9 B+ W1 W
  7641.           (setq old-elist hatch-elist). e' w3 o4 q+ p, I1 @5 F* A
  7642.           (setq hatch-elist nil)
    * Y, Y5 B; `6 Y& q+ d
  7643.           (if (= (checkforlockedlayer ename) nil)
    & o0 V. w7 N2 R/ t$ b
  7644.              (reset). u5 _" ^  C( x' ?) m% w! o
  7645.              (progn         ;;; special handling for locked layer reset: L& m& g# ]! b6 n1 M: J, J
  7646.                 ;; unlock the layer
    + K$ M, p- \% a1 x( v* i
  7647.                 (setq layername (cdr (assoc 8 (cdr (entget ename)))))0 r1 N9 A' R) Y9 _
  7648.                 (command "_.-LAYER" "_Unlock" layername "")
    * y0 P* q- h- Q9 D
  7649.                 ;; reset modifiction
    : i+ J6 X% s) I' g
  7650.                 (reset)/ r5 T$ i( \2 X* c. s
  7651.                 ;; lock the layer again! v  b  Q. Q: c& ^7 C; X1 j$ Q
  7652.                 (command "_.-LAYER" "_Lock" layername "")6 N" }( a% b1 s1 ~
  7653.             )
    ( L- {% `" T3 L5 @
  7654.           )
    2 v" M' t0 A$ C+ }
  7655.           nil       ;;; makes (ddnewhatch) return nil for Cancel% s3 n$ i$ E0 p
  7656.        )8 v" c; Z- w# I+ W+ `" t& N: @/ y& z
  7657.        (  (eq dialog-state 1)2 X) \( Y/ ?0 C% W$ D  Y; L
  7658.           (setq hatch-elist nil): j5 U/ D  D7 h% ^" \
  7659.           (modify_hatch)
    2 `8 g9 {$ L3 x# T& q
  7660.           T         ;;; makes (ddnewhatch) return T for Ok
    6 G- Q3 C$ N* w! Q7 ]! D
  7661.        )( C2 N8 \7 W* J. }  _+ U7 X8 T- x, r0 y
  7662.        (  (eq dialog-state 2)
    3 z2 t0 C# R9 z- J
  7663. % @6 J1 V* j$ a& x/ ?. y6 B
  7664.           (if (= (cdr (assoc 70 (tblsearch "LAYER" elayer)))/ k3 g7 j$ D. T  J! i7 Q
  7665.                  4& O& s( |* r6 K6 b! g. R8 C
  7666.               )            
    ) @) i+ f4 f5 |* O! A
  7667.               ;;; new selected layer is on a locked layer
    , z3 A" B4 q" g7 s- z! J; S
  7668.               ;;; we can simply modify the hatch properties4 j1 }) b1 f' t9 M/ x6 f
  7669.               (modify_hatch)/ j/ B" `& o% E% B, c6 |* F6 N
  7670.               (progn7 h6 u. G+ E/ R- {* I7 q
  7671.                     (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (cdr elist))))))
    ; Y% C. l& O  _' G
  7672.                             4" a9 R1 ]+ ^; q
  7673.                         )           
    4 r* h9 c* z7 q  W' Q. P# v% [
  7674.                         ;;; We changed the layer previously and now the hatch lies on a locked layer.( ^) Z/ q: S: d% S
  7675.                         ;;; We have to unlock the layer forethat we can update the hatch properties.+ W: `0 \9 Y. F& c+ b
  7676.                         ;;; If we don't do that (entmod) fails to update to the new layer.5 ~+ V: N3 S; l: [
  7677.                         (progn$ R7 l  Y/ S- K6 k! {/ d
  7678.                             (setq layername (cdr (assoc 8 (cdr elist))))4 m) E0 P3 D* }6 A( N2 n
  7679.                             (command "_.-LAYER" "_Unlock" layername "")     ;;; unlock the layer5 K- R9 [2 ]4 N8 M& X, E
  7680.                             (modify_hatch)                                  ;;; update the properties  Y  r' `: j# o7 w
  7681.                             (command "_.-LAYER" "_Lock" layername "")       ;;; lock the layer again* O1 u# X8 K% t  A0 x- }
  7682.                         )( I4 U2 L" j% Y. u6 \1 y
  7683.                         ;;;  All other cases we simply update the properties" M  K9 P. w* s. t' `3 t
  7684.                         (modify_hatch)
      `/ R% x! [( V9 ~  u6 K$ M6 z
  7685.                     )
    7 o4 b2 Y3 ~5 {. P- F$ t+ k
  7686.               )/ F0 ~5 K& W  a- [* [0 X  B/ q& y
  7687.           )
    2 z& e: R6 E& ?: t
  7688.           (if (= (checkforlockedlayer ename) nil)
    ! `2 Z) {( R- N2 ~3 o. F/ h
  7689.               (command "_hatchedit" ename). k9 ]" j5 u3 P. H! `" W
  7690.               (alert ;|MSG111|;"The hatch object is on a locked layer.")8 u6 o; s8 E$ o" y& {8 l
  7691.           )
    % D8 T. e- Q  q0 l* i. M
  7692.           (ddmodify ename)9 ]! j1 H3 y; e( C0 _" h* S
  7693.        )
    5 ?; R# }0 U5 X5 G
  7694.     )
    5 b8 ~3 s( B: k, Z6 K. A
  7695.   )
    8 j( }3 e  ?3 A( i! h3 [# Y
  7696.   ;;! U' L/ J* o" S, x0 \
  7697.   ;; Modify BODY5 L9 r2 u8 r" ]: H0 }, t2 G
  7698.   ;;; v7 m0 c, s2 F4 m; b0 ], J% y
  7699.   (defun modify_body ()
    ; y9 F: Y7 @1 E, D) @! h9 H7 p
  7700.     (modify_prop_geom)
    # Y% o; T) }( h8 N% ]% e
  7701.     (entmod elist)4 @, t: y) {' B' y
  7702.   )) G4 ?6 ?9 u' G$ U7 W+ E
  7703. % t- \4 d7 J1 `$ w/ Y$ r  e$ _
  7704.   (defun ddbody ()6 b5 c" j& l4 b  ?5 ?' C5 U
  7705.     (if (not (new_dialog "ddbody" dcl_id)) (exit)). `. [* o" H8 {' x* L
  7706.     ;; Set initial tile values
    8 b, \2 a9 O- U  V7 w- a2 x8 e) `0 ]
  7707.     (set_tile_props)# D1 [& ~5 N5 x; G% x- T# w
  7708.     (set_tile_handle)
    + H3 W0 K7 ^$ D' ?! Q  i
  7709.     ;; Define action for tiles4 R* l" w, ?! o7 u- z6 B% w0 V
  7710.     (set_action_tiles)- c/ l# Y, |5 q0 j" M/ m* f7 b
  7711.     (setq dialog-state (start_dialog))
    4 t0 _0 d- F4 s$ T7 G$ `
  7712.     (if (= dialog-state 0)
    * y8 i, {8 p. \; W3 m* v1 D
  7713.       (reset)
    % k+ R; ~3 \$ ~$ c, L
  7714.     )
    4 ?1 Z9 U& Y. X0 g# t
  7715.     (if (= dialog-state 1)
    6 o$ @: k" S& u
  7716.       (modify_body); c$ {1 Q- Y( G7 {4 [" r
  7717.     )
    " i* s/ A3 Q3 [
  7718.   )
    % J! B4 B" _- E
  7719.   ;;
    ) i- X1 x" B0 M
  7720.   ;; Modify CIRCLE# M6 b' k; s5 I; N8 g
  7721.   ;;
    % Y1 j; }/ M( Y+ U& ^
  7722.   (defun modify_circle ()
    . x+ _4 |& Y# @$ J# k6 U
  7723.     (modify_properties)
    7 u5 g% @" D$ h3 [) O* Q# N
  7724.     (setq pt1 (list x1 y1 z1)). N: N' Y0 a+ }" a* F7 h
  7725.     (tempmod pt1 10 1)
    3 o$ p0 |6 `6 L6 x1 ]% X+ L
  7726.     (tempmod radius 40 nil)
    7 v3 W3 ]" z* M) q
  7727.     (entmod elist)) D7 N/ ^. g' h0 X  a. @. w
  7728.   )
    + U) U6 N& g& `

  7729. 9 q4 \+ t8 {$ f/ i3 |! t5 g* C
  7730.   (defun ddcircle ()
    # y, _7 V# K. |/ L) o2 T
  7731.     (if (not (new_dialog "ddcircle" dcl_id)) (exit))
    / d) Z. s/ a7 Z/ e6 a, B# o" k4 l
  7732.     ;; Set initial tile values
    6 @, z! o  ^" A& I+ u
  7733.     (set_tile_props): Y+ y  d+ d9 c$ I$ a3 T1 b0 c
  7734.     (set_tile_handle)
    0 q0 |' {5 [  K
  7735.     (set_tile_pt1 1)1 y6 A; b: K! D7 {, n+ y' T+ i% T
  7736.     (set_tile_rad)4 A8 Z7 K9 [- }- u0 }# Z
  7737.     (cir_calc)
    1 h4 V& c# j; W
  7738.     ;; Define action for tiles
    $ Z, u5 \5 j" T; H& x2 V
  7739.     (set_action_tiles)% C" v# X: W, c; E8 a- O
  7740.     (set_tile_pt1 1). r8 Z/ B* V, \9 V0 _/ P! y3 K
  7741.     (setq dialog-state (start_dialog))
    9 V: n4 ]7 @2 V3 @7 b
  7742.     (if (= dialog-state 0)6 `- N/ m( _% A, S- P0 {. @- e0 I/ \
  7743.       (reset)2 L2 H0 h0 P. X. r
  7744.     )$ M& K* L$ F5 U3 @3 U$ v8 |% l
  7745.     (if (= dialog-state 1)2 @/ n, w4 N0 x( U6 w' X8 C! B
  7746.       (modify_circle)8 G6 i8 z$ m0 c+ k- U, b
  7747.     )
    - T3 x5 Y0 K* B! Y3 H
  7748.     (if (= dialog-state 3)7 J2 y, ^( B+ a$ k
  7749.       (progn
    ! z6 f: w% ~, b$ v3 \
  7750.         (modify_circle)
    # L1 \2 C' |2 H  T, j; p
  7751.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: ")); }/ b* a2 a$ T. E' g1 L$ e
  7752.         (ver_pt1 1)
    1 _! p) E5 F! v% U- I) Q
  7753.         (ddcircle)
    $ p' y; [% U  @! W& U  ?
  7754.       )! m) W! |0 G5 O3 z" W, @
  7755.     ). X9 o4 n9 s9 A- ~2 N
  7756.   )
    7 P3 |: I. X! Q% z
  7757.   ;;! ~/ ]3 d0 h% n9 c
  7758.   ;; Modify ARC5 g( v  d3 \/ t/ t7 P9 F
  7759.   ;;% O' M2 P, W4 l
  7760.   (defun modify_arc ()
    ( f0 Y2 Y0 ]/ J# \1 m
  7761.     (modify_properties)! N4 X5 t" z! \  Y
  7762.     (setq pt1 (list x1 y1 z1))( t4 I% y1 `" {5 Q! l) y" U
  7763.     (tempmod pt1 10 1)
    : n1 O/ k- E: M0 `( F
  7764.     (tempmod radius 40 nil)) o( e- ]  W' A# f! B
  7765.     (tempmod st_ang 50 nil)' j  ^7 i% Q! |. u
  7766.     (tempmod end_ang 51 nil)) f( n$ y( h$ Q' O4 P$ @+ {" o3 `
  7767.     (entmod elist)7 Q; ?' k! [$ w. Z
  7768.   )
    " H: E8 y1 ^+ i: _2 k
  7769.   (defun ddarc ()
    # s: s# |0 W; ]. W& I! b
  7770.     (if (not (new_dialog "ddarc" dcl_id)) (exit))
    0 K# h5 R2 B! f! V4 ^$ g
  7771.     ;; Set initial tile values3 E) u8 i4 ^( k6 E7 d9 Q
  7772.     (set_tile_props)1 R6 |. l( Z- l- N" p
  7773.     (set_tile_handle)
    2 S1 |2 e1 A5 B  |
  7774.     (set_tile_pt1 1)  U% f( R0 S: }" R; M
  7775.     (set_tile_rad)
    . G9 h7 j4 G- k" O
  7776.     (set_tile_stang)2 i+ }( N, B! f( ^4 `, p
  7777.     (set_tile_endang)
    ' d- |/ A5 Y. S; G2 ^1 P. r+ D
  7778.     (arc_calc)$ l' v* C9 s! D# {1 K
  7779.     ;; Define action for tiles
    , t3 U- \5 E3 `+ Z  I# s% D
  7780.     (set_action_tiles)7 ]. \+ c' S$ Z# I4 y' O
  7781.     (setq dialog-state (start_dialog))7 }0 e0 V: [6 O& d4 Y/ t  c
  7782.     (if (= dialog-state 0)- H) r5 b% X' t: H+ \! k- R& r8 K
  7783.       (reset)
    ; n% d# m: T& x( j
  7784.     )0 c( V  d% J1 i( \" O$ M
  7785.     (if (= dialog-state 1): J8 c  H% h3 q& ~( H5 z/ m# L, `
  7786.       (modify_arc)
    ' w- c6 A3 K: ~
  7787.     )
    ; y7 u5 |* m+ n, x. w
  7788.     (if (= dialog-state 3)
    , P3 {3 j6 J& V8 E) z' b. g' o' G4 a
  7789.       (progn8 ~) M- R& S" d3 R
  7790.         (modify_arc)/ ^! y, j: a8 c3 }! o' f* W3 j8 u) g
  7791.         (setq pt1 (getpoint (list x1 y1 z1) "\nCenter point: ")); J+ @! G" w2 b% `
  7792.         (ver_pt1 1)
    & e! Q3 C$ J7 x( V5 Q# a  D7 H
  7793.         (ddarc)
    7 S3 C; @7 C7 S1 X* M+ x8 y0 H% p$ v
  7794.       )- ]2 v# m( s4 j& E% i& X
  7795.     )
    . ~8 x( f4 I/ z; ?3 x
  7796.   )
    # G$ V8 D3 [/ I1 v) h" \7 f+ p9 A
  7797.   ;;1 L5 B5 A) K5 X/ Q, D+ G
  7798.   ;; Modify SOLID or TRACE! o- [1 a) `0 P, ]4 ?. W8 h" U$ x. |
  7799.   ;; Note the Z value of the object is determined by the Z value of the fourth8 o! C0 x9 F5 v4 k2 ?
  7800.   ;; point - code 13.  Changing the point values of a solid or trace from a UCS
    9 _; C3 P! P: c& t4 [: X4 x& W
  7801.   ;; that is nonplanar to the UCS the object was created may confuse the user.
    9 l; C8 g1 q2 R4 n( N5 e4 s
  7802.   (defun modify_solid ()
    9 `7 Y9 ]# W/ p6 \: P
  7803.     (modify_properties)% `- ~# p7 I5 ^
  7804.     (setq pt1 (list x1 y1 z4))# U5 }2 G3 Q$ T8 V6 @1 V
  7805.     (setq pt2 (list x2 y2 z4))
    ' O* W4 D. e' }& k7 ~
  7806.     (setq pt3 (list x3 y3 z4))4 V" _( ]; H" {
  7807.     (setq pt4 (list x4 y4 z4))
    . ^: X3 l5 f2 H' S  ^
  7808.     (tempmod pt1 10 1)
    # [' U; t% w! s) X. a% m
  7809.     (tempmod pt2 11 1)8 k$ A; S0 a6 E! P3 ]+ b2 ^
  7810.     (tempmod pt3 12 1)/ |7 z* w0 D, g- V  [
  7811.     (tempmod pt4 13 1), ?9 N6 D  t- B/ r9 I' t, y# O
  7812.     (entmod elist)
    - z2 n* t: M) C5 N7 V; Y: \8 I
  7813.   )
    & C; @2 W7 @$ ^4 p/ H/ x

  7814. + k3 P, p! X5 w" m# X  H+ q7 A
  7815.   (defun ddsolid ()5 v, O9 q" I- x1 e* g
  7816.     (if (= etype "SOLID")* b+ h+ b! ^+ n, v
  7817.         (if (not (new_dialog "ddsolid" dcl_id)) (exit))2 s4 X7 K' |3 X4 [0 \0 _6 V  K
  7818.         (if (not (new_dialog "ddtrace" dcl_id)) (exit))& Q0 s' \* g* p: n' q/ ^
  7819.     )
    : P6 l8 ?8 I  B5 K! ~
  7820.     ;; Set initial tile values
    # |$ Z! j4 d/ O$ P( s! v- ~
  7821.     (set_tile_props)
    2 J6 [" m2 a! t* F" c9 X
  7822.     (set_tile_handle)8 l7 n' {* C5 y
  7823.     (set_tile_pt1 1)- q3 i$ d/ j6 p0 j, t
  7824.     (set_tile_pt2 1)
    ( ?: Z" M. K1 O
  7825.     (set_tile_pt3 1)
    1 y" B0 }4 h5 `3 @5 X% W, L
  7826.     (set_tile_pt4 1)
    + Q  f1 ~! v3 \" P, ~
  7827.     ;; Define action for tiles: t) ^% C3 O' z+ m% d0 r4 L2 E* \* h
  7828.     (set_action_tiles)
      x' U/ D% S! d3 l& t
  7829.     (setq dialog-state (start_dialog))
    % b' T0 f# \# U" N5 S% I! X' f; e
  7830.     (if (= dialog-state 0)
    # u- u1 ?# n% {2 |& Z4 D* |: U
  7831.       (reset)% @8 h7 h8 n% Q7 }
  7832.     )
    + x% `- X5 p1 T9 k* g
  7833.     (if (= dialog-state 1)
    " b5 z, |  Z9 M* L& G) {" `
  7834.       (modify_solid)
    3 Z  U& e- H% m) A4 J( y
  7835.     )
    9 K% O: x2 U6 T9 U# h4 _+ e
  7836.     (if (= dialog-state 3)* d7 D& H7 f& R5 ^, E6 Q
  7837.       (progn6 F! z( R$ t* v, g- @
  7838.         (modify_solid)
    - A1 T) |0 O6 ^4 f) v* {
  7839.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst point: "))
    7 [0 p7 v" P; n; V5 u3 Q
  7840.         (ver_pt1 1); H$ m# U7 ?# S/ y- l
  7841.         (ddsolid)1 ?0 p* A" R1 J. e4 b
  7842.       )6 B* c. y9 M. n* K9 I0 S
  7843.     )
    , D" o' X7 A, |- h; R
  7844.     (if (= dialog-state 4)
    0 S1 R6 X1 D$ D- j1 J0 x: w( R
  7845.       (progn
    6 N( u6 ~" H3 N; `9 l$ d
  7846.         (modify_solid); w# S5 G6 [8 q+ d5 r9 @
  7847.         (entmod elist)
    ! i! t- \) v3 s2 d% [; k, X
  7848.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))7 @* S4 k# O+ C; e5 V
  7849.         (ver_pt2 1)! |7 h% I5 m/ A: t6 h4 q$ x$ l# _
  7850.         (ddsolid)
    1 u+ N: D* \- A/ ]* A  ~
  7851.       )
    7 X) }7 {9 D6 X, N& ^3 [6 |& e/ V% m
  7852.     )
    4 z3 T- I7 o6 T
  7853.     (if (= dialog-state 5)
    ; L. Q$ j8 Y+ }& ~2 E$ W- w/ y
  7854.       (progn
    ' p/ q! W) G" V$ e
  7855.         (modify_solid)) [8 H6 x# L7 b$ u  m1 N: ~) l
  7856.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: ")); q+ T* [4 I( t$ Z6 c4 `
  7857.         (ver_pt3 1)
    7 O! R: R  C+ D' ~  E7 ^( G7 {
  7858.         (ddsolid)' P: y+ F. i0 N1 j3 I, G
  7859.       )
      c- ?4 I2 n! y, N3 U9 n
  7860.     )
    $ k! W: A) d3 z+ J$ S( p5 _
  7861.     (if (= dialog-state 6): S6 y6 V7 V: m7 n1 |
  7862.       (progn
    ! p/ g/ ]- q0 C" j# U
  7863.         (modify_solid)% k8 c" W2 q& x. F: M
  7864.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))& u+ l# r: q" B
  7865.         (ver_pt4 1)
    # k6 ~) j5 j2 a! F4 ?% F% {
  7866.         (ddsolid)
    $ @# U" t/ L1 N: e( Q" \1 H
  7867.       )3 X8 X' [8 `7 y9 x
  7868.     )0 N; h; E7 c7 s7 I
  7869.   )
    3 F% z1 i9 t0 {3 Q# I
  7870.   ;;
    8 S: U/ W6 J( C0 l4 H
  7871.   ;; Modify 3DFACE
    * i+ y% J0 M) R2 l1 I
  7872.   ;;3 u) n8 ^6 e* h0 _5 X, N
  7873.   ;; Check visibility of edges
    & h$ O3 ~6 D8 Y  d6 ~
  7874.   ;;
    # S- y$ ~* {/ b$ C  |0 R& ^6 U
  7875.   (defun edgetest (/ bit1 bit2 bit3 bit4)
    3 i# j3 ~) o5 b
  7876.     (if (= edge1 "1") (setq bit1 0) (setq bit1 1))
    , |7 C$ `) `! k- W8 b; e
  7877.     (if (= edge2 "1") (setq bit2 0) (setq bit2 2))8 F5 D* l  k) K& J5 J
  7878.     (if (= edge3 "1") (setq bit3 0) (setq bit3 4))$ f) ^- M: _  c
  7879.     (if (= edge4 "1") (setq bit4 0) (setq bit4 8))
    / k/ }! c7 ~( i! L7 Y
  7880.     (+ bit1 bit2 bit3 bit4)% Q8 K! [. k1 g$ D; N3 w' I  k; T
  7881.   )
    " s" h+ n; q2 W: B

  7882. 8 T0 y0 t8 T; K$ g: D6 V; k! r' }
  7883.   (defun modify_3dface ()
    ! [' I3 ?  Q$ ]2 E- o6 K
  7884.     (modify_properties)
    6 Z+ t0 ?6 F7 s! @
  7885.     (setq pt1 (list x1 y1 z1))  q0 u4 j1 |; p  s
  7886.     (setq pt2 (list x2 y2 z2))
    / {3 [+ ?3 c* p& }  n4 Q1 c
  7887.     (setq pt3 (list x3 y3 z3))- S. s/ U! L7 L5 E- `& _+ m
  7888.     (setq pt4 (list x4 y4 z4))9 y* Y9 ^  h/ ?  j2 @
  7889.     (tempmod pt1 10 0)
    2 A9 W9 m6 A) {6 q# l" e# S
  7890.     (tempmod pt2 11 0)" f8 o8 U2 x5 U" U) q, m- ^7 j
  7891.     (tempmod pt3 12 0)
    8 B: t: l; k* r8 d
  7892.     (tempmod pt4 13 0)
    ; z7 Y! H  c* K- b( D7 _
  7893.     (tempmod (edgetest) 70 nil)  q) X! t  Z6 D7 G' v" ]* J  c# L" A
  7894.     (entmod elist): }0 L; k% z9 e& i. W2 r1 m" T
  7895.   )
    " P' Q+ e& x& z4 [

  7896. 4 G" O! o3 e: t
  7897.   (defun dd3dface ()$ v4 n. d2 d! o0 V# M4 b( T
  7898.     (if (not (new_dialog "dd3dface" dcl_id)) (exit)): K3 J5 j7 N; k! z/ l
  7899.     (set_tile_props)- B5 N$ }& z: y6 j+ m9 L4 U
  7900.     (set_tile_handle)
    : s1 h3 t/ A! [; d$ T/ @! Y
  7901.     (set_tile_pt1 0)
    1 ~, c+ Y' ^3 c: ^. ^! l+ N4 m% ?: [# @  s
  7902.     (set_tile_pt2 0); Q" _  r6 j! s2 d2 M. s4 \+ Z& @3 q
  7903.     (set_tile_pt3 0)
    * p  o+ {7 W- S) \
  7904.     (set_tile_pt4 0)
    2 {8 L- ~; R2 }9 f! r- n$ ~2 m
  7905.     (set_tile_edges)
    . ?8 J* D* k! v
  7906.     ;; Define action for tiles& r& O( @, Z& O
  7907.     (set_action_tiles)
    8 q# a  ^2 T; h4 p5 z
  7908.     (setq dialog-state (start_dialog))! R* z, Z5 Q$ m. F% D) V8 j, _
  7909.     (if (= dialog-state 0)9 A: N  m' L/ V. C" v: ~5 l
  7910.       (reset)2 G- o0 a& }  x  R4 ^5 f
  7911.     )5 i6 C, d$ a! @* _
  7912.     (if (= dialog-state 1), m6 z: V* g, O$ f
  7913.       (modify_3dface)
    ! f1 J. V7 z! K; k& n
  7914.     )
    2 r$ g  l2 m* S+ t" L
  7915.     (if (= dialog-state 3)2 J: T4 n. L3 s; n: i% E+ D, Z6 v
  7916.       (progn
    + }0 m2 J0 b$ S& D# z
  7917.         (modify_3dface)
    # |; ]! k7 u7 @  A+ r; f& l: i# l6 P
  7918.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst pt: "))- Q' `4 e! L! [) V
  7919.         (ver_pt1 0)
    $ X! I. a5 _  l7 _0 w" x
  7920.         (dd3dface)9 t1 K  ^& O6 ?* |" k
  7921.       )
    % }* |* c9 ^/ s+ t) D% w
  7922.     )
    ( J3 u( L' U" Y* K
  7923.     (if (= dialog-state 4)6 ^7 x9 b2 f: |' F7 D3 L6 X
  7924.       (progn0 c# c8 M* B8 e9 i3 U
  7925.         (modify_3dface)
    4 Y- \5 @3 U1 w# F( v5 @6 s
  7926.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))) U% ]" o2 Z9 C1 Z
  7927.         (ver_pt2 0)
    9 i# t6 y! c  \' K, t1 u
  7928.         (dd3dface)/ E* I7 C! k; }1 Z" C/ {
  7929.       )9 z' K0 ?# t7 r7 d. P( u2 W
  7930.     )% Y+ t# X; D* n7 g! N6 f" y
  7931.     (if (= dialog-state 5)- `8 c+ \. o) _/ D
  7932.       (progn
    . c; N# x7 d, A
  7933.         (modify_3dface)
    ! M# d) j- m3 H. x3 Z
  7934.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))
    ( S: M3 Y* k: v$ B" y# R* W9 F
  7935.         (ver_pt3 0)) a; ]% e  ]. I) |- _' y
  7936.         (dd3dface)
    - `4 @9 \, r5 C& x& v
  7937.       )
    0 N5 O0 l' u9 P! z# W
  7938.     )
    " E' T3 f/ D1 b0 P
  7939.     (if (= dialog-state 6)& [% _% e- Y2 _; }: V* D
  7940.       (progn
    ! {0 G1 k  j) R/ W( `' ?, y, k7 ~# B
  7941.         (modify_3dface)1 ~5 W  Q" T* H# ~% W* q9 P
  7942.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))" g$ a; |7 x! Y; ]% n- U, y, t% Y
  7943.         (ver_pt4 0)
    - }; |* Z3 @' M6 O1 g, D8 g
  7944.         (dd3dface)" ]+ S/ A" a. P# x: U: e
  7945.       )
    . O$ j% Z' B9 M% V: b
  7946.     )
    4 I1 R7 x6 o& W: |, t* y9 @
  7947.   )
    ! k& L( J: `+ V; p3 K

  7948. , k' X- V2 Q$ e( H( v9 t
  7949.   ;;, O2 ^5 Q4 \1 T, F3 ]/ H" j4 M
  7950.   ;; Image functions
    * G# }, b- G/ m# a# R
  7951.   ;;
    6 b- h9 l! l) B. B, r3 g: _  ~
  7952.   (defun image_scale (/ upixel en n userscale temp)
    $ n- {' {. f% O. K9 y
  7953.     ;; Calculate the size of an image pixel in AutoCAD units- ]2 f* W, M9 \( z3 u& e8 a
  7954.     (setq upixel (distance '(0 0 0) (cdr (assoc 11 elist))))
    6 z0 w- ?, D8 _, P" [

  7955. $ A+ F9 j4 y# i/ V" c/ G! h
  7956.     ;; Retrieve the user scale
    ! }6 }. a2 h; T4 |$ ^- N. f* x  t
  7957.     (setq en (dictsearch (namedobjdict) "ACAD_IMAGE_VARS"))
    ( v2 \8 G/ l- M+ j! U

  7958. 5 ~4 O7 _' P7 k- X
  7959.     ;; Next, extract the image units and pixel resolution
    ' _. F' }3 N& r
  7960.     (if (or (= 0 (cdr (assoc 281 image:olist))) (= 0 (cdr (assoc 72 en)))): e7 v; \* n" x& E, C& O4 q# a
  7961.       (setq image:scale (* (cadr (assoc 13 elist)) upixel))6 F9 D3 f; n' {) C  h
  7962.       (progn
    6 q+ @; o" y) j' X6 i! x1 Z: R  }
  7963.         ;; Convert the user scale to the proper word
    3 G/ K+ h; d+ @6 ?7 ]
  7964.         (setq n (cdr (assoc 72 en)))  b  G+ q1 O7 @" X( T" h
  7965.         (setq temp (getvar "LUNITS"))( s* f  i! G1 y
  7966.         (if (and (/= n 0) (or (= temp 3) (= temp 4))) (setq n 5))4 L# S$ n- j( b- t9 l) G; ?8 s
  7967.         (if (= n 1) (setq userscale "Millimeter"))
    0 w  d1 Y2 H% C7 I8 Y, r" q
  7968.         (if (= n 2) (setq userscale "Centimeter"))
    6 `9 p9 F' G% Y+ {! x) Q2 @9 ]# v
  7969.         (if (= n 3) (setq userscale "Meter"))$ a* T. g' @+ a1 M1 b
  7970.         (if (= n 4) (setq userscale "Kilometer"))9 l" r  I  C- O- u+ y3 g' E
  7971.         (if (= n 5) (setq userscale "Inch"))
    # z4 a$ s* D2 w2 z' Y/ H
  7972.         (if (= n 6) (setq userscale "Foot"))
    : ~# {: e/ z, P9 Z
  7973.         (if (= n 7) (setq userscale "Yard"))" [- U" D1 I+ P0 A% _) P
  7974.         (if (= n 8) (setq userscale "Mile"))2 O' k& I# K  I) V* d
  7975.         (setq image:scale (/ upixel (cvunit 1 "Millimeter" userscale) (cadr (assoc 11 image:olist))))5 N# ~# P& I9 k# q4 B- [2 R
  7976.       )
    % j& p& h1 }4 C. \" j+ {7 U
  7977.     )
    6 I5 N( |6 u% |. j
  7978.   )7 q/ e; r: p( _6 u

  7979. + r# ~. l4 p- m% V6 n6 z# _/ D6 I
  7980.   ;;
    # z2 R3 e5 i6 U) _6 V
  7981.   ;; Scale factors for block insertions
    3 ?' @0 w5 s) f0 p/ P, x$ t
  7982.   ;;
    0 @" [+ X: @8 i* C+ ~
  7983.   (defun image_set_tile_scale (/ temp)1 |. [6 ]- V/ t5 u( J; S
  7984.     (setq temp (getvar "LUNITS"))
    ; q1 Y5 x- a! A* P" j3 m
  7985.     (setvar "LUNITS" 2)
    5 s4 f# w( a& z$ q7 Z1 k7 y" ~" Z
  7986.     (set_tile "xscale" (ai_rtos (* image:scale image:mult)))
    1 ~/ A6 C) Y4 o+ z) z: m
  7987.     (set_tile "wid" (ai_rtos (* image:width image:mult)))2 Z& F+ P/ q; X/ H  V, x- N/ _: S
  7988.     (set_tile "hght" (ai_rtos (* image:height image:mult))); g, ?6 H5 \$ N* E! N* R$ f
  7989.     (setvar "LUNITS" temp)
    * Y9 j2 {3 p$ A
  7990.   )( A5 E+ U9 `7 h1 C& ]. z  \
  7991. ( ~" H# x* u5 y! o$ {' \3 F9 y6 D
  7992.   ;;
    , {( a1 @/ Z& l5 U$ \2 q2 I9 ^: f/ a
  7993.   ;; Set the scale, width and height values appropriately.
    . v0 H6 _% _7 y0 h8 s/ \3 b% ^8 M
  7994.   ;;
    1 N" I1 n+ \+ ]8 o6 @8 j9 f8 |
  7995.   (defun image_update (field value / orig_value new_value mult)# l- y( \  x$ I* H
  7996.     (if (= field "xscale")$ H  l6 w% y8 K6 m5 c9 s
  7997.         (setq orig_value image:scale)/ L) E8 A7 ?; g" P5 }1 j# H$ Y
  7998.     )
    3 g' B  z4 k8 D: R2 r% h9 X# p
  7999.     (if (= field "wid")
    7 B* z; w0 o# {/ x
  8000.         (setq orig_value image:width)# M  d/ B( n% V+ `7 v- h2 E
  8001.     )
    9 H$ B5 ]$ F" t1 X% ?; U
  8002.     (if (= field "hght"): L9 f- b) O5 M/ {8 s8 w/ m
  8003.         (setq orig_value image:height)$ l- D9 y3 k# l* p) b
  8004.     )# s4 l* h6 x* T9 ?- ~9 m
  8005.     (setq new_value (verify_d field value (* image:mult orig_value)))3 s" R/ j8 ~" i4 Q& ^7 `
  8006.     (if (/= new_value old_value)
    7 A" f& W, J3 u
  8007.       ;; Make sure the user has entered a sufficiently large value
    ' @* f5 h2 l: y" f2 i* e) X, s% I0 j% o& I
  8008.       (if new_value0 Q, K$ `& {$ j; M- [
  8009.         (progn- S- o! ?5 S* _2 U) e
  8010.           (if (< new_value 1e-8)2 E# G6 A- _8 O8 f/ r' c  }4 p
  8011.             (setq mult image:mult)+ f8 M% t: p- i( R: Y0 a, H! @$ Z
  8012.             (setq mult (/ new_value orig_value))% q, X9 s/ t# _" t1 v' ~1 b# K
  8013.           ), j. z+ }' X4 {: r; j
  8014.           (setq image:mult mult)
    4 Q  b$ e; T2 E7 M2 R: f& i# M
  8015.           (image_set_tile_scale)
    * r3 V* s7 a+ v0 e  K, t7 B
  8016.         )) [3 t: v, b$ J0 m/ v; ?; v
  8017.       )) Y$ Q! F7 e/ y+ E1 \
  8018.     )" P8 n3 ]; C0 Y- s9 W; x
  8019.   )
    0 m8 h: m1 C& F/ g+ x' G

  8020. , a2 q: A/ V+ m  i. Z, j$ O
  8021.   (defun image_disp_opt (bit)6 I: k4 f$ d; E
  8022.     (setq image:options (Boole 6 image:options bit))
    1 Z& F' h5 K3 O8 `* f+ I
  8023.   )
    # ]6 a' Q0 R& p; T# F
  8024. / X& n2 q$ B! z7 \  S
  8025.   (defun image_modify ()* N  p  U8 \: a2 [3 e
  8026.     (modify_properties)) }; ^& u3 q, Y6 g. l8 m. ?
  8027.     (setq pt1 (list x1 y1 z1))( w2 x. f% y) @& |$ F0 H$ k
  8028.     (tempmod pt1 10 0)$ N( n+ H0 \- s* v/ E3 \
  8029.     (entmod elist)% y6 ^/ W5 a" U4 T) E1 C/ k
  8030.   )% ~8 a5 n; K& J0 p6 _

  8031. 5 w+ ]/ e0 i7 n  ?1 l$ N( U5 ^
  8032.   (defun image_clean_variables ()  a: y) ]6 J. f+ |
  8033.     ;; Clean up global variables used here( [  C1 X$ N: l7 t" e  \; p8 V
  8034.     (setq image:scale nil)+ p6 T8 `& L/ H8 t) A2 h
  8035.     (setq image:angle nil)
    8 d, x. b7 m- D9 G' I7 y
  8036.     (setq image:width nil)
    1 k8 ^% `# ^  k- Q
  8037.     (setq image:height nil)2 a5 R/ ]7 V% [- A& k
  8038.     (setq image:options nil)
    ( U1 B0 h9 F7 L0 n& t. B+ }3 P
  8039.     (setq image:oname nil)
    ( b! A0 a8 J' x8 {2 c+ X; @* ?$ P( I4 g
  8040.     (setq image:olist nil)" R" _* i# S$ d' S7 @9 L9 x
  8041.     (setq image:mult nil)
      A- ?2 R; p4 n0 }# j0 ?7 d
  8042.     (setq st_ang nil)
    2 l& N/ n! w! x! W& I5 ]
  8043.   )0 t% ?; D8 p$ C. {  ^

  8044. 9 H5 u- Y% y4 M6 [5 T/ d5 Y
  8045.   (defun image_scale_vector (v1 value)
    % P* s! I* |0 j5 g. j1 l+ T
  8046.     (list (* (car v1) value) (* (cadr v1) value) (* (last v1) value))
    / T* K! h, Q5 U$ _2 o  T) D/ X
  8047.   )* D/ M  l$ |* c3 P9 v" g- h3 E) m

  8048. - q. N: I) z4 V- T7 w
  8049.   (defun image_cross_product (v1 v2 / vx vy vz)# ~& ]# y: t& `! D5 @3 U
  8050.     (setq vx (- (* (cadr v1) (last v2)) (* (cadr v2) (last v1))))% [; D9 D) c6 |0 {' _- g% C
  8051.     (setq vy (- (* (car v2) (last v1)) (* (car v1) (last v2))))( d. E, o1 z4 V9 x3 l
  8052.     (setq vz (- (* (car v1) (cadr v2)) (* (car v2) (cadr v1)))): [" @, a5 W* q2 ~
  8053.     (list vx vy vz)
    ' _6 b8 Z7 r- f/ Q& l2 I/ x2 e
  8054.   )
    / n1 W0 R, [8 V- S& ?

  8055. 8 J9 u, V  w3 g) E6 c2 G
  8056.   (defun image_dot_product (v1 v2)
    0 c6 `+ E/ g7 \% A2 b) d! o' i0 X* I
  8057.     (+ (* (car v1) (car v2)) (* (cadr v1) (cadr v2)) (* (last v1) (last v2)))
    0 J& v# ?! L9 @) F( b/ a# z2 @
  8058.   )
    " b/ X3 Z) }  E/ W

  8059. 1 d  `% _0 Y7 n, y/ y( `$ X- l4 o
  8060.   (defun image_add_vector (v1 v2)
    7 X$ d( ^$ m) p: C# b
  8061.     (list (+ (car v1) (car v2)) (+ (cadr v1) (cadr v2)) (+ (last v1) (last v2)))
    % a$ L9 U: L( d/ v7 N; e! x
  8062.   )
    3 N6 x% P1 u- U0 _' ^
  8063. + c+ }( A7 k' ^5 h: x) i; g
  8064.   (defun image_subtract_vector (v1 v2)
    " C. C( {5 ^: B, {7 j5 q/ c9 D
  8065.     (list (- (car v1) (car v2)) (- (cadr v1) (cadr v2)) (- (last v1) (last v2)))1 [- g, H% U7 M
  8066.   ): V4 w+ r$ S5 ^; l7 v

  8067. ! I" g* o- C2 y1 N$ l$ S4 ]
  8068.   (defun image_normalize_vector (v1)8 H% u; Y: G7 Z& D8 l
  8069.     (image_scale_vector v1 (/ 1. (sqrt (image_dot_product v1 v1))))
    , E: z2 n6 k# M0 m* N. g; X$ y' v
  8070.   )% |4 s% Y9 Z( E
  8071. , D5 }7 `3 x) \2 w
  8072.   (defun image_rotate_vector (vector angle axis / along_axis axis_x_in_rot_plane axis_y_in_rot_plane in_rot_plane)" Y% R9 D, C- R
  8073.     ;; Normalize the axis
    7 z- q7 x0 i  N8 }% l  Y
  8074.     (setq axis (image_normalize_vector axis))
    5 }4 o9 Q( T0 A: u& ]8 Z' O
  8075.     (setq along_axis (image_scale_vector axis (image_dot_product vector axis)))/ u- ]* V# `$ D9 @* `# Z
  8076.     (setq axis_x_in_rot_plane (image_subtract_vector vector along_axis))
    . O" S- z- }/ X$ W0 g
  8077.     (setq axis_y_in_rot_plane (image_cross_product axis axis_x_in_rot_plane))2 W2 I  m+ L0 S7 @8 ]
  8078.     (setq in_rot_plane
    0 t9 y& \$ W7 V1 J
  8079.       (image_add_vector
    " @5 v. ^6 l, f" t% W
  8080.         (image_scale_vector axis_x_in_rot_plane (cos angle))
    + y! Q# B! s  z% x. T& n% w
  8081.         (image_scale_vector axis_y_in_rot_plane (sin angle))
    ! m5 P# ?4 b- ]& s
  8082.       )
    ; I3 U- u: r/ M
  8083.     )& F- R3 |3 r9 z/ ?' [
  8084.     (image_add_vector along_axis in_rot_plane)
    & X7 |& J; ~& w! Y2 L
  8085.   )
    2 d0 H! \: W" G$ X% p1 O

  8086. + n( ]0 v: V0 Y
  8087.   ;;+ t& V' g9 w! {& O: B4 e
  8088.   ;; Calculate current rotation angle if appropriate.
    & h4 O  L# u/ ^9 a2 J6 h
  8089.   ;; If not, grey out the rotation field.
      u! N" R9 {$ h1 A! w5 N
  8090.   ;;
    ! k+ B9 q2 B9 y: o
  8091.   (defun image_rotation (/ normal rlength zlength sqrt_tolerance)
    & y' r" i# u, _
  8092.     ;; Determine if image normal is codirectional with
    ! s4 Y) ^1 j6 G6 r
  8093.     ;; the current UCS Z-vector.; A$ ]8 a( g4 w% D3 X( l
  8094.     ;;  m. \7 o) G, j% h0 b; L' P
  8095.     (setq normal (trans (image_normalize_vector (image_cross_product (cdr (assoc 11 elist)) (cdr (assoc 12 elist)))) 0 1 1))6 A2 G8 ]4 t9 i7 K
  8096.     (setq rlength (+ (* (car normal) (car normal)) (* (cadr normal) (cadr normal))))
    - X2 {* J* `# Q
  8097.     (setq zlength (* (last normal) (last normal)))" Q- @7 d; _( \
  8098.     ;; Note that the value .0001 in the radians is approximately 0.0057 degrees./ k6 a; s0 l& J+ s$ ^
  8099.     ;;& }! H; P6 I1 U1 w/ {- I2 `
  8100.     ;;                cos(.0001)^2) M$ Q5 Q/ m* O1 I0 ^
  8101.     ;;   Tolerance = --------------
      P6 E( s& J) B& v/ f; w( G
  8102.     ;;                sin(.0001)^2
      i# N, r7 I  ?/ c' H0 T. g
  8103.     ;;
    * U( T( Y4 @. Q7 F% s
  8104.     (setq sqrt_tolerance (/ (cos 0.0001) (sin 0.0001)))8 ~9 Q6 g9 u; Z8 R
  8105.     (if (and (< (* rlength sqrt_tolerance sqrt_tolerance) zlength) (> (last normal) 0))/ b& X, h3 j, A& q8 \# ?% ?% s
  8106.       (setq image:angle (angle '(0 0 0) (trans (cdr (assoc 11 elist)) 0 1 1)))
    2 N0 Y3 X6 ^4 x; G, q8 y  `
  8107.       (progn# _! c% U9 @, C
  8108.         (mode_tile "st_ang" 1)5 r# f' N! }$ l& @
  8109.         (setq image:angle 0); S3 b( Q' E4 n( C
  8110.       )7 K9 F+ D/ D: g- r% f6 y: N
  8111.     )1 f4 g) U0 y3 M8 x2 ?
  8112.   )4 G, B$ |; U+ V; h: O; Z

  8113. 8 o; ^- i# [# ?# W8 Z
  8114.   ;;6 ^. y% @9 ]7 X/ x, G
  8115.   ;; Modify Image
    & u) \( S( \  D* |! n
  8116.   ;;5 }$ o* H" F; V% W( r5 X
  8117.   (defun modify_image (/ u_vector v_vector z_vector)5 w) R  ]1 L4 f+ j, o0 {* v
  8118.     (modify_properties)0 H- Q  B$ o# D& v
  8119.     (setq pt1 (list x1 y1 z1))1 R/ S7 n: }. B$ T6 x: [5 W: L
  8120.     (tempmod pt1 10 0)
    2 f# G1 t2 H0 L) q
  8121.     ;; Make display option changes to image
    / J2 O* j9 `% F& i* u6 x5 O
  8122.     (emod image:options 70)6 D+ Z; L% p# s6 q  P& X% C2 q
  8123.     ;; Get the u and v vectors
    ( D  w0 X* D$ W, H
  8124.     (setq u_vector (cdr (assoc 11 elist)))2 N1 \" k; \* M7 i
  8125.     (setq v_vector (cdr (assoc 12 elist)))2 E( \. D: k. K, J' Y1 R7 S/ F
  8126. 7 r# ~" @7 Z! ^. ?# c8 U* A- ]
  8127.     ;; Make scale changes to the vectors* o7 Q5 X* o  P2 g( C- d1 n
  8128.     (if (/= image:mult 1)& ], e# |% e/ _$ K, x. [/ ?3 ~
  8129.       (progn
    - G/ t, ?1 e4 o$ t, }* H3 Q; S
  8130.         (setq u_vector (image_scale_vector u_vector image:mult))
    . J! M0 y3 V% L: P) Y4 {- ?% O, e( X% J
  8131.         (setq v_vector (image_scale_vector v_vector image:mult))
    ) O3 o7 Q" O: _% J& P
  8132.       )
    3 w: m! J* t% G( q6 _% E
  8133.     )
    $ F8 g' q2 K$ l
  8134.     ;; Rotate the vectors
    % H: B$ H+ b1 v: S3 D1 J
  8135.     (setq st_ang (- st_ang image:angle))# `. g4 M* M9 \
  8136.     (if (/= st_ang 0)
    ; H3 J% F3 ]* x7 N& t/ I$ d; C
  8137.       (progn( y: U) J/ g9 q+ L5 ^- O
  8138.         (setq z_vector9 Y* A( J; ?- e
  8139.           (image_cross_product+ P2 h  A5 z8 F$ Z/ \# J
  8140.             (image_normalize_vector u_vector)
    $ R; t5 S- b9 c( C4 c' M3 Z. A* C
  8141.             (image_normalize_vector v_vector)
      ^& q% `$ M; R0 B  x
  8142.           )
    ! V1 a4 Z7 @9 T2 S6 j  l1 R
  8143.         )
    / }5 ]' l; s# U. n) Z
  8144.         (setq u_vector (image_rotate_vector u_vector st_ang z_vector))
    0 a/ ^# J& h. z: t
  8145.         (setq v_vector (image_rotate_vector v_vector st_ang z_vector)); n) f. V  \1 H3 g
  8146.       )0 Z2 Q( s' v: h, j
  8147.     )
    ) ?. @5 s, S' A- r# ~
  8148.     (emod u_vector 11): @- D% r* u" Z% L
  8149.     (emod v_vector 12)
    ' T4 a8 x, F- K+ f+ j
  8150.     (entmod elist)
    8 @$ \: }7 X3 R" p9 j6 l7 q6 G
  8151.   )
    " M7 M* x9 A2 P; H6 V( R1 [6 \

  8152. 3 f% \+ z: L' o) q
  8153.   ;;
    ! C, `* y2 ~1 n& V/ r% L1 U- T+ z$ W4 u
  8154.   ;; Run imageadjust on given entity, working around possible# p2 S3 Y) s4 V+ b" v
  8155.   ;; re-entrancy problems, `) c- I2 H+ {) K6 w  A
  8156.   ;;0 s' B' E9 k. J- _
  8157.   (defun image_adjust (ename)5 D" X* Z$ ^  V5 r* p3 C9 z
  8158.     (verify_arxapp_loaded "ism.arx") ;; make sure it's loaded...
    # |) m' }7 H* H) O8 [0 t5 z
  8159.     (imageadjust ename): K8 ?+ F5 k$ [9 Q3 ]
  8160.   )/ u7 C: y: E$ V; ]. u

  8161. 7 S1 j4 j- M9 b5 @
  8162.   (defun ddimage ()
    ; C4 O5 P7 P6 x1 [: ?5 r/ N
  8163.     (if (not (new_dialog "ddimage" dcl_id)) (exit))! Q; H/ N' P; R% `- F# j

  8164. & l# H1 A9 Q$ g/ j( m/ t& p& f
  8165.     ;; Grey out the thickness field.5 F& C4 `. b% l# j8 M$ y
  8166.     (mode_tile "b_thickness" 1)0 H% B( Y1 U$ m
  8167.     (mode_tile "eb_thickness" 1)1 Q. a3 I5 k# A1 M+ j$ ^% K
  8168. % A1 u5 }% I9 ]2 y# ^
  8169.     ;; Get the associated def object.. Y& m5 S. B* G/ `1 ?: ^+ K) Q
  8170.     (setq image:oname (cdr (assoc 340 elist)))
    4 N' W! d, _+ p2 r: a! `
  8171.     (setq image:olist (entget image:oname))$ ~1 t* Q' V3 Q
  8172. * G9 I( b) o1 F6 f+ v
  8173.     ;; Set initial tile values  ~5 L" \  F4 Z/ f0 o+ F4 m( u
  8174.     (set_tile_props)6 V' ]9 k9 v' M2 p: K8 {
  8175.     (set_tile_handle)
    3 s4 B: S6 E1 G5 g$ g$ U6 G
  8176.     (set_tile_pt1 0)
    2 J: v; w+ ~' L& Z- Z& J: q: D
  8177.     (setq image:scale (image_scale)), ~7 A1 g. N& w& @2 ]
  8178.     (setq st_ang (image_rotation))
    . H3 s& B% y3 N' }
  8179.     (setq image:width (* (distance '(0 0 0) (cdr (assoc 11 elist))) (cadr (assoc 13 elist))))) b7 x6 p- _" W" J) N& ~" n7 H$ x( J# J
  8180.     (setq image:height (* (distance '(0 0 0) (cdr (assoc 12 elist))) (caddr (assoc 13 elist))))
    4 _2 o* {& @! b# F
  8181.     (setq image:options (cdr (assoc 70 elist)))
    ! _5 K. z+ l8 P+ ]: J3 }
  8182. 6 Z5 X) S; g" |! P# n5 d5 [( t+ {
  8183.     ;; Record the last multiplier for use in image_update function
    ! z+ r* g  P+ l4 v6 y
  8184.     (setq image:mult 1)
    ( W3 G1 n7 l6 N( Z" u! Z
  8185. . T9 s+ y4 p* @+ p1 _+ T! m
  8186.     ;; Retrieve the image name
    6 F+ f, \+ y) b6 r& D
  8187.     (setq fn (reverse (dictsearch (namedobjdict) "ACAD_IMAGE_DICT")))
    3 w$ q, ~/ s4 W
  8188.     (setq flag 0)1 {( Z. J/ V2 f  Y' w
  8189.     (foreach n fn
    4 n' }+ G, `# X8 I9 I$ G' T' `! D" f
  8190.       (if (= flag 1): |2 Y8 \$ A1 M
  8191.         (progn
    3 s1 S& W0 n3 J  ^
  8192.           ;; Display the image name/ X1 t. K! D2 u6 C$ a
  8193.           (set_tile "image_name" (cdr n))
    % w2 d$ [0 E4 I: J3 i. O
  8194.           (setq flag 2)
    . T+ X9 b, G) j! ^  Q
  8195.         )& l: f; ?! o; h+ {
  8196.       )
    , l& Z3 a2 @" ?- z4 _
  8197.       (if (= flag 0)
    . k6 h- X5 Q- g+ |" W& \" S  F. x
  8198.         (if (equal (cdr n) image:oname) (setq flag 1)): ~) m3 {. ]) v. ?% i' c
  8199.       )
    3 H- q  z. P* H; z
  8200.     )
    & M% d( I  l# |0 F; V
  8201. & j" ~8 t; X7 K! E* P+ U
  8202.     (set_tile "image_path" (cdr (assoc 1 image:olist)))
    - Z7 w9 ]0 [; s9 i. p
  8203.     (set_tile "st_ang" (ai_angtos image:angle))
    ' {7 G$ k6 q+ a$ T5 G2 R9 o
  8204.     (image_set_tile_scale)
    ) T+ j6 V2 i8 }* E5 h+ L' `
  8205. 0 O4 p( v$ h7 m$ K# l: g. ^
  8206.     ;; Check the appropriate boxes
    ! t, b: b3 A& _2 _+ Z
  8207.     (if (/= (Boole 1 image:options 1) 0) (set_tile "image_show" "1")), I+ f# u+ A! g% E3 n5 {
  8208.     (if (/= (Boole 1 image:options 2) 0) (set_tile "image_non_ortho" "1"))4 W8 @3 f9 r7 J' B  ^
  8209.     (if (/= (Boole 1 image:options 4) 0) (set_tile "image_clipped" "1")). J) X3 {7 c1 g' n6 J0 k; Z
  8210.     (if (/= (Boole 1 image:options 8) 0) (set_tile "image_transparency" "1"))8 i7 E) ^9 A( S4 ]

  8211. 4 c3 [/ _( i" M. d9 z% j
  8212.     ;; Define action for tiles
    - {8 C/ g7 _# G/ G: p5 E% D/ Q
  8213.     (set_action_tiles)
    2 y" t5 c9 [- K: R+ {+ P  R
  8214.     (action_tile "xscale" "(image_update \"xscale\" $value)")1 Z, R# z( y# ]2 A
  8215.     (action_tile "st_ang" "(ver_ang1 $value)")
    $ ^- ~) ~( N4 h% r) c/ F
  8216.     (action_tile "wid" "(image_update \"wid\" $value)")
    & O+ X7 W& e6 p; V- P
  8217.     (action_tile "hght" "(image_update \"hght\" $value)")' m* @6 T, |5 w9 s# A
  8218.     (action_tile "image_show" "(image_disp_opt 1)")& X% U8 M( ~0 X* \( F
  8219.     (action_tile "image_non_ortho" "(image_disp_opt 2)"), |) [0 Z' I, P4 @7 q7 A
  8220.     (action_tile "image_clipped" "(image_disp_opt 4)")
    & X8 L. _0 O7 c  D* s& W
  8221.     (action_tile "image_transparency" "(image_disp_opt 8)")
    ) [+ q) I) \! X4 v: Z. ?1 V# ~
  8222.     (action_tile "image_adjust" "(done_dialog 4)")
    9 Q9 R: l# d5 o* u5 X. {
  8223. 9 h5 c: g% l% l& y) G+ R2 H9 M1 k
  8224.     (setq dialog-state (start_dialog))
    8 s6 d, i  T& h# [* }
  8225.     (if (= dialog-state 0); {, r: s2 q& _/ n$ p. H( c8 U
  8226.       (progn  w: c  O( h# i
  8227.         (reset)
    4 X& R1 T6 j0 [, v5 j: a( v
  8228.         (image_clean_variables)# V/ M6 J7 i; }( c7 E
  8229.       )8 g$ O) T$ \% r
  8230.     )4 C+ J2 E1 S1 @9 g
  8231.     (if (= dialog-state 1)8 V2 p& o/ T' ]" l9 x5 w1 `
  8232.       (progn
    . Q% M1 Y' k# T# @/ ]
  8233.         (modify_image)- |* C1 H7 F. c$ X
  8234.         (image_clean_variables)
    * P# S* t, Q! l% d( W
  8235.       )1 u6 J2 N3 G( v: k/ L( Z8 F
  8236.     )
    - q5 l' G9 T; e4 D4 l
  8237.     (if (= dialog-state 3)
    + j( Z2 @0 F7 l5 i* |/ J* b# p' h- o
  8238.       (progn1 n* W1 ]1 @, d4 W( m
  8239.         (modify_image)
    : x: r0 }, y9 I: A5 j& S
  8240.         (image_clean_variables)
    & U/ I* o$ _- C7 l( N( H. q
  8241.         (setq pt1 (getpoint (list x1 y1 z1) "\nNew Insertion Point: "))
    7 S$ S. G3 ^8 F; M7 D
  8242.         (ver_pt1 0). N! a7 g4 l6 J3 @9 C6 C
  8243.         (ddimage)
    / G6 Q7 x: ?7 O
  8244.       ); ]. L2 d2 t" w- L
  8245.     )
    : f; R: X, y0 l8 h' T4 z! w6 r" @
  8246.     (if (= dialog-state 4)
    % J+ i$ U. B4 S) ?
  8247.       (progn5 C6 F, \8 f1 H4 ?
  8248.         (modify_image)7 V) {- n4 Q; R$ n
  8249.         (image_adjust ename), z/ q2 q: i3 ]3 `8 M. _
  8250.         (setq elist (entget ename))
    $ Y! H1 b6 r% S
  8251.         (ddimage)8 G  I. H. u! `% ~( E1 c4 _
  8252.       )! r6 d; D, P3 P. s" ^# r
  8253.     )
    6 R- r' i  w  u& D' O5 ^
  8254.   )  o# W' o  ^6 W. o
  8255. 4 R2 j, h5 G+ J/ |6 q1 x5 u# v
  8256.   ;;
    # p: s5 {4 }4 E" E, r
  8257.   ;; Modify BLOCK (and its Attributes, if any)
    ) K$ A7 U4 X6 [" E
  8258.   ;;
      |, _  j) u+ L$ n9 }( j- P* Z
  8259.   (defun modify_block ( / el en2 p1 p2 oldp1 oldp2 new_hgt old_hgt attr! Z& \) d5 J' E0 g' |8 F
  8260.                           new_wid old_wid old_rot scaling old_scale% l4 Q; I0 f  e
  8261.                           xdelta ydelta zdelta xbase ybase zbase ipos)
    / t! }3 w4 @6 E' p' t5 y
  8262.     (modify_properties)
    4 p1 q, o, j$ d0 P  ?: N$ U
  8263. 3 ^% F1 J4 D: h4 {2 t0 q, `7 o
  8264.     ;; First, translate and scale the Attributes, if there are any.( b6 x5 A' m& i" \' I  ?1 G5 \) A9 ^9 `
  8265.     (setq old_rot   (cdr (assoc 50 elist))
    * B" B8 T+ C7 R" a$ {
  8266.           old_scale (list (cdr (assoc 41 elist))  r. \" d1 o5 W' E2 q
  8267.                           (cdr (assoc 42 elist))
    5 X  h' s1 d, D. u! w. o2 H! W5 C' f3 t; \
  8268.                           (cdr (assoc 43 elist))8 Q* l" I5 h# r
  8269.                     )
    6 [2 ^0 a8 t) U7 B6 u1 ]
  8270.           scaling   (or (/= xscale (car   old_scale))0 R! n; u; u6 d# t
  8271.                         (/= yscale (cadr  old_scale))
    , Q: e* c* v  F- x( [5 o
  8272.                         (/= zscale (caddr old_scale))3 d: T& J4 @% @) \4 K# G/ J( o
  8273.                     )5 [/ o9 v- L+ ?! ?  J* H( ~
  8274.           attr      nil               ; No Attributes modified yet
    6 Q4 b; ^! p3 h
  8275.     )  t! ]  {' |/ X/ j
  8276.     (if scaling- r$ W. a* }" W* P( I/ J2 d
  8277.       (progn  P% S+ n% V0 x* y+ X) U6 {6 Y
  8278.         (setq xdelta (/ xscale (car   old_scale))
    * f: [# s) B0 x1 M
  8279.               ydelta (/ yscale (cadr  old_scale))
    0 J$ y/ f  F. {7 b7 `
  8280.               zdelta (/ zscale (caddr old_scale))
    1 @3 ]- M9 @/ j; f; j
  8281.               ipos   (cdr (assoc 10 elist))
    * N! W& [0 G" b# V& s
  8282.               xbase  (car   ipos)
    ! w# f0 G" r: s
  8283.               ybase  (cadr  ipos)
    ) R6 {0 M) p4 s$ M& I
  8284.               zbase  (caddr ipos)
    6 v& K. U" ~3 b6 V( Y, q
  8285.               en2    (entnext ename)  ; First Attribute
    8 |* T1 s0 f# y* s
  8286.         )! P9 \3 _. Q# V" A) s0 x
  8287. 6 ?6 _/ |% |5 m3 B6 _
  8288.         ; If the Block is rotated, temporarily un-rotate it, along
    - e5 E* G; x8 J5 u* U
  8289.         ; with all its Attributes, so the scaling/translation of the7 Q) m2 z/ L1 k$ y8 x
  8290.         ; Attributes won't have to take the Block rotation into account.
    0 i! b4 [" d& y& o8 b
  8291.         (if (/= old_rot 0.0)9 @; M" `3 A2 [  Z5 U; w: i
  8292.           (progn9 I, V) @8 W) ~4 F' [
  8293.             (command "_rotate" ename "" pt1 (ai_angtos (- old_rot)))2 r( }$ g$ D. A3 g, f5 e
  8294.             (setq old_rot 0.0
    * D' T' x6 a: }0 ]& l
  8295.                   elist   (subst (cons 50 0.0) (assoc 50 elist) elist)$ q! E1 X1 z; `1 B' ]% \( P8 }- }
  8296.             )1 C' {. X3 o/ ^) S4 J
  8297.           )$ F" q! a2 Q' H& P8 s
  8298.         )0 [1 [. k/ L  W5 \4 v/ T

  8299. 2 Q! J2 l) ]" C: s1 ~* a8 |
  8300.         (while en2
    9 b# k% D- g1 E" n
  8301.           (setq el (entget en2))
    4 K. k( o' k" g3 d) E4 E1 w
  8302.           (if (= (cdr (assoc 0 el)) "ATTRIB")4 [& ?/ ^! y( |8 i9 n
  8303.             (progn3 W  h3 }. E5 |" Y7 L6 e
  8304.               (setq old_hgt (cdr (assoc 40 el))  ; Height% e' Q  W; |# F, a7 K  R) t
  8305.                     old_wid (cdr (assoc 41 el))  ; Width-factor9 S) T3 y! M" k7 g" Z+ R, [; q
  8306.                     oldp1 (cdr (assoc 10 el))  ; Generation start point9 l3 E0 p; o. _. q! y
  8307.                     oldp2 (cdr (assoc 11 el))  ; Optional alignment pt
    ; i) D" t( U1 G5 ^
  8308.                     ha    (cdr (assoc 72 el))  ; Horizontal alignment
    8 \' N7 _6 M6 O! L
  8309.                     va    (cdr (assoc 74 el))  ; Vertical alignment
    0 p8 l5 b3 `. Y4 l- f
  8310. , K& [, w* x6 S" t
  8311.                     ; Translate gen. start point+ i3 C' a/ ^) C
  8312.                     p1    (list (+ xbase (* xdelta (- (car   oldp1) xbase))): p' o! {! k$ S: H- ~
  8313.                                 (+ ybase (* ydelta (- (cadr  oldp1) ybase))). ~" J. t- h5 c. B+ r) d
  8314.                                 (+ zbase (* zdelta (- (caddr oldp1) zbase))), w6 F: E: j& c) ?3 r- p
  8315.                           )4 P- x" F' z9 Y
  8316.                     el    (subst (cons 10 p1) (assoc 10 el) el)
    - }2 q& E. d' n, z8 \( w
  8317.               )
    6 |/ C+ w$ V% O
  8318. 2 d& |& p" z( _+ ?
  8319.               ; Translate alignment pt similarly, if present and applicable
    . h/ j. W! ?4 V" l5 q8 |
  8320.               (if (and oldp2 (or (/= ha 0)
    . g$ Q' s  I" }/ b
  8321.                                  (/= va 0)
    3 F5 U. [) C# J4 A8 g. F9 W: c
  8322.                              )
    / ]# q4 D. J6 g3 [! C$ L  G0 R
  8323.                   )
    ) N# o: C% F0 B
  8324.                 (setq p2 (list (+ xbase (* xdelta (- (car   oldp2) xbase))). q! f2 r2 D  y  r6 ]! W' a& C2 x
  8325.                                (+ ybase (* ydelta (- (cadr  oldp2) ybase)))" |* Y  _' L. ]5 Z) ?
  8326.                                (+ zbase (* zdelta (- (caddr oldp2) zbase)))
    . B+ {' B6 `+ u7 x( K& _/ l
  8327.                          )
    7 A. W+ @& Z9 E% P
  8328.                       el (subst (cons 11 p2) (assoc 11 el) el)
    - |8 @6 x4 L& W- Q
  8329.                 )6 U- h4 K. i8 a1 a% T9 U7 U
  8330.               )9 y4 a. I5 H0 h$ |/ p: v
  8331. 6 s& L: L: c0 L1 d& ]
  8332.               ; Each Attribute's height and width-factor were computed
    ; h% r" z* C! j# {; [
  8333.               ; based on the Block's scale factors.  Adjust them now,5 ~/ K" A  W" y) V& O
  8334.               ; by first reducing to values for 1x1 scale...
    0 p2 L- j9 F! q) R  d: V
  8335.               (setq new_hgt (/ old_hgt (cadr old_scale))
    2 v+ t/ p: b8 e; Y" Y
  8336.                     new_wid (/ old_wid (/ (car old_scale) (cadr old_scale)))
    3 i8 [7 r% K$ N8 s& Y% q4 |
  8337.               )7 q* u  f2 M' w- E. l) d! f
  8338.               ; ...and then rescaling.
    , E0 @) ^1 K  b1 Z3 E  L% k8 O
  8339.               (setq new_hgt (* new_hgt yscale)( w* B$ a, B# M3 L6 J; _0 @+ h
  8340.                     new_wid (* new_wid (/ xscale yscale))
    2 A5 v1 k" W  U' W
  8341.               )) K: P( ?3 F. x2 B6 O, f1 r
  8342.               (if (/= new_hgt old_hgt)
    . ?7 Q7 D: w# e& |$ ?
  8343.                 (setq el (subst (cons 40 new_hgt) (assoc 40 el) el))3 ]( m2 [9 r- |$ o1 E- X: z7 ?5 f
  8344.               )
    , Z  f$ ^( x- {' c# C, w8 r
  8345.               (if (/= new_wid old_wid): u$ P$ f6 ^& v/ ~* x. F$ k
  8346.                 (setq el (subst (cons 41 new_wid) (assoc 41 el) el))8 ?! Y3 u3 }5 I! i
  8347.               )
    2 Q" w4 `/ ]. A! N
  8348.               (entmod el)
    , h( d4 D+ C! t$ y) T' x' v9 ~/ l
  8349.               (setq attr T             ; At least one Attribute modified1 J+ a7 ^1 L7 v# K7 z
  8350.                     en2  (entnext en2) ; Next Attribute
    ( ~6 t' |( x  b$ i( ^: W
  8351.               )+ A; F! l$ f% ]% A& O& n
  8352.             )6 m% T0 f- V0 t/ S4 i. d" w+ z
  8353.             (setq en2 nil)          ; No more attributes
    / a. P2 C+ I0 m3 z: S
  8354.           )- L3 B6 Z" ~3 n% \" I
  8355.         )' ^% ]& r/ |9 X9 e5 n2 [) q
  8356.       )
    + W( @5 k" e9 U" J9 {! w: V
  8357.     )& j  I/ V3 h, B; F- c+ C

  8358. 1 h6 P7 |/ ^$ W7 f
  8359.     (setq pt1 (list x1 y1 z1))
    , u6 e( `! L( H) P
  8360.     (tempmod xscale 41 nil). g; e. s( F! Q7 @3 ]/ \: E
  8361.     (tempmod yscale 42 nil)& E  V7 z7 ~! Z6 X( V) [* x# o
  8362.     (tempmod zscale 43 nil)
    : c' d" O1 }! G5 ^
  8363.     (tempmod col-sp 44 nil)% U* W' h3 R' P
  8364.     (tempmod row-sp 45 nil)1 p$ C4 o0 q* L- M% D$ R  q
  8365.     (tempmod columns 70 nil)
    : ?( ~! C/ k' m! `' R' l! M3 k
  8366.     (tempmod rows 71 nil)
    8 G$ o! W9 C" }+ P( s, V/ s' S
  8367.     (if (= xclipmode nil)
    & l) _+ R0 \' D+ {
  8368.        (entmod elist)
    $ t: d- e. `1 Y( y- }# J
  8369.        (setq xclipmode nil)& A4 n7 }  v7 ]) m8 `5 L4 I5 c/ ]
  8370.     )
    $ f; ?5 W- }" C8 q8 s" N  x
  8371.     (move_pt1 1)3 Q# Z5 Y# y7 P" _2 {1 O

  8372. $ l* |  C3 v" G$ W
  8373.     ;; Now do the rotation with the ROTATE command.
    ) a8 C4 o, ^( {. {  a! f
  8374.     (if (/= old_rot rot)
    3 ^) r8 ^( Z) a% m! c- I, \% ^
  8375.       (command "_rotate" ename "" pt1 (ai_angtos (- rot old_rot)))$ z- {1 r6 A' a2 v5 i6 e
  8376.       (if attr                          ; Else, if attributes were modified,0 g$ j# i/ B3 @0 Y' ?) E& c! ]/ A
  8377.         (entupd ename)                  ;   just regen to force attrib display' K* S7 S' L9 h8 @: i! U
  8378.       ); S6 {( ?' P. @6 W
  8379.     )( J5 o3 U3 q- K2 i, a
  8380.     (setq elist (entget ename)). d  o. _* b3 j' J2 [; |+ W# R  x
  8381.   )- h; W- O3 Z, M! q: D
  8382.   (defun ddblock (/ temp temp_xclip newhatch blkname blklist blktype program xrefpath)) ]" u, [/ L/ N
  8383.     (setq newhatch 0)
    % x* s& z# q7 x  [  z
  8384.     (setq blkname (cdr (assoc 2 elist)))' l2 C6 O" r  K' k
  8385.     (setq blklist (tblsearch "block" blkname))
    , o# i) K1 z& ?6 b# A; y8 w
  8386.     (setq blktype (cdr (assoc 70 blklist)))
    ! G) q; T4 {% J, |1 A) e7 ?
  8387.     (setq xcliponoff 0)
    0 p& }" C( ^" s0 F' s# v; I
  8388.     (if (or (= blktype 0)(= blktype 36))$ C" q5 u% o, b4 V% q$ u
  8389.             (progn
    . ]5 _, ]  {1 U8 b9 Z& B  Y
  8390.               (setq xcliponoff (xclipon elist))0 b  ?0 M# ~. m- r
  8391.           (setq temp_xclip xcliponoff)
    2 P7 v0 b' m. \0 p; b. y3 t+ o* Y
  8392.         )
    ( [. I4 w8 N  ?% W
  8393.     )
    % K! q/ }* F- y( n
  8394.     (if (= (logand blktype 4) 4), S) J$ z+ c7 u6 H5 q6 z
  8395.       (progn% t( G% D- e& f/ \' q0 T
  8396.         (setq xrefpath (cdr (assoc 1 blklist)))4 r) t, Z! i8 V6 f. h4 ^1 m
  8397.         (setq help_entry "modify_External_Reference_dialog")
    7 E( L0 J* J* p
  8398.         (if (not (new_dialog "ddxref" dcl_id)) (exit))  G% `" @& _$ R' i' D
  8399.         (set_tile "Bl_name" blkname): L3 h* J# n2 w' t, M
  8400.         (set_tile "path" xrefpath)% {4 @* ^% \. o! N) \- z
  8401.       )
    4 @- p7 r- e( p2 G( Q
  8402.       (progn
    ; h& \' q5 I3 p
  8403.         ;; Get program name for use as Xdata app name! f" B) Z3 }- C2 o
  8404.         (if (not (setq program (getvar "program")))
    # \! s4 V; u6 g
  8405.            (setq program "acad")2 A% l/ k$ X! _! z
  8406.         )
    - Y( W) N) n4 d$ ]5 t$ D
  8407.         (if (and (setq temp (assoc -3 (entget ename (list program))))
    + b7 B, R; s: u: u1 t
  8408.                  (= (cdr (assoc 1000 (cdadr temp))) "HATCH")
    0 |# V+ l# P5 ~
  8409.                  (assoc 1005 (cdadr temp))& }6 [7 Y! h3 p; }0 n
  8410.             ); W9 F! a5 z; f' {/ F" I
  8411.           (progn* [5 l5 p4 _" }6 \( B
  8412.               (setq newhatch 1)4 N  Q. d  Z2 M( {7 O9 U# o9 x0 k
  8413.               (setq help_entry  "modify_Hatch_dialog")
    % S6 ~6 f! d( ^
  8414.               ;;; convert the object into a new hatch
    9 E9 w# p% P1 w( {& b/ @/ K  J
  8415.               (ai_undo_on) ;; enable undo" k5 a% n* w7 V7 D- d5 Y
  8416.               (COMMAND "_.UNDO" "_Mark")* M' k' B1 s; E$ E% v" E6 ]8 |
  8417.               (COMMAND "_.CONVERT" "_Hatch" "_Select" (cdr (assoc -1 elist)) "")
    8 s, f7 T- E, `! q$ t( n7 W4 j
  8418.               ;;; suppress nasty message from convert command
    ! L) ?* |$ b. s8 ]. T9 Y0 E" V
  8419.               (princ "\r                                                                      \r")
    1 n9 V; ?( ~0 l/ n5 b9 I! r# w. W
  8420.               (setq elist (entget (setq ename (cdr (assoc -1 elist)))))
    4 X7 }- O; }; p3 i* q. f7 [
  8421.               (setq old-elist elist)- X3 T/ b3 v3 R" `: T
  8422.               ;;; If we have cancelled ddmodify0 v* i4 T9 h+ x
  8423.               (if (not (ddnewhatch))      ;;; (ddnewhatch) returns nil for Cancel or T for Ok
    * d0 Q2 _- R2 i% ]2 E" {
  8424.                    (command "_.UNDO" "_Back")  P+ ^. T4 X! u! b
  8425.               )+ p8 R' E' _6 t1 v9 m
  8426.               (ai_undo_off) ;; restore undo state% x" d! j+ c6 u9 ^
  8427.           )
    ; ?  M" X3 c4 }1 L/ n
  8428.           (progn2 g. w5 Q5 W% b2 C' a+ _) b: C
  8429.             (if (not (new_dialog "ddblock" dcl_id)) (exit))- |! F* [4 w# m
  8430.             (if ( = "*" (substr blkname 1 1))
    # Z! j3 C& z4 j1 a! _, L6 g
  8431.               (set_tile "Bl_name" (strcat blkname " - Anonymous block"))
    6 ^$ g  B5 ^8 i  G2 }) D1 K
  8432.               (set_tile "Bl_name" blkname), C' h2 T0 ?7 L4 a. f
  8433.             )$ E1 _& y4 I4 Q8 i6 G  \
  8434.             (setq help_entry  "modify_Block_Insertion_dialog")
    7 y8 p4 N  S+ ~% R6 k% c
  8435.           )7 h2 p! g9 D9 C& x  R2 I0 U
  8436.         )
    6 {! X- \+ u( m' s2 X" h6 N( Y0 \
  8437.       )  W# S* x1 v. E. W
  8438.     ): O% v$ z% e  h# r6 ]
  8439.     (if (= newhatch 0)
    ; G9 R3 [" c1 |1 k* x3 Q
  8440.       (progn8 c' F& U7 z  I' j. g
  8441.         (set_tile_props)3 k) y+ a5 L8 t) \* P8 B5 ]
  8442.         (set_tile_handle)
    1 ?' b+ p, K$ C" W$ v1 k
  8443.         (set_tile_pt1 1)) m8 U/ w  h/ V  `
  8444.         (set_tile_rot)
    0 m1 X, X" t) A6 I0 z* |! I
  8445.         (set_tile_scale)
    ; H" ~: X4 f6 B* \
  8446.         (set_tile_rc)8 B' ^3 ~% z8 {7 I
  8447.         (if (= (logand blktype 1) 1)- [. f. m4 c. o& S. S
  8448.           (progn
      |' k& ?' Z0 r* c3 x. q5 R' x9 J
  8449.             (mode_tile "xscale" 1)8 o- A* G2 O" F' k1 z
  8450.             (mode_tile "yscale" 1)
    ) p3 F% d; ?4 a) {" `
  8451.             (mode_tile "zscale" 1), o6 n! y, W/ g) }) b: M! f; T
  8452.             (mode_tile "rot" 1)
    ! {2 E2 m9 w) I6 G
  8453.             (mode_tile "columns" 1)
    ! y& Z& p/ h* o# T  R$ q" _  W8 o
  8454.             (mode_tile "rows" 1), A+ C0 f' `" [1 z$ k
  8455.             (mode_tile "col_sp" 1)
    5 _$ [# ~/ K& l  j- z: i
  8456.             (mode_tile "row_sp" 1)  u! |4 Z8 Z. t0 Y
  8457.           )
    ) K3 w% y. f+ `. x" p0 q
  8458.         )
    4 M7 }' A- x% s5 [6 V6 n
  8459.         ;; Define action for tiles( R7 @$ O# L# r5 K
  8460.         (set_action_tiles)
    ) [9 p6 n7 C" c2 [8 ^" h: R
  8461.         (setq dialog-state (start_dialog))8 h& ?' @; Q/ U( M6 A* a
  8462.         (cond" `: X# x' ^' S6 C: u+ C& y1 N" W0 f
  8463.            (  (eq dialog-state 0)- A! R6 ~7 V" H1 B% ]
  8464.               (setq pt1 (trans (cdr (assoc 10 old-elist)) ename 1))" q, |8 T( w" P2 m9 r
  8465.               (move_pt1 1)* F# a" [  i; e
  8466.               (reset))# ]% W( I* a. G4 Q; E& T
  8467.            (  (eq dialog-state 1)
    2 b) A# C- v2 |1 b# ^! c0 K
  8468.               (if (and (/= temp_xclip xcliponoff) (or (= blktype 0)(= blktype 36)))0 \: x6 e" d9 e* P# S: ~, I+ q" y
  8469.                 (xclip); M5 t; y0 O/ T) ?
  8470.               ). w2 v% P; Y' A0 q3 z4 W
  8471.               (modify_block))6 v3 j! q6 g# y  G9 g' p' H7 h
  8472.            (  (eq dialog-state 3)
    & O% v+ @+ J. v7 C) Z8 Y9 x
  8473.               (modify_block)
    " Y. R: C* ^& Q5 q4 I, u
  8474.               (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    ! v$ U+ N7 M7 q8 [0 z, d' }: c. F
  8475.               (move_pt1 1)
    . N$ n- N/ [2 i+ a3 w8 k
  8476.               (ddblock))
    9 Q5 G$ _& [& i
  8477.            (  (eq dialog-state 4)$ @7 X: U1 T7 w7 `
  8478.               (modify_block)& Y, ]8 y5 F% M, r. Z
  8479.               ;; Get current handle.
    / x0 w/ V( w/ D
  8480.               (setq hand (cdr (assoc 5 elist)))
    8 J/ _& `# |) a9 c
  8481.               (command "_hatchedit" ename)
    2 Z8 M! ]2 K9 e( s! s
  8482.               ;; If OK in hatchedit, a *new* entity is created and the old one
    ; L4 t/ ?# m+ r8 ^
  8483.               ;; is deleted.  So if the old one exists, it must have been a
    : Q0 k$ c! X. I; }: o
  8484.               ;; so rest the entity.
    - C+ y* `  w- a, c9 x
  8485.               (if (entget (handent hand)) (reset))
    7 m4 i$ Q  N- a/ n. P
  8486.            )
    ( z1 q" x" h9 d' m$ O
  8487.         )0 V6 A: [2 ], X" Y  F
  8488.       )
    , f# X% P) L5 R8 K+ r9 S5 e) }4 A
  8489.     )1 X0 i, a8 h4 o& {  n% O
  8490.   )( b7 P6 H# H) X7 b
  8491.   ;;
    , T: T* s- v* M, ^" D& v3 M  H' H
  8492.   ;; Modify SHAPE
    # T% x5 O; `6 L( o# x; }* m" c
  8493.   ;;
    ( v. i5 S( ^4 L( H- e
  8494.   (defun modify_shape ()
      h& I$ K, A+ y* w/ M/ m( ]
  8495.     (modify_properties)& Z/ z2 I* D* G% W% S
  8496.     (setq pt1 (list x1 y1 z1))
      D% m5 ]/ r5 X; A' K
  8497.     (tempmod pt1 10 1)
    3 u% y( B* \- a: M, k' w
  8498.     (tempmod hght 40 nil)  a( W8 r1 V* \9 ^
  8499.     (tempmod wid 41 nil)
    . I2 e- {4 f4 m6 z% H
  8500.     (tempmod rot 50 nil)
    : u8 z& m3 O) M& I# f5 B
  8501.     (tempmod obl 51 nil)
    2 T9 w% C; x5 v4 @) |2 `6 w
  8502.     (entmod elist)/ z0 Q6 j% `. L  h/ a2 F
  8503.   )9 C. o/ \, p# E
  8504. 8 Y" @5 t, j9 o$ ~% x. Y
  8505.   (defun ddshape ()
      _4 o! i: M: n3 W% U4 \! F0 u" r
  8506.     (if (not (new_dialog "ddshape" dcl_id)) (exit))7 t" n, F9 O* z  y8 C% d
  8507.     (set_tile_props)
    5 ~; l$ U4 O9 ?5 M2 i. n
  8508.     (set_tile_handle)
    % U' A# n0 ?' P- {6 ]
  8509.     (set_tile_pt1 1)% r) j) x1 C- f$ ~
  8510.     (set_tile_rot)
    * {3 w- f8 G; ]9 r. m
  8511.     (set_tile_hght)
    , b7 X  Z7 `' B4 ^/ w# z, e
  8512.     (set_tile_wid)
    4 o; ]3 |. C+ ]
  8513.     (set_tile_obl)
    " O* \3 a) Y! V- a
  8514.     (set_tile "sh_name" (cdr (assoc 2 elist))), j) H4 i+ W9 _; a" p9 ?( g
  8515.     ;; Define action for tiles
    & q' ~8 {2 o  G# _7 R* x; ^
  8516.     (set_action_tiles)( F' {/ {. t$ L  Z( A: T
  8517.     (setq dialog-state (start_dialog))
    2 T* [: B) K2 i+ z/ q8 a0 V4 F
  8518.     (if (= dialog-state 0)
      r/ L% M0 H- ^
  8519.       (reset)! ?5 |. [! N! B+ R
  8520.     )
    3 _% e; @' d4 g5 q: j# i1 e; A0 x
  8521.     (if (= dialog-state 1)
    4 j8 M. s; q& _  G0 J* ^1 u
  8522.       (modify_shape)
    / x' ]. y/ e5 A  `# \
  8523.     )
    4 A" Z4 K8 g( V
  8524.     (if (= dialog-state 3)
    $ K9 w4 }1 [- A) M: ?. Y. d- s
  8525.       (progn8 u/ h$ L5 H* `3 N" Q( g+ f/ T( O  m
  8526.         (modify_shape)) i/ C& @. R8 D4 C
  8527.         (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    ! I4 _1 r$ K% G' Y( j  q$ e
  8528.         (ver_pt1 1)
    , }5 U& l. W; Q4 ~# V2 M4 B
  8529.         (ddshape)6 L: ?" E9 c# v+ D6 A* ?* _
  8530.       )
    ' f& m$ W% G! f8 O( N' a" f3 m
  8531.     )& V2 ^, k3 R5 Q" y+ l0 t
  8532.   )5 C8 G8 y/ t6 [/ o4 b, O( R
  8533.   ;;* u7 {' d* i5 e( M0 U4 }) l. d+ H/ Q6 ^
  8534.   ;; Modify TEXT or ATTDEF
      [3 {' R- T/ n, A7 F
  8535.   ;;+ L  G3 Z9 n' |8 d# B' b4 G/ B0 \
  8536.   ;; Set bit code for upside-down and backwards setting% M4 O# P: f  `; q; d; l6 j+ F
  8537.   ;;! u! m& r1 A9 P/ R# s, |6 B
  8538.   (defun code_71 ()5 K& ^4 z6 @# L- g9 X- i0 Z" h
  8539.     (cond ((and (= bkwd "0") (= upsd "0")) 0)) @1 [- S; W6 _0 b- f  h" g. t
  8540.           ((and (= bkwd "1") (= upsd "0")) 2)
    " k- @8 a  o% Y
  8541.           ((and (= bkwd "0") (= upsd "1")) 4)
    % Y) d+ Y: b1 ~6 C2 a# j
  8542.           ((and (= bkwd "1") (= upsd "1")) 6)1 j9 R$ e& `$ g" w
  8543.     )
    3 c, X$ A# t7 `9 H
  8544.   )
    % }6 h2 m* x' V7 y
  8545.   ;;) g. ?7 e% X1 L5 |* Z  l/ \
  8546.   ;; Style action.  Reset widget values to style defaults1 m8 U9 t- J) x9 [& q- [- s9 T
  8547.   ;;
    ' s# b: H1 D& X# V: Y6 d
  8548.   (defun style_act (index / style-list)
    4 T/ B0 J: V% [8 t
  8549.     (setq style-idx (atoi index))
    ( S, O0 g$ J5 X: z
  8550.     (setq tstyle (nth style-idx slist))
    5 C! v8 A6 B; _$ M! k( f, f4 }7 W
  8551.     (setq style-idx (itoa style-idx))- {) d+ k6 N1 A% B/ I+ |% K
  8552.     (set_tile "style" style-idx): w% f/ k- D- G2 f. i5 a
  8553.     (setq style-list (tblsearch "style" tstyle))
    - u. ^2 [$ D" ?  o5 u) }) o
  8554.     (setq shght (cdr (assoc 40 style-list)))( d: p/ I& x) W" o/ P
  8555.     (if (/= shght 0); U) V& R4 j+ E5 I. I- u" X
  8556.       (progn
    # h# P5 e  i0 k2 a& [& A
  8557.         (setq hght shght)8 o0 R4 ]' T2 u! B' z. e0 s
  8558.         (set_tile "hght" (ai_rtos hght))9 ~" d' i3 z0 ?! `& z% h
  8559.       )
    0 K8 M& i  \7 g2 _& M
  8560.     )
    & [3 d5 @8 Y) g4 q6 k- R2 U9 b
  8561.     (setq wid (cdr (assoc 41 style-list)))
    3 r+ [. }! R  ]# v! ?8 K$ d, K; B6 |
  8562.     (set_tile "wid" (ai_rtos wid))7 J4 H( e6 r5 j3 T. ]9 _
  8563.     (setq obl (cdr (assoc 50 style-list)))
    6 b0 Z# i, r' h1 T% o# [
  8564.     (set_tile "obl" (ai_angtos obl))0 U8 b) f$ p4 C4 f- v8 T- p* t5 w; i/ A
  8565.     (setq bk-up (cdr (assoc 71 style-list)))  D/ @- V% {* ~
  8566.     (if (= (logand bk-up 2) 2)# r: j9 a! Z4 E- @( N! A
  8567.       (set_tile "bkwd" (itoa (setq bkwd 1)))
    $ ~- `8 `& f# l# a
  8568.       (set_tile "bkwd" (itoa (setq bkwd 0)))) }% d0 k; I& m6 G
  8569.     )
    , Y0 a$ ~: P+ v$ A3 `
  8570.     (if (= (logand bk-up 4) 4)
    ; e2 U, ]5 I! s/ z
  8571.       (set_tile "upsd" (itoa (setq upsd 1)))
    ( l% R# E5 ]: W5 S8 |# r. w
  8572.       (set_tile "upsd" (itoa (setq upsd 0)))
    1 x5 h- q" _- l/ g& t* |
  8573.     )3 m# O* Q- W8 r( E* Q8 Y- w, o
  8574.   )8 {5 V7 q& _  m, Z$ t
  8575.   ;;6 p4 d/ t; R4 a" o: J
  8576.   ;; Justification action.  Set vertical and horizontal alignment variables,
    ) n: I1 [" s2 a: e
  8577.   ;; grey out rotation and height if alignment = "aligned", grey out rotation
    + i' o: b& x4 j4 F1 t
  8578.   ;; if alignment = "fit".
    - x! w0 E6 _( _& P& y5 }8 s
  8579.   ;;, ^2 j- A0 l# e
  8580.   (defun jlist_act (index / templist)9 E( b( Z: \' j* W1 r
  8581.     (setq just-idx (atoi index))
    . _0 c4 x9 m  x. }2 [. b
  8582.     (cond; x/ I( O! a: `1 s& [
  8583.       ((= just-idx 0) (setq va 0 ha 0))
      \. R; G, R# b9 L6 C% _( w
  8584.       ((= just-idx 1) (setq va 0 ha 1))
    4 t" p$ |( i& W
  8585.       ((= just-idx 2) (setq va 0 ha 2))
    $ b. f9 n' g; P0 B* K( Z& |
  8586.       ((= just-idx 3) (setq va 0 ha 3))+ k% N$ q- y" Q) x6 ]0 r
  8587.       ((= just-idx 4) (setq va 0 ha 4))! g$ B, e" H1 u, n3 Z. b2 J* f% h. Z
  8588.       ((= just-idx 5) (setq va 0 ha 5))
    : h) U- d- C# G
  8589.       ((= just-idx 6) (setq va 3 ha 0))$ S3 X) P9 u! W# A( ]
  8590.       ((= just-idx 7) (setq va 3 ha 1))
    ) |( r- x4 `; c- j; U* A
  8591.       ((= just-idx 8) (setq va 3 ha 2))
    : G# E( A! }0 O- U
  8592.       ((= just-idx 9) (setq va 2 ha 0))
    3 f: g* g$ E% {. x" O9 k
  8593.       ((= just-idx 10) (setq va 2 ha 1))3 F0 D5 h$ [6 ]+ [
  8594.       ((= just-idx 11) (setq va 2 ha 2))
    & F( L0 J4 h' ?5 i7 f4 V
  8595.       ((= just-idx 12) (setq va 1 ha 0))
    / t6 D$ ^1 s. v
  8596.       ((= just-idx 13) (setq va 1 ha 1))
    # Q: ?  x  b6 A2 O2 R  U
  8597.       ((= just-idx 14) (setq va 1 ha 2))
    1 m* g: Q/ n) k: z* R# g0 A
  8598.     )) b  t# k; B5 A
  8599.     (if (or (= ha 3) (= ha 5))  ; If Aligned or Fit text
    3 n' s% c1 X9 v
  8600.       (mode_tile "rot" 1)( r& x; x# u9 q4 o0 D* |4 u1 {, n
  8601.       (mode_tile "rot" 0)- M; K5 Y: f: B2 |3 m' U# V1 K8 e
  8602.     )0 p: o2 ]1 ?6 Z
  8603.     (if (= ha 3)                ; If Aligned text2 B- k  k8 p5 b4 {6 i+ l. L( k; F
  8604.       (mode_tile "hght" 1)
    6 a# b( Y9 g; F6 a( X+ b  V# `  ~
  8605.       (mode_tile "hght" 0)
      L. r& w3 f7 D& @( d  _4 @
  8606.     )
    # T& H) G; Z. `  f3 h, |
  8607.     (if (= ha 5)                ; If Fit text
    % S. u" I. I( B6 H
  8608.       (mode_tile "wid" 1), _; c5 p3 k+ F4 X5 {
  8609.       (mode_tile "wid" 0)+ h: N. i5 n! s& |3 O* r4 i& d: L& j5 I
  8610.     )% q/ `* `8 D" W5 U2 w  J" \
  8611.     ;; Reset rotation and height if changing from aligned.
    ! j. w9 q9 b% G$ j$ t$ h
  8612.     (if (and (= ha-prev 3)  (/= ha 3))
    9 u1 l, P! X+ {9 S
  8613.       (progn* r. S4 ]; t+ c! J" x5 P* {
  8614.         (set_tile "rot"  (ai_angtos (setq rot 0.0)))
    ' K; M6 s; n3 E5 }
  8615.         (set_tile "hght" (ai_rtos (setq hght 1.0)))
    6 L0 N7 s9 b) j& A9 R- s
  8616.       )
    3 C2 |: S6 ?6 q. m& W: _7 n
  8617.     )
    $ e$ m4 ?4 D$ W1 R

  8618. # {, Q8 x$ ^: z) Y7 S/ y3 F
  8619.     ;; Reset rotation and width if changing from fit.
    ; B$ W2 o3 u; r6 i( m9 p
  8620.     (if (and (= ha-prev 5) (/= ha 5))
    9 i5 Y! |- u% y' ]
  8621.       (progn- I( j4 G  @! \' q' e
  8622.         (set_tile "rot" (ai_angtos (setq rot 0.0)))1 @, R0 r: x5 O: _3 a0 `+ S) V
  8623.         (set_tile "wid" (ai_rtos (setq wid 1.0)))
    % W1 n) R; y9 n0 V9 G: g
  8624.       )
    ; d8 u+ A% ?& [( S/ e5 q" p
  8625.     )% v0 M  J: J4 t6 T( J6 B

  8626. 2 ?% l9 T6 W& [4 A, [7 _& Y, U
  8627.     (setq ha-prev ha)           ; update ha-prev for next time
    + T5 n$ l6 @. W+ U  P( T
  8628.     (setq just-idx (itoa just-idx))
    2 A2 A( U# ^2 g
  8629.   )
    2 |7 e6 R" u3 _
  8630.   ;;& N+ n  K4 w" l+ s) p
  8631.   ;; Set intitial alignment setting based on vertical and horizontal alignment
    & |. K6 s: V  K9 b6 \
  8632.   ;; bit codes.
    8 H5 [, D  f; H
  8633.   ;;
    ! E! e( h* S2 l0 I8 |3 l
  8634.   (defun set_just_idx ()
    $ w% n7 \$ c: D4 G
  8635.     (cond
    4 e4 Q' E  |" e4 h* u2 @
  8636.       ((= ha 0)             ; Horiz alignment = Left( f" t. ?, w1 ~' E7 |8 g
  8637.         (cond
    ) r2 Q9 F% [6 N/ U0 n9 I
  8638.           ((= va 0) (setq just-idx "0"))
    # B. {9 G- E8 P
  8639.           ((= va 1) (setq just-idx "12"))7 j" F0 M% j" J: b
  8640.           ((= va 2) (setq just-idx "9"))( z8 k1 z5 [- S* Y3 {
  8641.           ((= va 3) (setq just-idx "6"))
    ' S7 @: m- n  I, n% X( E
  8642.         )- h3 C8 a) E2 ^: ]
  8643.       ); U: ~5 L& l; X4 H3 d  g
  8644.       ((= ha 1)             ; Horiz alignment = Center0 c5 E" \" P: R. w8 e+ B3 v9 [
  8645.         (cond% Y, f2 _* g( W  B5 E0 ]% S
  8646.           ((= va 0) (setq just-idx "1"))/ l) m# E* a) s
  8647.           ((= va 1) (setq just-idx "13"))2 }* C2 c: y% v) ?" g; J9 a
  8648.           ((= va 2) (setq just-idx "10"))2 u0 N8 W, Q% Q5 G; x
  8649.           ((= va 3) (setq just-idx "7"))# L4 s7 x/ e7 ^! g0 i6 u6 @, {" [; @
  8650.         ), |( c  Z. K2 k0 x( ]& P+ s
  8651.       )1 t  _/ G& O4 d1 T7 H) y$ U
  8652.       ((= ha 2)             ; Horiz alignment = Right
    5 j, U. P' Y% I+ X
  8653.         (cond2 ?  l& Q. H5 H; ]* F0 |
  8654.           ((= va 0) (setq just-idx "2"))0 s3 w5 T* U. j9 F9 H
  8655.           ((= va 1) (setq just-idx "14"))
    . u  l/ R* f+ D' E2 t
  8656.           ((= va 2) (setq just-idx "11"))/ q- T. K. v! [7 O2 R0 p
  8657.           ((= va 3) (setq just-idx "8"))
    ' R3 m8 Y- t+ z
  8658.         )
    3 H7 w9 G% D& I" `3 ^! C* d
  8659.       ): ?) P' J& G+ J/ k
  8660.       ((= ha 3) (setq just-idx "3"))   ; Aligned: T3 A3 }! ?3 |- e
  8661.       ((= ha 4) (setq just-idx "4"))   ; Middle( U, e+ A) S/ h4 Q) T% {
  8662.       ((= ha 5) (setq just-idx "5"))   ; Fit
    " \9 m0 L! Y! V5 s: p4 U) h
  8663.       (T (setq just-idx "0")), ]9 Z0 b, o2 |2 ^; Z/ F: _
  8664.     )
    " V( t" h1 f0 f3 U' d0 D. e5 T
  8665.     just-idx1 m$ o; Y9 [9 C( |- E* I) z2 l/ a
  8666.   ). B1 t! e% e' l& d+ R; \4 h' B
  8667. 1 t7 z8 [' j- f5 N7 s- b
  8668.   (defun modify_text ()
    + P, v+ w4 X6 a5 G
  8669.     ;;  insertion point& Y' Z2 D/ Y$ _- ~
  8670.     (setq showpt (list x1 y1 z1))+ B: {* r1 s8 @" I  S
  8671.     (setq bit-10 (trans showpt 1 ename))+ l" g, I! w, X4 z* l
  8672.     ;;  alignment point( a/ @& ?! D% h+ z
  8673.     ;;  for 'Aligned' or 'Fit', alignment point must be different
    + l+ |+ F; ]0 v, i: ~1 E/ X% g
  8674.     ;;  for all others, use insertion point- a/ r$ V2 a" `8 X2 g' e
  8675.     ;;  (ACAD will recompute insertion point)" j7 f) a& B  |. Y+ Y
  8676.     (if (or (= ha 3) (= ha 5))% T  e, o# c' `7 W7 I1 R
  8677.       (progn# Q: H7 X6 K3 o' q
  8678.         ;;  if no alignment point, fabricate one
    8 h" L# ?9 n7 b! k' {
  8679.         (if (not alipt)
    " ^, L6 s. |! S* P1 d% |
  8680.           ;;  add text width to insertion point
    * y2 j8 t4 J- t- U
  8681.           (setq alipt
    ' [" N7 x$ g1 l5 E' m
  8682.             (list (+ (car showpt) (car (cadr (textbox elist))))& B$ T5 G' m; J% S+ d
  8683.                   (cadr showpt)
    ) O" N. j: ?. V# `8 A: G, \2 S9 Y  E
  8684.                   (caddr showpt)
    # @" f9 `0 [8 M: k4 ~
  8685.             ): O! M  S! T# l/ H. J# s. x
  8686.           )
    + Z" b$ ?1 i3 K5 Q' n
  8687.         )$ g6 F' o; j% E
  8688.         (setq bit-11 (trans alipt 1 ename))
    9 x" E9 c1 j# s8 D
  8689.       )
    ( F, m. b, H5 F0 W5 ^# ~+ i9 B: Z1 K
  8690.       (setq bit-11 bit-10)
    ) D7 u# K& _6 P) L0 p0 K* i
  8691.     )
    1 t0 a/ a5 T+ L
  8692.     (modify_properties)8 B' o, p6 g3 S2 _: [+ I
  8693.     (tempmod tstyle 7 nil)$ ^+ u; A8 S' i3 t+ g
  8694.     (tempmod bit-10 10 nil)
      s" r, l4 b" M; n  d) T+ R
  8695.     (tempmod bit-11 11 nil)( f3 t4 b/ k) V7 c2 c/ A& U4 [
  8696.     (tempmod text 1 nil)1 ?. O- O) b$ g: U1 e6 z2 p
  8697.     (tempmod hght 40 nil)
    ! ^0 v' g, q- @- p: G( k, p" b( k( b
  8698.     (tempmod wid 41 nil)) Y6 i, T+ w$ R
  8699.     (tempmod rot 50 nil)9 k6 _9 q( j! x$ N" K4 l  F: _  Y
  8700.     (tempmod obl 51 nil)# l* i/ j9 [6 z: J0 g: q
  8701.     (setq bk-up (+ (* bkwd 2) (* upsd 4)))# s- C2 E. v1 J$ l1 k0 v9 |
  8702.     (tempmod bk-up 71 nil)
    1 M1 f  ~, X% t
  8703.     (tempmod ha 72 nil)
    ( p( ^3 f3 l4 B' h
  8704.     ;; Attdefs use 74, text 739 J! T& a1 C+ Z  P8 J
  8705.     (if (= etype "ATTDEF")
    6 [% f3 J1 L8 K& ?" Y
  8706.       (progn
    & c+ B' T8 I7 ]+ O6 E* |) S
  8707.         (tempmod attag 2 nil)
    1 R" _3 o3 F: X8 V
  8708.         (tempmod atprompt 3 nil)2 v  v. R4 x( t2 ~; |
  8709.         (setq icvp (+ inv (* 2 con) (* 4 vfy) (* 8 pre)))
    5 S8 O+ T6 o" e* h5 O
  8710.         (tempmod icvp 70 nil)% {1 P$ `, I8 o9 Y" P3 G
  8711.         (tempmod va 74 nil)
    + W# x+ c/ S% [
  8712.       )
    - K5 `  G' J: A. U1 n( g
  8713.       (tempmod va 73 nil)$ ]1 Z) Z$ T: l
  8714.     )
    2 X0 t6 K2 ^$ h& B% N/ ~- T/ w% _. ]
  8715.     (entmod elist)3 `& @7 i$ }' G  R( B+ _% R  q5 h" k
  8716.   )
    9 K1 q; O5 z/ ~- k9 k9 i: l
  8717. # `$ W/ r' p* R1 B( A
  8718.   (defun ddtext (/ 2ndpt slist i)
    ; S$ d% S7 X! W7 g9 Z
  8719.     (if (= etype "TEXT")
    7 O8 H5 k3 R2 X2 O$ I0 H% i4 Q7 A
  8720.       (if (not (new_dialog "ddtext" dcl_id)) (exit)), F: I% y, a, a, e% q( }
  8721.       (if (not (new_dialog "ddattdef" dcl_id)) (exit))5 h9 t3 Q) p; a$ a* P) |! c
  8722.     ); D" \9 o- r: Q; V  _" W
  8723.     (set_tile_props)
    7 X3 k* c; F! o+ s3 @% @6 s/ b: p0 m
  8724.     (set_tile_handle)
    + P5 N8 \7 Q; z- B& y( R( k
  8725.     (set_tile_text)7 ~( Y. f2 j& X( J* ?
  8726.     (set_tile_tag)
    : X7 \/ q2 |4 D  |3 v. s1 M7 T9 R
  8727.     (set_tile_prompt)- v& o# t- U0 @) G8 H. ^- C
  8728.     (set_tile_hght): s+ Z' G" f. N- E7 w& A' H. T
  8729.     (set_tile_wid)% l6 r9 n4 K# }# x% ]( |* O
  8730.     (set_tile_rot)& ?$ W9 u/ N& t8 {: ]
  8731.     (set_tile_obl)
    $ t( t4 I; p" U
  8732.     (set_tile_bk-up)
    ) f2 u* W! n/ T) ^
  8733.     (set_tile_icvp): o1 }9 P3 x8 d. Z$ `' r2 {
  8734.     (set_tile_style)
    7 \+ D6 C6 w8 l* H/ a
  8735.     (set_tile_just)
    ) S4 h2 W5 _; a9 z# X' v' u& |
  8736.     (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    # t# l) `1 f4 R, `
  8737.     (if (not (assoc 11 elist))# v3 l0 w; Z3 ^% @& v
  8738.       (progn (setq pt2 pt1)
    + `" \4 u' J& h. `3 g
  8739.         (setq elist (cons (cons '11 (cdr (assoc 10 elist))) elist ))
    ' w. `. b6 j( ?9 Y
  8740.       )! s6 K: d1 L: \; }* q- j0 f; q
  8741. ;;(trans '(0.0 0.0 0.0) ename 1))0 f: G4 [+ d% k2 h3 O
  8742.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))
    4 c2 G# c$ I2 ]8 J) Y
  8743.     )$ e) Y2 ?5 M% e( K- l' V& Y! _" {( ?
  8744.     (if (or (and (= ha 0) (= va 0))
    / q3 a4 ^0 i4 d1 K, a
  8745.             (= ha 3)+ D' H9 R9 l/ B" Q! A
  8746.             (= ha 5)3 T9 m( D9 N+ L- X: u# b" \$ C! K; K
  8747.         )
    9 ~' v3 Y- o, [# N9 f
  8748.       (setq showpt pt1)
    3 H  w7 u  r+ ?0 ]  s, I
  8749.       (setq showpt pt2)4 R, e: E7 O5 b1 D; |4 _
  8750.     )" V  }( K* y: ^% c% a& p; A6 ?- |( U# W
  8751.     (if (or (= ha 3) (= ha 5))# u6 u' V3 p7 o) \6 b$ g5 b7 B" p2 B
  8752.       (setq alipt pt2)
    $ b# N3 f* U" @0 y
  8753.       (setq alipt nil)& Q, r, t% H) G! P
  8754.     )0 m% Z4 |2 l) l3 d5 h1 I

  8755. ) w& l  ^) r# `. M" x
  8756.     (set_tile "x1_pt" (ai_rtos (setq x1 (car showpt))))9 Q& M+ @* ?" Z0 X' h
  8757.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr showpt))))% d" I- s; ]1 m4 p
  8758.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr showpt))))
    3 Q! T' @9 G: t" R: X

  8759. % ^& i" ~0 _9 d3 V) w$ }
  8760.     ;; Define action for tiles. ?4 L! F' f6 B9 u/ A* B5 {1 Q
  8761.     (set_action_tiles)
    0 u. x" `$ P5 N7 I- o* I
  8762.     ;; Set focus initially to the text edit box.& K5 ^( |, p' Y2 Z. v
  8763.     (if (not i) (progn (mode_tile "t_string" 2)(setq i 1)))( B9 X* _" ]# p$ I$ F$ N
  8764.     (setq dialog-state (start_dialog))
    ( S& \) Q( U# \/ S  l; Y( \
  8765.     (if (= dialog-state 0)+ D0 O! \& Z- T8 n+ S* W
  8766.       (reset)
      J$ ~% a. {7 t# X
  8767.     )
    , x1 [1 u* w$ D
  8768.     (if (= dialog-state 1)
    + A, H8 f8 D8 \! N
  8769.       (modify_text)
      A" ]1 u! A) e. c7 S: P) N
  8770.     )
    4 b- [, `" z1 Z- j6 A- f0 G5 L
  8771.     (if (= dialog-state 3)1 o' d0 G% s/ \. W4 [2 l# G5 V! g
  8772.       (progn$ ]" z& e- R! @
  8773.         (modify_text)
    0 s- c0 }" w- u+ s* Y
  8774.         (if (or (= ha 3) (= ha 5))
    ' n6 v- v% X% k0 E
  8775.           (progn2 I: L' R" d+ q  ^
  8776.             (setq showpt (getpoint (list x1 y1 z1) "\nFirst point: "))7 [) d! l) ?. R/ f
  8777.             (if (not showpt)
    1 Q$ N" ?7 z2 X7 W
  8778.               (setq showpt (list x1 y1 z1))
    $ _# j5 q2 X% A$ I
  8779.             )
    5 ~4 R& l! [% l% r% y! ?
  8780.             (setq 2ndpt (getpoint showpt "\nSecond point: "))
    - {7 V# o. c4 n+ J
  8781.             (if 2ndpt
    ) @  {+ a2 K# i7 e
  8782.               (progn
    / h' L  o' d# p: T4 `
  8783.                 (setq alipt 2ndpt)
    , x, o' b* r0 W! B5 J8 S5 y9 _- [
  8784.                 (tempmod showpt 10 1)( g) E% F- P; l0 z$ x7 u9 h. t$ ~
  8785.                 (tempmod alipt 11 1)  O4 j7 V+ r* n2 a/ u9 m5 u
  8786.                 (entmod elist)* e; C; Z3 N0 k! ~) b
  8787.               ): E1 ?1 ?6 t/ i# I+ L. _' q
  8788.             )
    1 Z: f3 L5 X& y' T8 f$ C& E
  8789.             (setq elist (entget ename))
    1 @0 Y7 v* x& N! ?; F% _; s4 H7 s
  8790.           )
    " L  u# R" U3 n4 p8 r6 V: @9 A
  8791.           (progn
    : |+ A0 E7 S4 W1 d( F8 q
  8792.             (setq showpt (getpoint (list x1 y1 z1) "\nInsertion point: "))
    ! T* S* W3 v( o0 y3 ?) E
  8793.             (if showpt3 X; x5 R5 u# `( ]/ n8 x& Z9 x/ T
  8794.               (progn
    % D' ~7 ?/ e4 J2 J- h
  8795.                 (if (and (= ha 0) (= va 0))9 u1 e0 K& ^4 ]3 g' L+ N
  8796.                   (tempmod showpt 10 1)
    . c* i9 i5 l4 u/ U$ B0 H
  8797.                   (tempmod showpt 11 1)
      }, D8 z# q+ ?8 E1 l+ \7 M! R9 R
  8798.                 )/ ^# x/ K9 E  e& }# t! h, G+ P
  8799.                 (entmod elist)
    ( `: Z" V# ?# c/ r. L) ?
  8800.               )
    3 B/ @2 O5 Q1 C' m+ L
  8801.               (setq showpt (list x1 y1 z1)): R% L3 W6 e! f
  8802.             )
    + i( }& d6 B# D, J: j7 {$ V
  8803.           )+ `. S: `2 ]2 o
  8804.         )# ?- q9 R$ o; w1 v4 |- E
  8805.         (ddtext)
    ! c6 W1 h) v8 H! B0 L- e
  8806.       )$ g  g' B/ l0 o4 ^; m
  8807.     )( N$ K$ z& X4 R0 r, A
  8808.   )2 n8 ~+ m" s& L7 [9 E0 P

  8809. ' M; \% R* w. u! ~
  8810.   ;;0 _- n: ^: [% x
  8811.   ;; Modify MTEXT0 q: _7 D4 E$ G' h+ q, M/ L* x) b9 n9 G
  8812.   ;;8 n5 T# A6 l6 E
  8813.   (defun modify_mtext ()
    6 u* |" c" _2 h4 E$ S
  8814.     (modify_properties)& w* @0 q) k$ S% {# r/ }7 Q
  8815.     (setq pt1 (list x1 y1 z1))/ X) ^4 N8 N& e* u  ^) ~
  8816.     (tempmod pt1 10 0)  K  z5 B" [) Q" f
  8817.     (tempmod text 1 nil)
    3 o9 Z; Z4 `/ L/ q9 r7 Q! v+ A# T4 V
  8818.     (tempmod tstyle 7 nil)* I6 n/ M$ i; Q" f! B: h& s
  8819.     (tempmod just-idx 71 nil)
    # k: m% x( P: I; a
  8820.     (cond5 F9 \8 H! b; I( V3 I6 p; Y( F5 I% a! _
  8821.       ((= dir-idx 0) (setq dir-idx 1))
    6 J- s4 j9 C7 {% w, p
  8822.       ((= dir-idx 1) (setq dir-idx 3))
    0 K$ ?- m/ U9 C4 U$ P
  8823.       ((= dir-idx 2) (setq dir-idx 5))
    $ ], B$ Z8 o1 @+ T
  8824.       (T (setq dir-idx 1))
    - J' P* Z8 I7 W) N* ^
  8825.     )( e3 n+ ?( ^2 k9 z
  8826.     (tempmod dir-idx 72 nil)3 K4 W  \/ D, k0 I/ E
  8827.     (tempmod hght 40 nil)
      `9 j% {6 a4 C# _: d: j* `: x
  8828.     (tempmod wid 41 nil)
    / J# [- U; K3 V8 L* f4 i: y
  8829.     (tempmod rot 50 nil)
    2 H# ~& n4 Z' q4 J. `0 V3 P
  8830.     (entmod elist)) W, @/ W$ @; P. f- q/ Q
  8831.   )9 u( q! ^2 C. z; r% w# m

  8832. . X1 t. |3 ~: a" y
  8833.   ;; Set MText text style& F9 z  o3 f: g9 Q7 m
  8834.   (defun MText_style (index / style-list)0 f  q; J* |3 y1 p* l
  8835.     (setq style-idx (atoi index))% A% h5 u. }$ p6 k6 d, y
  8836.     (setq tstyle (nth style-idx slist))8 n$ L: C! z4 c' M1 d" Z8 n1 x
  8837.     (setq style-idx (itoa style-idx))
    8 e% K+ A8 g* C) \* m! p2 C
  8838.     (set_tile "style" style-idx)4 o2 ^$ {( J% Q3 d" e& Q3 z7 [
  8839.     (setq style-list (tblsearch "style" tstyle))' \* a3 [: w, e3 K
  8840.     (setq shght (cdr (assoc 40 style-list)))! s) [2 q8 \% c/ ~
  8841.     (if (/= shght 0)
    & g4 s# E( o" o) R* v1 F5 k/ p' R
  8842.       (progn/ t: w4 |, K$ o8 L- S6 Q
  8843.         (setq hght shght)
    : L' B8 ]. ]' W2 @9 P4 Z. F+ N& B
  8844.         (set_tile "hght" (ai_rtos hght))* {5 G- g; B& ]) N
  8845.       )% W+ W/ \, K$ i  R0 ^- S
  8846.     )
    1 w1 t* H6 K4 P9 r
  8847.   )
    0 o/ g7 r! `3 x# H' z; M, t" @$ g5 m
  8848. $ V& f# q+ u' Z+ N. `# E
  8849.   ;; Run DDEDIT on given entity, working around possible re-entrancy9 H/ m( J& [" {8 [0 n) z
  8850.   ;; problems with MTEXTED8 n) `5 z8 Q7 P/ C
  8851.   (defun safe_ddedit (ename / orgMTextEd work)
    ; C+ [- a: S. d8 R, W+ V
  8852.     (setq orgMTextEd (getvar "MTEXTED"))* Z7 G% ~0 X8 l
  8853.     (setq work orgMTextEd)
    & A4 Y$ c! w4 F) e
  8854.     (if (= ":" (substr work 1 1))
    ! B3 @/ i. u% `. }
  8855.       (progn
    ( Y0 A* e4 }0 T8 a- I
  8856.         (while (and (< 0 (strlen work)) (/= "#" (substr work 1 1)))
    - V2 o/ s1 X; }, y! |3 {5 o
  8857.           (setq work (substr work 2))8 ]: |& r. {/ a( T: ]0 W
  8858.         )6 y% H, C$ O  `0 I1 }) L
  8859.         (if (= "#" (substr work 1 1))
    8 p& v  Q9 P6 V! y5 z+ n) e
  8860.           (setq work (substr work 2))
    3 ~% ]3 ]& Q* s! f8 j
  8861.         ); q) J! k5 q# k* n3 T2 e3 \
  8862.         (setvar "MTEXTED" work)
    & \0 t. x& w" P* ?$ d
  8863.       )
    7 E1 [+ m) Z0 w7 J
  8864.     )# Q2 s; ]8 y9 A  u9 y
  8865.     (verify_arxapp_loaded "acmted.arx") ;; make sure it's loaded...% s1 Q6 Z3 }* @0 }. J% j' l
  8866.     (command "_DDEDIT" ename "")
    5 Z2 Q0 o9 M# l1 P6 _1 L5 m) j' Y
  8867.     (setvar "MTEXTED" orgMTextEd)4 Q! S4 t; Y% b& j! E% j
  8868.   )
    2 \$ _) s2 P& _' \8 \
  8869. # ?/ k' l1 t" |, \
  8870.   ;; Verify MText object width
    . d" n" f6 h  v( p
  8871.   (defun ver_MtextWidth (value)
    6 B& l' l& Z2 O% `( a; X# \6 L) m
  8872.     (setq value (distof value))
    + B: r: l1 q, p
  8873.     (set_tile "MTextWidth" (ai_rtos value)). V% A8 f. E  g/ I* G/ o
  8874.     (set_tile "error" "")/ S! [5 C" {2 t
  8875.     (if (< value 0.0)
    4 {- H8 J) a/ J
  8876.       (set_tile "error" "Value must be zero or positive.")
    + y+ p. K/ ]0 Z# {0 u
  8877.       (setq wid value)
    ( P* Y/ E! X. x, p3 x
  8878.     )
    . Z# J8 C; m) Y7 c: k
  8879.   )* F8 q7 q9 A! L+ h
  8880. + l6 Q4 P8 x" K2 e* {/ W
  8881.   (defun ddmtext ( / gc3)3 J. J: m  }$ T9 h6 k4 Q
  8882.     ;; Get dialog4 y$ V2 j& u; A6 J" _" ]7 H, Q
  8883.     (if (not (new_dialog "ddmtext" dcl_id)) (exit))
    ' z+ n( N% T$ y6 I: w9 n- r
  8884. + K" v6 T/ d* s
  8885.     ;; Load list boxes+ k0 h* \& `0 G: w! E2 E5 o: ^) J
  8886.     (start_list "MTextJustify")
    7 i. H% i" ]8 K8 S
  8887.     (mapcar 'add_list '(
    $ O0 i' Z- c! f2 o4 e7 K
  8888.                         "Top Left"+ K7 k) L/ d; u# o6 A
  8889.                         "Top Center"
    - E! ]2 b$ |- _3 f' a
  8890.                         "Top Right"
    & I' V2 Z) ~+ a4 h: k7 b
  8891.                         "Middle Left"
    + q+ M; [- w% \; l+ f' A; }/ h
  8892.                         "Middle Center"
    % O$ Q1 G7 d+ J  L
  8893.                         "Middle Right"; {1 f  d! n7 A/ u4 z! ]0 X: b
  8894.                         "Bottom Left"
    3 |1 w6 |& y6 h1 P/ W
  8895.                         "Bottom Center"
    # e, v$ ~# f" a9 F% K
  8896.                         "Bottom Right"" `0 u$ q5 G! d" U, Q
  8897.                        )
    4 D' Y9 g( G# `, ?
  8898.     )2 |4 W0 |1 [# R+ i' L
  8899.     (end_list)
    # _: {2 y2 _( H, |, V  J% }+ A4 _$ S# J7 v
  8900. 5 F: }; i; R: N! E3 j0 I: I% z* T1 m
  8901.     (start_list "MTextDirection")5 C% O/ T* P6 T
  8902.     (mapcar 'add_list '(  n. |$ x6 U4 p0 Z( J# N8 A. `' y5 L; u
  8903.                         "Horizontal"
    / L8 J" o, l/ w: f
  8904.                         "Vertical"  k% J5 w0 Y% W6 g6 |0 J5 G) n. T5 [
  8905.                         "By Style"
    1 ~& }: e4 r2 q# m4 X; |7 C9 K
  8906.                        )
    4 a0 m* q% n4 n$ x* v9 K! d9 V
  8907.     )
    9 L+ X; {9 J4 V% V: Y2 l9 C; T2 L
  8908.     (end_list)
    ( l" V9 a$ F* P8 f; p
  8909. 4 b( C0 b, d7 b$ c
  8910.     ;; Set initial tile values( u- V# t. x3 J* b+ U0 i2 A. h& Z
  8911.     (set_tile_props)3 \3 G8 D8 x2 x. x$ |
  8912.     (set_tile_handle)
    - x6 s0 V5 r# K9 M+ i" q
  8913.     (set_tile_pt1 0)
    8 z5 c& k! x/ g+ E3 m
  8914.     (set_tile_style)1 z8 ?) ^% o, P
  8915.     (setq just-idx (cdr (assoc 71 elist)))
    / [8 E) K4 Y$ @: B- }9 f
  8916.     (set_tile "MTextJustify" (itoa (1- just-idx)))
    % S! i- t' P& E
  8917.     (setq dir-idx (cdr (assoc 72 elist)))
    " F8 e" ~  H7 x8 ]& d4 Y* n8 Y
  8918.     (cond3 L* A2 |5 V& J& P& O% Q* ~+ L
  8919.       ((= dir-idx 1) (setq dir-idx 0))
    0 G8 U, i2 G# i
  8920.       ((= dir-idx 2) (setq dir-idx 0))
    ; ?$ r6 F8 L% c
  8921.       ((= dir-idx 3) (setq dir-idx 1))
    % i3 d* h# o5 p
  8922.       ((= dir-idx 4) (setq dir-idx 1))& Y% A/ P* {) C0 W
  8923.       ((= dir-idx 5) (setq dir-idx 2))1 I: W+ _* i- H" v% K
  8924.       (T (setq dir-idx 0))( s2 K. K6 f7 g1 |, F( c
  8925.     )
    % D6 a) B; H8 }  d; M: f
  8926.     (set_tile "MTextDirection" (itoa dir-idx)): ~3 G  _* D& o9 j8 j, m
  8927.     (set_tile "MTextWidth" (ai_rtos (setq wid (cdr (assoc 41 elist)))))
    0 D1 ?+ Z) d% K# D$ n
  8928.     (set_tile_hght)5 y0 e% `4 d' U+ @
  8929.     (set_tile_rot)
    ' E7 _5 G/ G: N4 r1 O! y

  8930. 4 o4 y6 u9 x, c9 S
  8931.     ;; Set edit box, disable if too long, H% p/ W+ E3 I; Q) u
  8932.     (setq gc3 (cdr (assoc 3 elist))0 Z5 v2 n* K* j' `
  8933.           text (cdr (assoc 1 elist)))
    / Y5 @2 ]' s) v7 l3 j
  8934.     (if gc3' ?1 L. B+ c/ l$ M! C( g$ D
  8935.       (progn  ;; Text is over 250 chars, disable edit tile
    4 g! y) G" N. l0 q% b6 }+ z
  8936.         (set_tile "t_string" (strcat (substr gc3 1 25) " ..."))! G, x% O# H+ t& Z- s
  8937.         (mode_tile "t_string" 1)
    9 j5 i7 T  u% S1 R: t
  8938.       )2 @& Z6 ?+ F6 ?5 e
  8939.       (if (> (strlen text) 80)4 d$ Z# h: f4 {: p5 G
  8940.         (progn  ;; Still too big, o, @2 e) s# V4 o
  8941.           (set_tile "t_string" (strcat (substr text 1 25) " ..."))+ E; T  r5 E3 Z
  8942.           (mode_tile "t_string" 1)
    9 ?7 E. c& B3 O. j* A
  8943.         )
    5 ~7 S5 C" I: }9 }0 ?2 A+ y
  8944.         (set_tile "t_string" text)$ X3 s  k0 `) W( m& Q
  8945.       )4 h7 k' W3 `  t" V* H
  8946.     )
    8 a) r  m; x5 A0 o+ I

  8947. ' d) V  q0 r8 l0 w; ?% t8 ~  m9 Q
  8948.     ;; Define action for tiles
    * j' j# L/ }% ^! z, E) I4 L8 G6 B
  8949.     (set_action_tiles)6 u  W3 e4 l1 m: q
  8950.     (action_tile "style" "(MText_style $value)")! q8 J1 s% @+ z% H1 K
  8951.     (action_tile "MTextWidth" "(ver_MtextWidth $value)")0 M9 V2 F  ]+ H* J! a8 }9 H9 p3 D0 R
  8952.     (action_tile "MTextEdit" "(done_dialog 4)")' {. {4 _2 |4 ]) H! I
  8953.     (action_tile "MTextJustify" "(setq just-idx (1+ (atoi $value)))")2 A2 h( q" a4 Q" Y3 O" v( X
  8954.     (action_tile "MTextDirection" "(setq dir-idx (atoi $value))")
    5 A2 @: m& |8 F# S2 g

  8955. ) w0 b. W. p5 P* c4 c
  8956.     ;; Set initial focus to text edit box.
    6 E4 h! I% W4 _% z
  8957.     (mode_tile "t_string" 2)
    / h( H* U- k. t
  8958.   `. @9 J) R; W5 Y3 p  f0 L
  8959.     ;; Run the dialog
    ! l2 L( z; s* W/ |4 B2 G
  8960.     (setq dialog-state (start_dialog))8 a2 [* y) C0 _5 w. u0 m8 j
  8961.     (cond
    " u3 k% _4 N' ]( Q2 D
  8962.       ;; Cancelled - restore saved data. X- t" s* x+ A$ G# T( b% I% g
  8963.       ((= dialog-state 0) (reset))
    * A7 s1 n6 H6 d7 t
  8964.       ;; OK - save new data
    - \( X% Y4 N9 b$ w$ z& N/ u
  8965.       ((= dialog-state 1) (modify_mtext))0 [* _+ P, T$ j7 ~
  8966.       ;; Pick new insertion point
    ( C+ B; j3 k+ q6 K- T- N, Q$ w
  8967.       ((= dialog-state 3)
    ! R1 Z& a% p+ v8 }% W
  8968.         (modify_mtext); f* V6 ^, x" |% U3 S
  8969.         (setq pt1 (getpoint (list x1 y1 z1)  "\nNew Insertion Point: "))
    " }, i# c/ @! K# w2 x
  8970.         (ver_pt1 0)( o* I1 P. ]) l9 p. n5 ?, ]3 |
  8971.         (ddmtext)
    . }; R$ o  L$ D: U
  8972.       )
    $ o( z# W$ ~5 F% g  z
  8973.       ;; Run full editor
    % J, k( V- V8 R  C9 f
  8974.       ((= dialog-state 4)+ ?7 L( k! a, R+ T: t7 z# W2 D
  8975.         (modify_mtext)9 a/ m( U0 O7 @9 X; @
  8976.         (safe_ddedit ename)
    - T" Y/ b4 f2 Z* u/ ~6 A0 N
  8977.         (setq elist (entget ename))# n; c! K6 k  m9 W) }6 {
  8978.         (ddmtext)' @* Y5 T, l) o. }2 P- P5 ]( e8 i
  8979.       )# M0 E( u5 b+ }1 E2 u
  8980.       (T nil)
    ! B: N  w2 R- S8 E& s
  8981.     )/ c+ ]% {3 c$ J$ @( J
  8982.   )7 t" l- M5 y  w7 @7 R
  8983. * N" I5 t+ z. n1 u' B& r+ {/ y( O. d
  8984.   ;;
    7 s# o( x3 T/ M+ g
  8985.   ;; Modify VIEWPORT
      D+ X  _5 d8 W& G& D7 x% X1 `
  8986.   ;;9 w& x" K9 v. F# P/ F

  8987. ' G7 L% j# v0 P! q: L! @* m
  8988.   (defun ddvport ()6 \4 }" ~* C/ ]
  8989.     (if (not (new_dialog "ddvport" dcl_id)) (exit))
    # v. m9 z# B2 G. h2 Q
  8990.     (set_tile_props)- A* j1 I  q0 L
  8991.     (set_tile_handle)
      \& _# j7 }9 r8 Q( ~8 g
  8992.     (setq vpt (cdr (assoc 10 elist)))
    7 o% o6 v; a+ X2 z' X) d3 y0 \- ]
  8993.     (set_tile "xtext" (rtos (setq x1 (car vpt))))
    , Q4 ?0 s" [& D- ^! r, K
  8994.     (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    ! B$ {! @: w. P9 O0 E" ^
  8995.     (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    2 B) r% }* R  l' S
  8996.     (setq wid (cdr (assoc 40 elist)))
    0 w0 b; z( m* {8 T
  8997.     (set_tile "wid" (rtos wid))
    - w  J. k9 r6 e3 U; a; M
  8998.     (setq hght (cdr (assoc 41 elist)))2 J) O, E( Q. t0 z
  8999.     (set_tile "hght" (rtos hght))
    $ ~7 Y3 ]1 V% k
  9000.     (setq vpid (cdr (assoc 69 elist)))
    7 \8 n* ]& E4 E$ K6 W
  9001.     (set_tile "vpid" (itoa vpid))8 A! I1 u' `' B# a" e* m: d
  9002.     (setq on-off (cdr (assoc 68 elist)))
    - n3 H# S7 {% F- {
  9003.     (cond! m9 W" \0 g% j+ Q% \$ C" x
  9004.       ((= on-off 0) (set_tile "on-off" "OFF"))
    6 T* l4 C/ I! F/ N( F1 N9 r
  9005.       ((> on-off 0) (set_tile "on-off" "ON and Active")); s) J: b- G3 a
  9006.       (T (set_tile "on-off" "ON and Inactive"))1 X; S3 M, A' W: ~# D
  9007.     )8 }  ^* A% V; W0 P2 X

  9008. ' {7 A/ `9 z# u# b3 n
  9009.     ;; Define action for tiles$ E! p1 n6 v: S9 [! \) i* n9 q
  9010.     (set_action_tiles)" L0 t9 m2 Z* ~" `$ z4 e
  9011. 5 {5 I4 K9 ^9 k+ _8 T
  9012.     (setq dialog-state (start_dialog))
    - |2 Y+ s5 O; S7 A6 X$ ~
  9013.     (if (= dialog-state 0)
    - g# y9 i$ W& P& m9 r
  9014.       (reset)
    6 O$ @! b0 G. x+ j6 ]! b5 j
  9015.     )
    3 [  V. ^0 z: U4 n: G+ M
  9016.     (if (= dialog-state 1)* V. R3 R. c* G: q) x+ G
  9017.       (progn
    5 d' G2 M9 a$ ~
  9018.         (if (= ecolor   0) (setq ecolor "BYBLOCK"))
    $ K7 ~* g% W- j9 ]+ C0 _4 ]
  9019.         (if (= ecolor 256) (setq ecolor "BYLAYER"))0 l4 t# a9 w8 m; k: {5 k2 G' L
  9020.         (command "_.chprop" ename ""
    # l: u: Q8 }7 [8 o% u8 U4 W" V9 X1 d
  9021.                  "_la" elayer
    $ ^" M* }  Y, @6 ^8 D% E
  9022.                  "_c" ecolor ""3 O0 e! o" Z5 {" T# i! ?( b  }. W
  9023.         )
    0 ?( V; p; \* |% e. I
  9024.       ), f$ S8 K' ~& d: H9 `) I) ]% h9 [  @
  9025.     )
    ; k4 [( q, F( m5 I9 c' c: L. i( ]
  9026.   )
    5 q- b: V- w1 y6 b( J+ _
  9027.   ;;! S# K& Y' B% M2 d/ i
  9028.   ;; Modify POLYLINE
    9 f5 B5 F- K& ~$ i- F) z7 ~
  9029.   ;;
    7 L) T1 E, z8 }0 a5 g
  9030.   (defun modify_polyline ()
    2 g. n; J$ \8 ]" H1 u. N
  9031.     (modify_properties)9 _% f% a+ b! [
  9032.     (if (= ltgen "1")
    2 Y* _3 g1 ~! b# o9 i" E  k' M
  9033.         (if (/= (logand bit70 128) 128)
    - S" a+ ^, }6 A8 v: H" b1 O
  9034.             (setq bit70 (+ bit70 128)). }3 [$ |* z+ T1 _, `2 m+ l5 H
  9035.         )" F# C  I  x5 c* O4 f3 C
  9036.     )
    2 w. b+ j1 {" a) e5 G
  9037.     (if (= ltgen "0")2 b# N9 U: U* j7 p6 R, |
  9038.         (if (= (logand bit70 128) 128), k/ l1 Q! B5 \0 T0 f% G
  9039.             (setq bit70 (- bit70 128))
    ; ~/ |; f7 H8 T
  9040.         )
    ; p8 \  h, D/ e. S7 E) k
  9041.     )# A' F! h0 H: }1 Y- f0 R8 v5 i( C
  9042.     (setq elist (subst (cons 70 bit70) (assoc 70 elist) elist))  e' A; t8 g, }, Q# i" Y
  9043.     (entmod elist)5 J8 J* G  r; b7 u1 h% b! {( e. X
  9044.     ;; Added to take care of updating Vertex information for color' {' S7 o8 P9 X, ~
  9045.     ;; and linetype.
    : }+ z3 U( l9 r& e
  9046.     (setq save-ename ename save-elist elist)
    : n; Y2 U4 D: E6 d
  9047.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE"). S- y$ X7 Q$ U  L0 V  f
  9048.         (progn
    . L# h+ O; {9 U# C  ?
  9049.             (emod ecolor 62)
    ( A7 x- F% ~& f& D& q7 p
  9050.             (emod eltype 6)2 }8 S- q1 v/ O' b0 W7 r
  9051.             (emod eltscale 48). P/ G1 l. U' D6 S# m
  9052.             (entmod elist)
    0 A* t+ F  I( C/ k
  9053.         )
    1 l8 Z' c2 U0 N5 Z
  9054.         (progn' ]/ W0 ^8 l8 f. |( U  z, E* v
  9055.             (setq ename (entnext save-ename))* L+ H9 z/ M8 O. f2 I) x7 I: w+ ^9 }+ k
  9056.             (setq elist (entget ename))3 W; _8 Y. @. n% `. ~0 E" z$ _
  9057. 9 j8 y! i4 H6 d6 H! Q! Z
  9058.             (while (not (= (cdr (assoc 0 elist)) "SEQEND"))
    : Y5 j( d& ^; Z: h
  9059.                 (emod ecolor 62)8 d+ c, z5 w7 I% {1 m$ Z
  9060.                 (emod eltype 6)' B; p+ H2 P0 q  |
  9061.                 (emod eltscale 48)4 z# \# ~; ]! Q- K* m  a$ x
  9062.                 (entmod elist)
    ; G. e) ~: |0 X" j6 V9 ?
  9063.                 (setq ename (entnext ename))) B& s3 X0 y" p/ o5 s3 V, `; n6 i
  9064.                 (setq elist (entget ename))
    7 ~! K+ p7 k! @) \2 S% P# `; Z
  9065.             )
    " Y9 d7 L! `" K  H1 x& F
  9066.         )# F  k4 h0 m* ^- V5 d
  9067.     )
    ( U! Z7 _( {1 H  y0 y1 M
  9068.     ;; Update the SEQEND
    : v, q3 o: l8 u5 |7 H' |% u& Q
  9069.     (if (= (cdr (assoc 0 elist)) "SEQEND")
    1 d7 ~7 N0 y5 q
  9070.       (progn' C+ h- a  e$ V. f3 h8 Q% k
  9071.         (emod ecolor 62); [, E8 }. ~* X) T, I
  9072.         (emod eltype 6)
    ( z" I: Q2 O% M' N. C% L! T
  9073.         (emod eltscale 48)0 x8 j; m) r1 d' Z- E% C
  9074.         (entmod elist)( ]; E6 k" H* _8 N3 K2 y# }$ ^' v1 b
  9075.       )/ s: K, h9 i- O
  9076.     )
    $ Y3 o( A' ?  V3 t5 C. U
  9077.     ;; Go back to header.7 B9 {/ R) I! D; `/ }, \
  9078.     (setq ename save-ename elist save-elist)" g4 i5 D! U1 G! j# M
  9079. 2 `5 Z& o0 g8 O6 B2 f  W" t; k& \
  9080.     (entupd ename)
    5 \: t% u& b; o. k- R
  9081.   )) i5 h$ g7 n* Y! [( c! Y

  9082. : j% B4 x* U' y1 L
  9083.   ;; Increment vertex.  Set tile values to next vertex
    5 F. H9 g2 ?3 n. ^
  9084.   ;;5 @0 A4 @3 G2 M4 Y4 p
  9085.   (defun next_vertex (). L: }* }% A' m/ l& q2 ?
  9086.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")
    0 U- q: H6 K" G  u' p+ k
  9087.         (progn! p5 R4 b$ ~+ R2 H( I: L
  9088.             ;; If the counter reaches the number of vertices,
    3 m/ h* B. ]  g, J% @2 ^
  9089.             ;; roll it over to zero again.
    ' i' c& P5 `( r3 F+ l- s' l0 S3 P
  9090.             (if (= ctr (cdr (assoc 90 vlist)))
    & b4 f( s5 C* X: V
  9091.                 (setq ctr 0)
    7 j( z2 L5 W! {# \0 M8 Y8 v. Z1 b
  9092.             ): F: g, b* O0 d: N3 w  P2 _
  9093.                 (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))
    * O" N( h- Z) h) T, Y$ l% a
  9094.             (set_tile_vpt pointype): {( T1 s7 U) ?4 G0 a9 ~5 v- k
  9095.         )3 o. F' J. T9 t. n5 F
  9096.         (progn
    ( U' A0 b/ v$ f3 u& s9 L5 c/ [
  9097.             (setq vname (entnext vname))7 V6 N. N3 F/ u. o: M2 Z
  9098.             (setq vlist (entget vname)). F, [, n2 q) G. K# N
  9099.             (if (= (cdr (assoc 0 vlist)) "VERTEX")
    . Z0 w5 W0 f, X7 ?" ?  @# w
  9100.                 (progn, N& c' b  o2 q/ Z! W) R( m( [- Y
  9101.                     (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))- |9 U: Z  Y( ~: x  G# K
  9102.                     (set_tile_vpt pointype). }& D$ R! p: `
  9103.                 )$ S1 V& v: {5 k9 I6 k! c# }
  9104.                 (progn- S3 h  p$ N$ ^/ W5 @% F
  9105.                     (setq vname (entnext ename))
    ( o8 N% I# w# C# _
  9106.                     (setq vlist (entget vname))
    ( C' J$ U* X& G: D) B
  9107.                     (set_tile_vpt pointype)
    . V3 D0 B2 Z5 C6 x1 g! C7 ^1 x
  9108.                     (set_tile "ctr" (itoa (setq ctr 1)))
    9 g4 I7 {1 [  a5 q( A' \) ^  G
  9109.                 )+ N5 F5 D* R" Q
  9110.             )
    ; @* X2 H6 m6 ^9 n+ U
  9111.         )
      d" s9 C; k" ?' Q( k5 W
  9112.     ), G: u5 u) x) L- M' T8 _+ w. e
  9113.   ): j) j6 ]' X" W8 H5 ~
  9114. & o/ f# o$ j4 [1 Q$ m& ^
  9115.   (defun ddpline (/ oldecho)/ }  e2 K; m- Z9 k
  9116.     (if (not (new_dialog "ddpline" dcl_id)) (exit))2 B) Z( [6 ]7 m4 Y% F* g
  9117.     (set_tile_props)# S. @4 [. c; J/ Y
  9118.     (set_tile_handle)
    , j1 }9 |0 ^  F' S* u4 d: r
  9119.     (setq bit70 (cdr (assoc 70 elist)))
    $ ?, m" n0 S1 Z+ i7 m
  9120.     (setq bit75 (cdr (assoc 75 elist)))
    . B% t7 X0 R# f* B/ |
  9121.     (cond
    * F- T' j% T9 p. Y- g4 f2 i
  9122.       ((= (logand bit70 8) 8)   ; 3DPOLY$ O9 T9 U4 d  Y; D* ~
  9123.         (set_tile "ptype" (setq pltype "3D polyline"))
    + `2 |  V" Y- ?  _
  9124.         (setq pointype 0)       ; WCS or ECS point values
    / G9 |+ u  G( x# k
  9125.         (mode_tile "fit" 1)) U+ Z0 e0 f) ^* }7 _# s, G
  9126.         (mode_tile "mesh" 1)) U, [: Q: A! A
  9127.         (mode_tile "bezier" 1)6 X/ \8 J3 U" D
  9128.         (mode_tile "ltgen" 1)
    8 ~0 B) d- s$ f, M' x6 M. ~7 W* u0 U7 K. v
  9129.         (set_tile "none" "1")
    5 q; P9 c$ u0 b1 g; U3 Q& q( f
  9130.         (set_tile_closed)
    - x5 q8 e3 M( X# q# u3 v% T
  9131.         (set_tile_fitsmooth)
    8 ^* w( M5 v' P. U& ]' ^
  9132.       )
      _2 x6 Z' j! H  P
  9133.       ((= (logand bit70 16) 16) ; 3DMESH
    # o8 g  T# W( v5 n7 y; g
  9134.         (set_tile "ptype" (setq pltype "3D mesh"))
    0 h7 H3 v9 g- t, \
  9135.         (setq pointype 0)2 u9 \- L$ a, I  u9 B( Z
  9136.         (mode_tile "pline" 1)
    1 Y3 h6 ?$ U0 b) Z( [
  9137.         (mode_tile "fit" 1)
    " ^# M* d( u* m& O" [( f- Z; a5 F- y. {
  9138.         (mode_tile "ltgen" 1)6 G+ e0 r4 n: n$ ~3 m
  9139.         (setq m (1- (cdr (assoc 71 elist))))
    & A- ], y; G1 t5 D& h7 c
  9140.         (setq n (1-(cdr (assoc 72 elist))))
    4 m5 _: J3 N- N: @( F
  9141.         (setq u (1- (cdr (assoc 73 elist))))
    # t) C* k9 z( `- Z
  9142.         (if (< u 0) (setq u 0))
    9 ?" ?: ]9 A2 H# s
  9143.         (setq v (1- (cdr (assoc 74 elist))))
    - B( Y. A* w2 U$ {  d4 x* a0 R
  9144.         (if (< v 0) (setq v 0))
    4 M9 y( v: O7 {2 v' I* a% o1 E* m
  9145.         (set_tile "m" (itoa m))- X2 o( c1 |" L: m5 f$ g
  9146.         (set_tile "n" (itoa n))' f$ d- D9 Z! u" ^" q  a
  9147.         (set_tile "u" (itoa u))
    . C" C7 [4 j0 W" w
  9148.         (set_tile "v" (itoa v))
    8 h6 W; t+ f3 P* ^6 g
  9149.         (set_tile_closed)5 E, }- t# ?( n7 @
  9150.         (set_tile_fitsmooth)
    % ^& W5 B1 G' A2 b
  9151.       )& R9 q4 k2 b" K
  9152.       ((= (logand bit70 64) 64) ; POLYFACE MESH
    ' J& a6 ^7 v% _' V
  9153.         (set_tile "ptype" (setq pltype "Polyface mesh"))
    4 Y6 ]6 n8 h1 c+ q1 ^
  9154.         (setq pointype 0)
    , M! ^+ X  ]2 h( f1 o4 E
  9155.         (mode_tile "f-s" 1)
    - M2 G) d5 T6 i4 N; g* g' i/ x
  9156.         (mode_tile "mesh" 1)
    * `) }; X" [. E4 h
  9157.         (mode_tile "pline" 1)
    ; y2 X: }! e8 }# F8 M
  9158.       )
    ; n$ V4 ]* `, N6 d% W; H
  9159.       (T                        ; 2D POLYLINE3 G- X( E7 e0 p1 ]2 `
  9160.         (set_tile "ptype" (setq pltype "2D polyline"))- ]! f8 p8 K) h. ]' l
  9161.         (setq pointype 1)
    * R6 W4 O, d6 T' z6 q
  9162.         (mode_tile "bezier" 1)0 y8 {1 k1 m( {! V1 P
  9163.         (mode_tile "mesh" 1)* g3 \) F' A. r, q4 i: q* Y6 P
  9164.         (if (= (logand bit70 128) 128)
    . N* b! N: U/ U
  9165.             (set_tile "ltgen" (setq ltgen "1"))
      ^5 P& U* F6 W4 s/ I  j9 M- ]
  9166.         )
    1 Z3 ?5 E! P  e
  9167.         (set_tile_closed)% s- r8 q8 e9 K' L4 P
  9168.         (set_tile_fitsmooth)8 R5 }. }( A# R4 N6 y- i
  9169.       )- m. |# T- t. b$ e; D
  9170.     )' t9 D4 g8 O- Y+ v. b' x
  9171. ; k7 f; K$ G, h; F6 D, S
  9172.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")" V) I9 ~7 d4 L/ L8 F
  9173.         (progn
    8 J2 c/ c* m1 I0 @. W2 R  h7 N
  9174.             (if (not next) (setq vname ename))
    3 _7 H0 z! h% v9 y3 c6 [: S
  9175.             (setq next T)* [& O( y7 |8 D5 g: m
  9176.             (set_tile "ctr" (itoa (setq ctr 1)))/ s+ u' S5 m1 S: ~, x3 I
  9177.             (setq vlist (entget ename))
    ; X; A0 r* r1 L: a8 o8 B( `
  9178.         )3 [* D; S4 H- k1 v9 M+ H1 D, i
  9179.         (progn
    ' U5 Q4 p3 e) ~2 p
  9180.             (if (not next) (setq vname (entnext ename)))" @; Y, b. a2 [
  9181.             (setq next T)
    9 o; x" n4 t0 \3 i
  9182.             (set_tile "ctr" (itoa (setq ctr 1)))
    0 O2 u6 _! C( a% v" W8 k
  9183.             (setq vlist (entget vname))
    8 {" j" ~! R. D& f$ h/ C/ s
  9184.         )
    + D# J+ L# B* ^- S7 b/ k
  9185.     ). V+ E# W! O, @6 E- s& ?
  9186.     (set_tile_vpt pointype)
    - @$ D3 _5 z$ N7 O! H
  9187.     ;; Define action for tiles3 `3 w6 ~, O; O6 Y* m! I+ X
  9188.     (set_action_tiles)# x9 u: p2 E3 O$ j! N- y) Z; V
  9189.     (setq dialog-state (start_dialog)), g( J( \. c: m6 C) ~

  9190. $ e$ \8 T, W, N( B0 I! Z' g
  9191.     (if (= dialog-state 0). k. d' [1 I$ Y/ N" a) r( V
  9192.       (reset)( Y6 T+ W! E; b' x, A" `0 h
  9193.     )
    : K" b$ G4 A" ?$ d5 L  P# s8 ^
  9194.     (if (= dialog-state 1)
    0 i: A/ b$ i, h- S0 A9 A4 s0 B
  9195.       (progn! c- z3 F2 ?1 [4 B
  9196.         (modify_polyline). ~5 t3 Q/ H6 Y: |+ z5 A
  9197.         (if (or (= pltype "2D polyline")
    8 L( R* W7 z# \: F/ d9 Y
  9198.                 (= pltype "3D polyline")
    9 T1 J0 U9 g4 p* Q0 L
  9199.             )+ W  V$ f% [* |- r
  9200.           (progn
    ( o- h8 i( W# q
  9201.             (command "_.pedit" ename)) J6 C+ R, s8 h1 O8 X
  9202.             (if (= spltype 0) (command "_d"))
    7 V! Z+ y, o$ ?* b$ l
  9203.             (if (= spltype 1) (command "_f"))
    $ _+ V  V1 e+ X+ M9 v0 k
  9204.             (if (or (= spltype 5)$ P4 t  }; ?0 M% m$ O& F
  9205.                     (= spltype 6)
    # O1 s7 j" @1 ?( R( F  c
  9206.                 )
    9 q- @* x: ^" U( d+ y3 @
  9207.               (progn- x: j5 A$ l- O; K, b/ \% Z
  9208.                 (setvar "splinetype" spltype)
    ( v& I2 ~& z, l; b9 h# X
  9209.                 (command "_s")0 I% z+ }3 r7 G) H4 x) m
  9210.               )
    7 W* u- T/ }3 e) w) a
  9211.             ). N4 U; Y6 y% F( t/ O8 A8 Z( Q
  9212.             (if (= closed "0")
    ! L% {+ L; f7 ~, {, l% h! ~1 `
  9213.               (command "_o")4 [* K: L; x% q+ S% e8 _
  9214.               (command "_c")$ N2 I: U1 u6 q+ S; \" g3 _
  9215.             )
    % V6 q, ?( Z( ~9 \" g; {1 Q
  9216.             (command "")
    , D! [* e. h7 Q$ P  X
  9217. , \0 B3 r( D4 l2 L6 j' q! N( L
  9218.             (if (= spltype 0)
    ! L: v1 W/ [$ e0 |+ a$ y0 p8 _
  9219.                 (progn/ o6 u1 a( G7 B/ G
  9220.                     (setq oldecho (getvar "cmdecho"))
    1 E+ G- A0 B8 [4 a1 |7 t- r3 N
  9221.                     (command "_cmdecho" 0), y# b$ W8 q6 N' ~
  9222.                     (command "_convertpoly" "_light" ename "")2 v4 D# O" N) s2 \9 z8 c
  9223.                     (command "_cmdecho" oldecho)/ Z1 q! ~) @& f$ P, ^
  9224.                 )) {9 i3 ~; d5 t  b# i# R3 V
  9225.             )$ v0 ~7 y% p2 g1 {" x, R
  9226.           ). {( q+ x) O) Z' C9 ?
  9227.         )3 O4 r: [" W0 w( t% j" `+ G/ q% b
  9228.         (if (= pltype "3D mesh"); O4 ^0 g1 J. w( K* o9 `  {9 b7 _
  9229.           (progn6 b$ u. ?" q0 ~& f
  9230.             (command "_.pedit" ename)& E; j' j2 l" K$ r
  9231.             (if (= spltype 0) (command "_d"))
    ! _! e; }, k0 m- J6 _) m" z6 g8 I
  9232.             (if (or (= spltype 5)
    & h0 r% f! Q3 Q
  9233.                     (= spltype 6)
    $ S4 f9 [! }) ^6 {& Y/ @' Z8 T
  9234.                     (= spltype 8)
    ! K7 H3 K& E6 K+ Q4 p/ H
  9235.                 ); l! [3 X1 j- @9 [0 V+ I+ n, t
  9236.               (progn! L4 u8 a& g9 H1 ^5 v, V" {3 B
  9237.                 (setvar "surftype" spltype), ]7 W8 N3 k  Y( |
  9238.                 (setvar "surfu" u)+ P3 |4 B3 G2 A# e6 {) Z% |' L
  9239.                 (setvar "surfv" v)
    # v7 c5 m2 n0 q. K  k8 e+ Y# C
  9240.                 (command "_s"): M: j6 q' e" L6 R. I
  9241.               )
    7 H+ F4 m+ Q5 L3 ]' ^/ N
  9242.             )  v# v/ M; h! d' l) r
  9243.             (if (/= closedm old-closedm)  L2 J! E, C; `
  9244.               (command "_m")
    ( ^" b) r2 e+ u2 Y$ y
  9245.             )
    . Y/ `9 c2 t$ R6 L* Q) [3 U
  9246.             (if (/= closedn old-closedn)! ?# c# H, W0 V4 f
  9247.               (command "_n")
    ! M9 |5 O  d+ Y
  9248.             )( ~$ U; b+ n5 s* }3 A+ l/ W: P+ P
  9249.             (command "")4 t5 k3 j7 L. p$ x) `* `
  9250.           ): @. x1 T/ o& N4 b7 {' I7 U. F
  9251.         )  G3 `! \5 q! d) j: J
  9252.       )5 A4 Z% q2 F( o3 w
  9253.     ), ]1 I5 a% f# C- h9 F! b
  9254.   ). F; M# z0 f+ W2 P2 Y
  9255.   ;;
    ; p2 k) q3 z6 P/ y
  9256.   ;; All the spline data is contained in a single elist. We must do some
    5 W5 [9 ^1 X6 a3 z/ t9 T
  9257.   ;; tricky list processing to loop through the elist in order to display3 i0 z" K  x  z% F  n
  9258.   ;; all of the control points.
    3 Q& A! _$ K4 J, |$ f# i
  9259.   ;;
    : j  p( R/ M. F) V/ y1 s8 W
  9260.   ;; The structure of the elist is different for rational and non-rational
    - [  [; V% Q2 i  x# ?. `( M  d: m
  9261.   ;; splines. Therefore, we check the rational spline flag.; E2 Q3 s8 t- ?- M7 f- {$ D8 O
  9262.   ;;
    1 E: p% {' k6 Z- l/ Z! Q" U" M
  9263.   (defun next_cntl_pt ()( p  B9 w, C& l: O' d. ~$ ?
  9264.     (setq elem-no 0)               ;; elem-no = element counter
    + [' O6 K3 o* {! Z" G% H
  9265.     (if (= first-10-time 1)        ;; If first time, find location of first
    0 B  r6 ?+ B( j- Y( T
  9266.         (foreach list_item elist   ;; cntl point element in elist' S) |3 N5 _& A7 H7 V$ u
  9267.            (progn4 `. u6 T. Z# }# J4 q; {
  9268.                (setq elem-no (+ 1 elem-no))
    0 Z: ^" i0 K) q# n
  9269.                (if (= (car list_item) 10)% T% s3 f9 f/ s( g
  9270.                    (progn, M0 Z/ E6 W7 Z/ k
  9271.                        (if (= first-10-time 1)% p( W* Y, y* m; s
  9272.                            (progn
      k' s1 K8 u7 M4 e) {" j
  9273.                               (setq first-10-rec (- elem-no 1)), f: t2 I$ U& D' g& U) ?
  9274.                               (setq first-10-time 0)5 v: [' g( B+ x1 b6 b
  9275.                               (if (= rational_spl_flag 1) ;; if rational+ A: _  o# ?4 V' M- B' }
  9276.                                   (setq cur-10-rec (+ elem-no 1))
    - I% @( ?1 Z* Y! h7 S
  9277.                                   (setq cur-10-rec elem-no)) _" v! t: o* T" d; i
  9278.                               )$ ]( R1 x- w! F9 J
  9279.                            ). E6 D+ ]" C& B6 l3 F% k3 j
  9280.                        )
    2 p! K  N! Y/ P, r
  9281.                    )
    3 p6 z/ A* \  U" r6 j
  9282.                )' }  ^: k5 o+ J) a
  9283.            )
    9 p/ O! @" j: `* b9 s# |
  9284.         ); u7 Z2 J+ m) R. t' O6 M
  9285.     )
    4 o8 n5 Q( Y& \* d8 b( s$ c" Q
  9286.     ;; Now we know the location of the first "10" record; it's stored) J+ B$ J' W2 }7 g7 c$ Q
  9287.     ;; in first-10-rec. The first 10 record was already displayed when. V: I# |; B4 t1 q3 N& j- e. R* I6 h1 W
  9288.     ;; the dialog first came up so let's display the second one when
    ) t$ c- `" C: C3 v" p" [' g
  9289.     ;; the user presses the "next" button (the first time through).0 l) N' J! @, n$ v# \1 g9 s1 a
  9290.     ;;
    9 x6 y. r( f5 N- e
  9291.     (setq temprec (nth cur-10-rec elist))
    + V% {* ]. `6 P8 e4 s- m3 v6 b- o
  9292.     ;;) ?9 m7 T# f0 r! j- z7 W4 h
  9293.     (if (= (car temprec) 10)   ;; if 10 record
    ) t2 m' z" H2 ]! f
  9294.       (progn
    , ]7 P+ v% c' B
  9295.         (if (= rational_spl_flag 1)    ;; if rational spline7 A" p3 d5 r( o3 T
  9296.           (progn6 k! M. I( i) {
  9297.             (setq tempweight (nth (+ cur-10-rec 1) elist))
    3 H: K0 p1 L) x3 Q/ k2 F
  9298.             (setq cur-10-rec (+ 2 cur-10-rec)): q" q( q& Z. i7 Y
  9299.           )3 l* `" \1 F3 A1 _6 b9 b
  9300.           (progn                       ;; else. k0 o( V" |2 t" |
  9301.             (setq cur-10-rec (+ 1 cur-10-rec))
    3 o4 o! n( A5 ~! P$ p8 y) ~* ]
  9302.           )8 Y7 D2 E1 n" t, {( P& Y
  9303.         ); }6 a. m* x0 a, }1 g) c
  9304.       )                                ;; end if rational spline7 A3 T! U! ]6 i. E+ v0 {
  9305.       (progn                   ;; else reset counters( y4 q$ T1 U' L" Y/ l+ {
  9306.         (setq temprec (nth first-10-rec elist))  ;; get 1st 10 rec" p8 F) s8 y5 f3 x& X
  9307.         (setq tempweight (nth (+ first-10-rec 1) elist))! a, Y" Q1 a8 p. C5 m( G
  9308.         (setq cntl-pt-indicator 0)9 O7 {) }, c3 m5 o% \/ M6 ~
  9309.         (if (= rational_spl_flag 1)             ;; if rational
    " K3 u( w+ ^4 M0 T+ j; z
  9310.             (setq cur-10-rec (+ first-10-rec 2)) ;; point to 2nd 10 rec
    9 B, o. Y  _, Q! B7 F
  9311.             (setq cur-10-rec (+ first-10-rec 1)) ;; point to 2nd 10 rec
    - n+ m3 Z& l! M. O4 J5 \
  9312.         )- c/ s9 s7 Y) `  ]
  9313.       )9 l, H: J1 A, o( q
  9314.     )                          ;; end if 10 record. S# m: \- V- ^, o1 [7 U
  9315. 6 U0 J+ c; i0 P4 S* d1 s$ w! h
  9316.     ;; Display cntl point, weight and ctr. Increment ctr.
    / h7 g3 t7 Q0 j& b- O+ ~
  9317.     (setq cntl-pt (cdr temprec))
    / [. {4 U/ d1 `2 }
  9318.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    ' R5 l. y$ m) b6 u! x/ n+ e6 v. q4 v
  9319.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))2 @% f8 F: }: ^8 Y; m# i7 |! C
  9320.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))& ^. S2 A; \& l8 O, k1 t
  9321.     (setq cntl-pt-indicator (+ 1 cntl-pt-indicator))" J+ t) K  b2 p2 |0 x
  9322.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))3 c. @& q/ b  q- k" A& S
  9323.     (if (= rational_spl_flag 1)                     ;; if rational
    6 |( o8 S* T3 Y
  9324.         (set_tile "weight" (rtos (cdr tempweight))) ;; disp wght& u- u/ Q5 N  p5 j8 q8 ?. d
  9325.         (mode_tile "weight_text" 1)                 ;; disable wght3 s! @! F8 z" x
  9326.     )
    $ s  A( I5 E+ E# q
  9327.   )
    $ |7 c6 s7 N% Y2 l3 H' G+ X% k3 a
  9328.   ;;
    $ i- u2 x( B" u* x- Q  A
  9329.   ;; All the spline info is contained in a single elist. We must do some+ j" I, K! ]* M& H5 a
  9330.   ;; tricky list processing to loop through the elist in order to display# }- P: u2 i; p$ U  Z9 W
  9331.   ;; all of the user data points.
    5 {9 K, t% W# u& p
  9332.   ;;0 S9 Z; _* h% _' J: r- L
  9333.   (defun next_data_pt ()
    / {/ S' d* L# \" |2 Z
  9334.     (setq elem-no 0)               ;; elem-no = element counter$ c6 {9 @. m3 K0 |2 ?- v
  9335.     (if (= first-11-time 1)        ;; If first time, find location of first, c" ?" B- B7 I
  9336.         (foreach list_item elist   ;; data point element in elist# _! f$ u0 w) R& }, f' G
  9337.            (progn9 V. K: x  i4 a+ ?  b% z+ \3 O# B
  9338.                (setq elem-no (+ 1 elem-no))
    : R# z# U, C$ e# o5 ]2 }' f8 i
  9339.                (if (= (car list_item) 11)  ^" U8 S. }' x
  9340.                    (progn
    : o: p; _, L* r7 M  N, {  _
  9341.                        (if (= first-11-time 1)
    2 d4 O  f, Y7 }* T
  9342.                            (progn) v4 U$ e5 f, s( _: t" V1 d+ F
  9343.                               (setq first-11-rec (- elem-no 1))
    : x/ e2 f& c2 z1 k1 J; G# j
  9344.                               (setq cur-11-rec elem-no)
    0 u& R+ m3 L. V1 F) {
  9345.                               (setq first-11-time 0), K' E, e* F$ F
  9346.                            )8 U# t/ h+ e" Z$ X% |! F3 Z  ]; v
  9347.                        ); T* Y, S. E7 s& I9 v1 {' W
  9348.                    )
    ' A# v0 g# M  N0 d: w/ j" ^
  9349.                )
    8 r+ A0 s( Q7 e' I+ y
  9350.            )% R7 N9 x& l4 E
  9351.         )
    8 F# F; c3 W1 W1 l& h! D0 ]; x
  9352.     ), m9 j1 ]4 i! V  D
  9353.     (setq temprec (nth cur-11-rec elist))
    * d) R6 b2 b9 G
  9354.     ;; If it's not a DXF "11" element then we've gone past the last
    6 D% D2 k; H7 e% v! ^, w( r( \
  9355.     ;; "11" element. Go back to first "11" element. Reset counters., ]: J, H# I* a: ?7 M! r! H
  9356.     (if (= (car temprec) 11)
    ! ~% @: O0 p- R5 `% b% O; T
  9357.         (setq data-pt (cdr temprec))
    * O+ n, M# Y8 ~7 D6 U$ L
  9358.         (progn                           ;; else3 R; D( n  q6 C! q1 x& A
  9359.            (setq data-pt (cdr (nth first-11-rec elist)))
    ( I# Z2 \; a7 d, o$ i- ~
  9360.            (setq cur-11-rec first-11-rec)
    ; B+ z8 k) o6 S7 V' l/ c* u
  9361.            (setq data-pt-indicator 0)
    7 J% J" b* _& @( Z
  9362.         )
    5 I$ a( C) U0 P! ?( b8 x( B
  9363.     )+ D. ^- s  ]% G$ b
  9364.     ;; Display data point and ctr. Increment counters.
    ; h$ s' G/ T6 G6 v
  9365.     (set_tile "dxtext" (rtos (setq x1 (car data-pt))))
    ' v- f# c2 y( X. a* T) N8 }
  9366.     (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))5 G/ Z! a8 R$ N( ~' n6 L! c
  9367.     (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))
    % i- |( G3 B5 ?2 s/ p0 ~( ~8 _
  9368.     (setq data-pt-indicator (+ 1 data-pt-indicator))
      ~4 x9 o7 M/ G' R6 _& z
  9369.     (set_tile "data_ctr" (itoa data-pt-indicator)); {# H4 U6 d% z: ]
  9370.     (setq cur-11-rec (+ 1 cur-11-rec))/ ^9 N, x0 u" w9 J" G
  9371.   ); A0 v& e5 x; O# g% x# S9 c
  9372.   ;;
    0 p1 a# r0 ^( {# {# P' l+ x1 U
  9373.   ;; Modify SPLINE
    1 R1 T" x2 K$ b6 Y& M
  9374.   ;;
    0 T8 G1 E5 k; W3 j; _
  9375.   (defun modify_spline ()
    ' A3 I. c  b4 g! k
  9376.     (modify_prop_geom)
    . o) ]- {1 n; G/ R( t$ o0 ~! p
  9377.     (entmod elist)$ M* t' I; B4 N2 Z  G+ \" s4 }# V# D' R
  9378.   )# @7 j. ~4 H% ?# G4 E
  9379. 8 t9 Y5 h6 |4 J# u, }* P
  9380.   (defun ddspline ()
    7 E  w( N9 H* X& {1 ~1 R6 }
  9381.     (if (not (new_dialog "ddspline" dcl_id)) (exit))1 i+ a( ~4 g4 Q2 C# n" z' M% q; G0 `
  9382.     (set_tile_props)
    0 f5 J3 S" w" K( ^
  9383.     (set_tile_handle)
    $ Z" H/ l# {: ?5 }
  9384.     (set_tile_spline_props): t7 m3 }: E2 A& Q* \! F
  9385.     ;; Display first control point! V# ~  T3 b8 i
  9386.     (set_tile_cntl_pt)9 G. S, ~. U4 D  ]: d0 O
  9387.     ;; Display first data point+ u1 S# r7 I* @" k& m# o/ m
  9388.     (set_tile_data_pt)6 L  w4 y: s! [5 h- i! l, g
  9389. 7 |. a1 k' ?% y3 f; F, |, C( @- j
  9390.     ;; Initialize flags to indicate first time through the dialog.( W0 `4 l! o/ d/ T+ i/ M
  9391.     ;; For control points and user data points the "next" buttons
    7 y* L( e& D& ^* v( y
  9392.     ;; in the dialog call the appropriate functions.
    ) L1 E4 w9 J& B( T# p& t
  9393.     (setq first-10-time 1)
    6 L, _* n7 H1 y6 m8 h3 X
  9394.     (setq first-11-time 1)) `  D: y/ {: |+ v2 G: w! j' k
  9395.     ;; initialize control point number counter
    3 N# u2 R2 y1 R
  9396.     (setq cntl-pt-indicator 1)
    , X! O) u0 k2 `2 o& ~
  9397.     (setq data-pt-indicator 1)
    & u% C0 w( K  e  C0 H
  9398.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))
      I: p% |) \- }5 k2 b( W$ F
  9399.     (set_tile "data_ctr" (itoa data-pt-indicator))
    # P& Q3 ^$ \& |+ i5 D; U5 {
  9400.     (set_action_tiles)/ j' \; _+ i; k
  9401.     (setq dialog-state (start_dialog))
    . Z/ i3 v  O& S# m6 L& e$ E
  9402. ) D! b8 o0 k  u' \  E' f, I9 f
  9403.     (if (= dialog-state 0)5 \3 m3 {! r) Y: ^3 f  C+ ~% G
  9404.       (reset)
    9 s' b% z4 m, T/ u- I5 w; R; ?
  9405.     )$ l1 J$ I; n$ L7 J
  9406.     (if (= dialog-state 1)1 _# O+ b% P( f  H5 C
  9407.       (modify_spline)
    % s. U) }! r5 G
  9408.     )
    * ?) V3 B/ ~& X7 k9 d
  9409.   )
    9 A( b, X5 g, A% `- l

  9410. 3 [. i+ |. F, Q0 l/ }
  9411.   ;;
    " I& I2 t1 _7 p: v( D, N
  9412.   ;; Modify DIMENSION
    & j% h; Z+ W) |/ D! L+ @
  9413.   ;;
    4 J$ d' n7 p6 m3 R6 S
  9414.   (defun ddimen (/ dtypebit blkname bename sublist a stname n dimtbl
      f, S8 ~# W/ f. H! p) s# k
  9415.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist7 F& |3 }* X$ C& c
  9416.                    dimtype dimsvcurset)+ w/ F% v9 O/ L: Z
  9417.    (setq dimtype "DDIMEN") q, [3 v( x' G! g* C/ N
  9418.           dimsvcurset (ddimen_dimsty_restore)2 R9 `$ T: e3 d. I
  9419.     )
    9 r/ {+ M0 s4 M; b' G
  9420.     (if (not (new_dialog "ddimen" dcl_id)) (exit))9 J3 f  D" F0 s, U, E$ M; f
  9421.     (set_tile_props). _/ P1 w7 r3 ~& [$ L
  9422.     (set_dimen_props)- d2 x2 P# O9 j' w
  9423.     (setq dimtext (cdr (assoc 1 elist)))" i3 i% c$ z3 D5 r8 r. C3 \7 Z$ y
  9424.     (set_tile "t_string" (if (= "" dimtext) "<>" dimtext))0 |* ~! B" y1 W0 \+ J
  9425.     (set_tile_handle)
    : m* {# X, I. i, Q: I. `
  9426.     ;; Define action for tiles
    7 C/ n% [5 B4 Z% i0 A  H
  9427.     (set_action_tiles)
      z" n( b# O- M$ o: m
  9428. : F9 L* u' _" I0 v% B' k4 f
  9429.     ;; Set initial focus to text edit box.
    6 G7 k! q; Z( V, o+ b8 N
  9430.     (mode_tile "t_string" 2)' x& I0 |4 {. i& @

  9431. ; l9 K* x; n" c- E$ Z
  9432.     (setq dialog-state (start_dialog))
    ! R- I1 X' J. i, ?/ ?8 k
  9433.     (if (= dialog-state 0)
    + ~, w; R8 l; n) e
  9434.       (if (= ddimmt 1)3 b# e6 R& n# h$ ^& O
  9435.         (reset)/ P8 }% j: P% V: ?6 r
  9436.       )7 V2 k/ f, A' u- m( t: G! m( F% t( Y
  9437.     )
    * p; \: x. P7 e( N* ]+ g& u
  9438.     (if (= dialog-state 1)7 H) K5 [! [% P0 l, O  \1 J
  9439.       (progn
    & E; k5 N1 H4 _" W' O
  9440.         (if (/= dimsty stname)5 o7 l( q& M, j! B" r
  9441.           (progn9 r5 N% L8 V  H/ ^9 B  v
  9442.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    & X4 N3 I8 q5 C5 l/ M
  9443.             ; doesn't have it.
    + ?' _( G6 k& \  N: Z/ h* Y
  9444.             (if (null (assoc 3 elist))% m5 F% n# v. V) c7 o
  9445.               (setq elist (append elist (list (cons 3 dimsty))))
    3 ?- M. ~4 T5 |2 S
  9446.               ; else just replace it.
    % K0 O* S5 ]* O% V
  9447.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))5 S" ~2 S5 o: j' C! g" [# a
  9448.             )! ~: G$ D2 I2 n& r
  9449.             ; refresh sv_dvlist with new dimstyle.
    " y4 d/ [3 I6 w% [
  9450.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    7 Q. \) q% z& {! R+ M. m
  9451.           )4 t/ e( k: D) M0 s; {0 M- |! r( c
  9452.         ): e- G8 C7 J4 q5 ^
  9453.         (if (not (null dimlist))   ; attempted to change dimvars
    ; x: Q+ O* O$ n6 g5 w5 Z9 S1 V$ g
  9454.           (ddimen_complist sv_dvlist dimlist dimtbl)
    0 D+ ~/ ?+ }, K
  9455.         )  Y1 o; [  T  f3 W  [! A
  9456.         ; Modify dimension text$ i) o' h5 q- b0 s& m
  9457.         (if (/= dimtext text)% N1 O- U$ e# p$ `! ]/ m/ T
  9458.           (progn% L/ x' J9 \* t* {* V
  9459.             (setq dimtext (if (= text "<>") "" text))
    $ K3 J2 ]( }: h; }4 Y
  9460.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))
    $ r+ g% R) E+ u6 ^# O! F
  9461.           )
    0 P* ]; D# \4 [" u7 u
  9462.         )+ W4 S5 W8 k3 {" B& ?
  9463.         (modify_properties)
    ( J& g- h6 ^$ h! q) N$ F
  9464.         (entmod elist). I$ ]; g$ e( C8 ^. B5 d. l6 y6 m/ X
  9465.       )
    : d, H8 f0 m/ }
  9466.     )
    6 O! L8 B% e- }$ S3 z6 z+ V8 }
  9467.     (if (= dialog-state 4); j6 {5 z6 W% A
  9468.       (progn6 ]0 x. J! n$ `! q3 l" z; h  R
  9469.         (setq ddimmt 1)
    * T! Z* M" g! N; F8 {0 I# b) I6 L( s
  9470.         (if (/= dimsty stname); _+ Z: m' r. ~( u5 n& e8 k/ b
  9471.           (progn; U; d' G( C* m0 D/ t7 C
  9472.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case, U, p- s  ?* o
  9473.             ; doesn't have it.! J% [' ?4 g9 i; }) d: Z! B6 _/ t2 A
  9474.             (if (null (assoc 3 elist))
    $ E. U6 W7 s3 N* h+ Z' z
  9475.               (setq elist (append elist (list (cons 3 dimsty))))
    7 e9 }3 P9 ~/ u& v8 R- s
  9476.               ; else just replace it.
    $ C+ P' S( @$ w% a
  9477.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    6 \8 j$ R5 J# G, O4 z
  9478.             )
    ' Z) a4 K1 ^, {6 R: @; S
  9479.             ; refresh sv_dvlist with new dimstyle.' j1 z# T- t+ Z  Y8 a+ [" y/ P$ e
  9480.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    3 O& S) Q+ |$ h  @4 H; Q
  9481.           )0 d* L% s' V6 |  K! g7 _5 I0 H
  9482.         )* |  C) l( V2 ~2 o9 A  a
  9483.         (if (not (null dimlist))   ; attempted to change dimvars" S; f6 _/ C( `/ \" l& W0 k
  9484.           (ddimen_complist sv_dvlist dimlist dimtbl)
    " L2 k- G8 B4 h5 s9 E# Z
  9485.         )
    ! ~% |1 }+ r: b' Q7 F4 L% N
  9486.         ; Modify dimension text, M( F4 B+ Z+ g5 b
  9487.         (if (/= dimtext text)9 S6 G( w( z0 {  l
  9488.           (progn0 B+ _# a' W# ^" N3 Q
  9489.             (setq dimtext (if (= text "<>") "" text))
    0 Y3 `1 G7 y/ J4 x4 e
  9490.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))
    " ]$ n! F1 i7 V" k) [
  9491.           )
    7 w& ]1 c6 q4 z1 O' N# R( H
  9492.         )
    - X5 Q6 ]" H: }% n3 c2 i7 W
  9493.         (modify_properties)
    9 F/ Z3 R% s# F7 v
  9494.         (entmod elist)
    9 f3 J/ e3 I" T& V: l
  9495.         (safe_ddedit ename)3 N/ `1 r6 E6 l3 K: k$ E
  9496.         (setq elist (entget ename))
    ; z1 v8 B7 J& n+ u5 f& w$ K
  9497.         (ddimen)
    - m1 L, X( F1 ]0 C! {
  9498.       )1 P$ B5 m! B( `9 d
  9499.     )4 X1 ?( x' [% s/ g/ ]
  9500.     (ddimen_setvars dimsvcurset)      ; Prepare to exit1 u! T  Q' z, W( Y' H$ L4 {4 R' y
  9501.   )
    ! P4 g3 f! y5 i
  9502.   m  F) J) U) u+ D% c6 D2 S
  9503.   ;;' t7 `% g, @' K: h; L( M3 F% x
  9504.   ;; Modify TOLERANCE
    5 B9 B1 _- w8 R1 G7 _) f
  9505.   ;;
    8 p+ X- j8 H1 V
  9506.   (defun ddtolerance (/ a stname n dimtbl
    & a) ]! F0 _7 s2 k
  9507.                    dimsty dimlist dimovr sv_dvlist stlist dimtype0 V- a3 i7 s  n4 l! _" z
  9508.                    dimsvcurset)! X; [5 [: q& b2 O3 E: L
  9509.     (setq dimtype "DDTOLERANCE"
    : @7 z: A, Z8 m9 G
  9510.           dimsvcurset (ddimen_dimsty_restore)
    3 U. V* u/ ^& j/ V
  9511.     )
    0 \% p* t/ _$ b! z
  9512.     (if (not (new_dialog "ddtolerance" dcl_id)) (exit))+ z8 e7 s( p3 j; a4 l7 p
  9513.     (set_tile_props)
    ! ]( g0 P( t/ }* }
  9514.     (set_dimen_props)0 ?% E7 y  ?! H
  9515.     (set_tile_handle)
    6 {$ Y6 H3 `. e' I& T
  9516.     (set_action_tiles)
    ( `) s. a7 z" m' G
  9517.     (setq dialog-state (start_dialog))2 @) K% ^! k3 H1 M, Y0 G
  9518.     (if (= dialog-state 0)9 u: R6 ^! V' Z5 ^+ u3 I
  9519.       (if (= ddimmt 1)
    # w$ q1 E6 M: Z6 ]+ U
  9520.         (reset)( B2 i. Z$ T: {6 W( J2 A0 @
  9521.       )/ J: p' Y& p5 Z3 l9 a9 {3 F! |
  9522.     )
    / ]* t3 l$ L$ p6 k0 ]# G1 i
  9523.     (if (= dialog-state 1)
    ( n2 W$ v5 N# |' i, N' V/ }1 h
  9524.       (progn. A4 M# p; Z3 B  K
  9525.         (if (/= dimsty stname)
    6 x0 L  _- e7 i
  9526.           (progn
    , k) ?- f9 K3 {1 O- a9 v
  9527.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case# f, h, @' c6 ^4 W
  9528.             ; doesn't have it.2 o3 i, |% G5 ^" t6 s! ]
  9529.             (if (null (assoc 3 elist))9 f) V. J4 @8 j" O: u
  9530.               (setq elist (append elist (list (cons 3 dimsty))))
    % M; u# d+ Z3 O. `3 e6 w9 \
  9531.               ; else just replace it.
    8 l8 j% w9 t6 @; B6 U& Z4 a; `& G
  9532.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))! {6 ]9 f% a" H' N; Q+ V, R9 Q# `
  9533.             )
    & l" {! I/ ]7 T
  9534.             ; refresh sv_dvlist with new dimstyle.
    8 U+ o; O$ k: C. r$ T
  9535.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    2 e1 k# W1 U( u$ p% |; [; _
  9536.           )
    * @8 W. n8 k4 {; v, n6 l' x
  9537.         )& G; K. J* J. s5 R9 r4 A# m$ m
  9538.         (if (not (null dimlist))   ; attempted to change dimvars
    5 W" }6 `1 z6 \8 w& z8 _- p
  9539.           (ddimen_complist sv_dvlist dimlist dimtbl)
    & y  [1 U5 Y- }. V8 r' U9 K1 ^
  9540.         )
    2 ]. b" Y  W( l+ \
  9541.         (modify_prop_geom): h( L' v# [- n- M& A1 e" B
  9542.         (entmod elist)
    * M( T) X5 H! ]4 `7 A" L+ F
  9543.       )0 E8 c9 b/ ^; w$ H7 g8 O5 J
  9544.     )+ Q/ P! l/ y2 a4 T, y& \
  9545.     (if (= dialog-state 4)5 V) S* F3 ~! q4 L0 V! U9 j
  9546.       (progn
    ' N  u( k* v: p) F
  9547.         (setq ddimmt 1)$ f% Y5 y2 v! }5 \/ @% {& ?" n/ y
  9548.         (if (/= dimsty stname)
    6 U5 c" ^8 E) B$ ?0 [4 E
  9549.           (progn  F& `8 [1 a! a) [1 a; v; Q5 L
  9550.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    . j# R8 Y$ G( \
  9551.             ; doesn't have it.
    ; c/ W* r+ P* i. @! N
  9552.             (if (null (assoc 3 elist))
    8 F1 V, l& ?6 n4 r3 a8 Z" r# U* P
  9553.               (setq elist (append elist (list (cons 3 dimsty))))+ x4 Z' s% D5 L& Y
  9554.               ; else just replace it.. P& o6 g# K& d3 b/ P
  9555.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))/ _" s3 Y  F4 `
  9556.             )
    % P& d# \9 Y/ |  L2 L' \
  9557.             ; refresh sv_dvlist with new dimstyle.
    / r7 }% ~# d9 O& n2 z* V4 V  Z& h
  9558.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    8 M" v6 M3 ?% t' I! p9 K5 k
  9559.           )
    5 x1 H/ o4 B. j3 t3 L
  9560.         )
    2 W) J1 V( u1 ~; R0 z# H5 q. v6 a
  9561.         (if (not (null dimlist))   ; attempted to change dimvars
    6 }$ E  g- P$ \8 e) H6 A
  9562.           (ddimen_complist sv_dvlist dimlist dimtbl)# i2 i" ]) G1 n) t, m- \
  9563.         ); Y$ p* H% ~6 v. ~
  9564.         (modify_properties)
    ! c; s' H! U9 F, B; I# F/ u& B% @
  9565.         (entmod elist)
    : C' O4 F( X: b) m
  9566.         (safe_ddedit ename)0 |# W- }3 v. {2 Y4 x3 b* Y7 e: ?/ z
  9567.         (setq elist (entget ename))
    3 d  U. w6 D3 k
  9568.         (ddtolerance)7 H! K; c& _: @4 p6 F* e0 N
  9569.       )
    / o, \4 r: m+ C
  9570.     ); I" D3 w2 i  v+ D, }) [+ S% `
  9571.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    : H3 J. L& r5 X$ g# A# D
  9572. )) S, F3 P: T4 P) o2 i: r8 M5 c
  9573. 5 P) |, o+ d1 S8 q
  9574.   ;;
    : J5 p2 X* b- e: W4 I
  9575.   ;; ddimen_dlg - jump to ADS ddim module, O! c% O) I% ~, U) S& Q4 G1 \7 V
  9576.   ;;
    ! p: S) r) C" y/ |$ s% E( _
  9577. 6 [5 |0 P5 a( b" ]# o( C
  9578.   (defun ddimen_dlg (dimtype tile dimsty dvlist / dimlist)
    * `, K. S/ F- O) v% W" y

  9579. : i' O- g, ]/ J4 s
  9580.     ; Jump to DDIM with overrides if any./ c* \  X' Y! b: r  C
  9581.     (cond ((= tile 11) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Geometry
    : W& |" A  a& m; ^( @
  9582.           ((= tile 12) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Format
    5 P. ^$ j2 F0 [# d* Q, }+ _6 M
  9583.           ((= tile 13) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Annotation
    8 y; ~; \& {4 t8 ~9 d+ f
  9584.     )
    ! k# N6 R/ `# J  r
  9585.   )9 `/ U3 |  v3 ^  {% v
  9586. , A& H) G- A( z
  9587.   ;;: o* S) R8 \8 J. Z! S8 s' b
  9588.   ;; Dimension variables updated are stored as overrides.
    1 m2 j; {6 f" P  u* ]
  9589.   ;;
    . C& ^; J5 @; Y' O; p1 V# H
  9590. + s6 y! b. ]- l6 R
  9591.   (defun ddimen_complist (dimolist dimnlist dimtbl / i odvar ndvar9 t0 K. \7 t( M! ^* T" J
  9592.                           dv dime commandIssued)5 Q5 N/ Y% H' t" g8 F$ j
  9593.   o6 \) W1 W3 z. x/ F$ x
  9594.     ; Here we skip the following first three items:
    & b+ J) J& t$ u# W9 a5 {4 L, V
  9595.     ;   (0 . "DIMSTYLE") (2 . sylename) (70 . 0)% m8 Z7 L* B) c
  9596.     ;! t# ]" O' R( Z
  9597.     ; The list comparison immediately begins with dimvar.
    - L3 n2 V5 K, R* ^" g
  9598.     ;
    . G' P4 f: ~" D# t1 `" z
  9599.     ;  dimolist - original states of dimvars
    ; w- [2 M4 ]! |; ?6 i3 B3 G) J1 V
  9600.     ;  dimnlist - new dimvar list which is of the resbuf's
    % e9 p& @$ @5 X0 p5 P1 E9 ^8 f
  9601.     ;  dime - entity name for the dimension
    1 c( q5 E! }4 U/ i+ T$ L. M/ c
  9602.     ;  odvar - value of dimvar for the dimolist
    & `( ?: A5 f" l
  9603.     ;  ndvar - value of dimvar for the dimnlist
    ! j" a2 z6 B$ I, c" ^! l

  9604. 5 r. f; y  x7 @
  9605.     (setq i 3
    * I) r4 y1 h3 K  k) t
  9606.           dime (cdr (assoc -1 elist))' N6 Y- _) V3 L' Y. P
  9607.     )( P3 i! y( l3 u  s
  9608.     (while (setq odvar (cdr (nth i dimolist)))8 ?4 _( E/ |4 ^4 i$ T4 [  z" V- I
  9609.       (progn; C* }! `0 f- c" b$ {
  9610.         (setq ndvar (cdr (nth i dimnlist))). ]. N! k* Y( n8 ], H
  9611.         (setq dv (nth i dimtbl))
    % A8 v: h' c4 F9 Y2 M6 o
  9612.         (if (eq dv "dimtxsty")
    + v! |. O4 A( \# M/ S  i, D  F" t7 t
  9613.             (setq odvar (cdr (assoc 2 (entget odvar)))
    * p9 A8 m! C' j7 N# c1 [8 ]5 g
  9614.                   ndvar (cdr (assoc 2 (entget ndvar)))
    ! U3 C  |; E( X+ w# ~2 @8 q
  9615.             )
    * \- P! u7 K8 l; j
  9616.         )
    + s7 \0 j: d& Z6 i

  9617. * v1 U( d9 ], i0 o  j; [! D& _
  9618.                 ;; j1 e+ O& `/ o! O. q) i9 @
  9619.                 ; In order for DIMOVERRRIDE to operate correctly with string
    . s% ~6 M# |! ?0 p" `' h
  9620.                 ; based dimvars, we must pass "." versus NULL strings.! M, b" @3 a$ h# U
  9621.                 ; In this case ndvar is the new dimvar value the user wishes
      e# h1 u3 x+ O
  9622.                 ; to update on selected dimensions.5 [" x! X# {' g( ^, ~- t
  9623.                 ;" `2 i" F/ E9 i; s
  9624.             (if (/= ndvar odvar)' r  G& {3 ^4 a# F7 ?! N9 ^; U
  9625.               (if (= 'STR (type ndvar))
    3 I; i" }# ]+ K& w2 Y8 s$ R' l
  9626.                 (if (= ndvar "")' `* X7 S4 D( s  R, d
  9627.                       (setq ndvar "."))))& h+ m5 C) g- O' `1 z
  9628. 7 R& W" W- M8 x) P
  9629.         (if (/= ndvar odvar)
    ) x  Z  |* t( R! j) d2 E* o# p& x
  9630.           (progn2 _0 i8 e/ q7 \9 {; s9 _
  9631.             (setq dv (strcat "_" dv))+ V# P. l) C* P
  9632.             ;
    7 y3 _. F5 D/ i6 M0 ^
  9633.             ; Start the dimoverride command9 u6 E; V/ j* n0 }) k* n1 o. E
  9634.             ;) R. F* c& q4 s; m8 S$ b
  9635.             (if (not commandIssued)
    / h1 ^! [9 w0 a$ E( I& J
  9636.                (progn  f1 j$ l$ \" m+ Z
  9637.                  (command "_.dimoverride")# O3 S( _# n8 R' p7 k
  9638.                  (setq commandIssued "T")
    9 Q; r- R" T" x6 E
  9639.                )& o7 s! X$ L  ]+ d3 P6 l
  9640.             )
    . D% h& u" M& W
  9641.             ;4 p6 S( G/ `* s
  9642.             ; Issue dim overrides3 i, {, J, U; ?: {( E+ J2 ~. f
  9643.             ;* R  C+ i. g2 d
  9644.             (if (and (or (= dv "_dimclrd") (= dv "_dimclrt") (= dv "_dimclre"))
    6 ^) m7 J. y0 e& l! f" v
  9645.                      (or (= ndvar 0) (= ndvar 256))
    * d9 l7 A6 E' h+ a! u
  9646.                 ). g1 k- L* {5 u  t
  9647.               (progn
    , s# F( Z5 Y, J% ~$ _3 J
  9648.                 (if (= 0 ndvar) (command dv "BYBLOCK")), ]* E, ^" k; C3 h9 R5 X' Z
  9649.                 (if (= 256 ndvar) (command dv "BYLAYER"))# ^1 {& `! _5 L0 f% h3 u5 N
  9650.               )1 F! L$ z4 X8 G* p+ `* D
  9651.               (command dv ndvar): q  F5 b: R* ~' U4 U$ I
  9652.             )/ O" j; G- x8 A. S
  9653.           )
    2 T% B( ~9 V& C. k) p( q4 t
  9654.         )2 u9 n! u- G3 [+ ^+ d
  9655.         (setq i (1+ i))9 j0 m2 M: r" U. v
  9656.       )
    " M- j% k* K! i
  9657.     )
    : o  @" H( u3 L
  9658.     ;
    9 ?) G  o& w* H. G
  9659.     ; Select Entity and terminate command" U4 a& B! d- t. E
  9660.     ;% j; X% p6 U- i. u% V
  9661.     (if commandIssued
    ' ~& A0 B/ W& p5 C' J  `
  9662.         (command "" dime "")& y- E& K" U3 I$ w) F: L
  9663.     )
    3 U1 @. h# V" D; S0 w7 \6 N
  9664.   )1 o* h! L7 {, \  o) R8 m

  9665. 2 H; R/ S: y$ W
  9666.   ;;( ?( f) z" o2 B/ l
  9667.   ;; Get style name currently selected style name.
    8 q+ v- J" A5 x( }
  9668.   ;;$ O* e$ d& s. ~3 [5 j

  9669. " c1 |! {$ q: ^5 C5 w! q5 ~3 T
  9670.   (defun ddimen_style (/ dimsty)) i' A+ V0 a3 g" [. a9 h, s
  9671.     (setq dimsty (nth (atoi (get_tile "mod_style")) stlist)
    / t, n+ r1 c2 g, G
  9672.           dimlist (ddimen_getdimvars dimsty)
    % _) C/ M* A, m' u- i1 p
  9673.     )
    8 U2 o: C. v& o$ a) W
  9674.     dimsty
    : f0 o3 P$ n- d) z7 \! V! `+ ]) Y
  9675.   )
    , [' P3 K; X( s  X+ X3 e

  9676.   ^0 O/ X( Z1 S/ H( l- T$ S0 {
  9677.   ;;
    ( H5 t6 a1 g6 V# X" ]) u7 r; l+ s
  9678.   ;; Set dimvars
    : ]8 q! c4 r1 K- w) Q( M& O& `
  9679.   ;;
    3 d% F7 U/ ^0 x1 _" u% Y2 P
  9680.   (defun ddimen_setvars (dimsvcurset / dv i)) e/ y5 \0 q4 @5 X" S( K: p% J
  9681.     (setq dv (cdr (nth 1 dimsvcurset)))% S' {( I- e( c- }+ J( k# y
  9682.     (command "_.dimstyle" "" dv)
    9 v% F. Q6 f% Z) k
  9683.     (setq i 3)5 b( i+ x' m5 U1 i7 i7 E
  9684.     (while (setq dv (nth i dimsvcurset))
    & B) d8 S, [  \- U
  9685.       (progn4 r5 \2 L# B/ o
  9686.         (setvar (car dv) (cdr dv))) ?- V% s- Q& z4 |( ?+ K
  9687.         (setq i (1+ i))
    % Z1 H& U4 G; D/ j6 j
  9688.       )
    ( W+ R9 H; E& ]4 F+ `8 t7 _
  9689.     )5 R* R: J* u6 K3 M. D' O( |
  9690.   )
    0 t7 _3 h$ N( w% q1 L# v' |
  9691.   ;;1 M4 t3 Y. ]$ `& \" {5 V, g1 c% W
  9692.   ;;  End-of-dimension8 [2 ]1 z. Q% n3 }' i
  9693.   ;; ==================
    ; }4 l" S7 K" U  V8 U- j

  9694. & r% q4 v& V6 w: t0 k2 |# L1 B. C( H
  9695.   ;;
    ) S6 p; Y7 U; r" P
  9696.   ;; Sub-dialogues for properties.  Common to all object dialogues) F1 @. R. J) p( g/ _% v3 p, X
  9697.   ;;
    8 O0 _1 C& L3 W# _' E; q
  9698.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    . P9 Z% B+ g: V
  9699.   ;; edit box to allow the user to select or type a color number.  It returns! m& k2 `% q: |$ L& Y$ t/ S
  9700.   ;; the color number selected.; Z& c8 p0 s, j# G( @
  9701.   (defun getcolor (/ old-idx colorno cname lay_clr)
    / Y2 A# V. l' x$ T
  9702.     (if (= (get_tile "error") ""). A- h1 m( |9 y) D* D$ r8 L# [
  9703.       (progn( o1 V* U7 J) `1 e7 B; w
  9704.         ;; Get the color associated with this object's layer, for use) I, R+ S- K& M/ _6 b( }9 V6 m
  9705.         ;; in the color swatch if the user selects color BYLAYER.
    0 G9 z/ \; C- s# h/ t, L
  9706.         (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    ) V9 ]0 s9 R( T# |1 a: F8 d
  9707.         (if (numberp (setq temp_color (acad_colordlg ecolor T lay_clr)))# K. d! i* s6 [$ e3 i: o
  9708.           (progn) d6 {5 D  i6 |& S, d- O* P
  9709.             (setq ecolor temp_color)
    / [4 x# u/ L& c7 |
  9710.             (setcolor)- _9 e' n# r! v6 n) b) c9 I) v" `9 }
  9711.           )- f  f7 w! a% y( `. z
  9712.           (setq testcolor temp_color); W  ]. _5 B& Y- W! b
  9713.         )% m4 F) u, T, q$ W  C! D0 {1 c7 a+ E
  9714.       )) `6 M2 ~8 l. g. O
  9715.     )( L: I- _& r1 p! g; ~# N6 k) F, g
  9716.     ecolor
    2 s! F9 G  a' o- I4 h% F
  9717.   )1 |8 }7 O& W7 s; v
  9718.   ;;
    ( e% S% q& |* F1 i4 ^
  9719.   ;; Function to set the color tiles.
    1 j7 N; T# R) b& ]+ H+ F
  9720.   (defun setcolor()
    0 w0 d! N2 f( A
  9721.     (cond0 J  @; ]' ~; l' q
  9722.       ((= 0 ecolor)# K) \: u7 a0 j$ l- g
  9723.         (set_tile "t_color" "BYBLOCK")
    % p3 P" L2 k6 c/ H( W
  9724.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white
    8 w8 b# @- O( z
  9725.       )% J' x+ d: f! e! Z6 ^
  9726.       ((= 1 ecolor)
    & y+ c7 w) I4 f! H
  9727.         (set_tile "t_color" "1 red")
    ' L3 h1 B( A) e6 \# _! P
  9728.         (col_tile "show_image" 1 nil)- r4 C% s# \* b
  9729.       )' W9 X1 {6 r- F+ V3 s& m+ l
  9730.       ((= 2 ecolor)1 O3 S) `0 J! |0 x9 ?
  9731.         (set_tile "t_color" "2 yellow")
    " a0 w* U7 q# ~: \% A+ j
  9732.         (col_tile "show_image" 2 nil)
    " l) I4 B2 d( n) x; \, i1 c1 B2 |' F
  9733.       )) z* M0 ?( w2 U
  9734.       ((= 3 ecolor)9 F) P. e8 W) y0 [* ]- f( A. [
  9735.         (set_tile "t_color" "3 green")0 a4 s1 `4 j' I6 [3 K
  9736.         (col_tile "show_image" 3 nil)
    0 d' e1 q% ?5 {5 W
  9737.       )
    2 [# K& P# u/ h4 B* i- S" s
  9738.       ((= 4 ecolor)
    8 K# D' E1 {# B& ]1 K) {
  9739.         (set_tile "t_color" "4 cyan"): u/ g# I6 f9 z/ [) Q
  9740.         (col_tile "show_image" 4 nil)
    % A( V$ h7 U1 s8 t7 ]
  9741.       )6 b: Y- C6 ]4 w  ^9 l0 u9 ?
  9742.       ((= 5 ecolor)8 q& Q/ N% w/ w4 U% \
  9743.         (set_tile "t_color" "5 blue"); k9 r  k. U0 ^& A
  9744.         (col_tile "show_image" 5 nil)7 k  s7 M+ c% ~0 i1 K0 O# ~
  9745.       )
    & ?$ X- }; f' ~" l& q% d8 t
  9746.       ((= 6 ecolor)3 ]! n( A( I- r4 N+ S% S
  9747.         (set_tile "t_color" "6 magenta")
    . e0 v* M9 b( r
  9748.         (col_tile "show_image" 6 nil)
    4 D$ V4 ]" O- ]0 n
  9749.       )' u$ z* G$ G' w& j; ~& T8 Z- \! t
  9750.       ((= 7 ecolor)4 [- V; j; h& F( G
  9751.         (set_tile "t_color" "7 white")) Y* R! u, W! H
  9752.         (col_tile "show_image" 7 nil)
    + }; f- j1 D- K, a) t! K
  9753.       )3 k* W/ l4 N9 V( T, j
  9754.       ((= 256 ecolor)* d4 }8 ~* l: }& U
  9755.         (set_tile "t_color" "BYLAYER")
    & S9 }' K* z  [5 c4 ?! T( H
  9756.         (col_tile "show_image" (bylayer_col) nil)
    8 `8 ^" i5 ~9 T1 O& s. V
  9757.       )( S1 f6 f: u* z/ l8 ]: [
  9758.       (T
    $ T6 I0 E& C8 J$ Z! v$ A
  9759.         (set_tile "t_color" (itoa ecolor))
    ; W7 @+ a3 |# d0 @( ~) r4 w
  9760.         (col_tile "show_image" ecolor nil)1 d! {) G+ G5 v* {# V9 J8 G$ o
  9761.       )
    ( H' C% f* X9 E: x0 A2 `
  9762.     )6 y. K. K  ^. b) E! ~
  9763.   )
    " z- h0 j. P/ v! V. W+ [; m
  9764.   ;;/ V( m3 I# X% w  x: p8 L: ]" z$ u
  9765.   ;; This function pops a dialogue box consisting of a list box, image tile, and
      C: o. {4 K1 f; }6 \8 d! |& Z, x. t
  9766.   ;; edit box to allow the user to select or  type a linetype.  It returns the! ]& R! C6 P7 i8 H) f: N# C
  9767.   ;; linetype selected.
    : ^4 f0 _6 ~0 c$ _
  9768.   ;;
    6 s' z$ T, D! S( ^6 Q' s6 B% w) Q
  9769.   (defun getltype (/ old-idx ltname). ^+ e9 y. \5 j
  9770.     (if (not lt-idx)
    8 L+ J) [; h8 ~* \% i3 X. z6 x
  9771.       (progn
    + v7 E! {5 I7 i: s# L1 {
  9772.         (make_lt_lists)             ; linetype lists - ltnmlst, mdashlist( ^- k8 G3 o* J% d# k5 Y
  9773.         (cond5 r. L$ C$ i! V. e
  9774.           ((= eltype "BYLAYER")
    0 X2 v- E5 ]! V. T. [; G
  9775.              (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    ) Q1 Y" _' b+ ]$ W4 L% z
  9776.           ((= eltype "BYBLOCK")7 }/ H4 a: l* l9 [
  9777.              (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    7 I  f; P7 A8 z7 }
  9778.           (T (setq lt-idx (getindex eltype ltnmlst)))  U6 p9 Y2 X/ \+ F
  9779.         )- J2 A  r0 H& L- m
  9780.       )! C, o/ R) g- P7 E+ b
  9781.     )
    * E, x' V1 I2 g5 ^# m" \2 p" J

  9782.   o6 e8 ~6 Y1 b; E! O6 M3 Y
  9783.     (if (= (get_tile "error") "")  d5 F& f8 y  n0 X5 M4 v% d% {
  9784.      (progn( t1 P, i0 F! ~+ i" m( S
  9785.       (if (not (new_dialog "setltype" dcl_id)) (exit))
    4 S% x+ J% \" S2 L
  9786.       (start_list "list_lt")
    0 _, N! J! J, h2 H5 q3 A
  9787.       (mapcar 'add_list ltnmlst)  ; initialize list box! C' E: D: q/ U2 R* R; e8 q
  9788.       (end_list)
    + h; a5 Y: m. Y* U9 P* r5 p0 H7 O
  9789.       (setq old-idx lt-idx)
    - Z- |) A' U9 E
  9790.       (ltlist_act (itoa lt-idx))
      L0 Q7 D! F+ Q) Z2 l; W. r1 J) ?$ X

  9791. 4 A' M4 A4 @) J& Y/ M
  9792.       (action_tile "list_lt" "(ltlist_act $value)")
    + r; `- p& Y) P3 I3 g0 h, ^+ l
  9793.       (action_tile "edit_lt" "(ltedit_act $value)")" {; [8 f* t; Z8 I( w
  9794.       (action_tile "accept" "(test_ok)")
    + h) l( d: M! Y8 V$ K+ p  O
  9795.       (action_tile "cancel" "(reset_lt)")
    . {- ?. a' N5 t8 S

  9796. . X0 j& H/ X! S/ o  d5 x
  9797.       (if (= (start_dialog) 1) ; User pressed OK
    . \! ]8 e0 C: a5 J4 y
  9798.         (cond' m& g) A$ d3 |- @! T
  9799.           ((= lt-idx 0), y6 _# A3 j2 M3 m. \1 S" {! N2 p- x
  9800.             (set_tile "t_ltype" (bylayer_lt))
    ! q9 Z- c# }0 P6 S; y% u
  9801.             "BYLAYER"
    ( D6 _7 M, S2 q
  9802.           )
    : k9 w6 G/ K4 Z8 V
  9803.           ((= lt-idx 1)! n. y$ ^# [: v$ R: O
  9804.             (set_tile "t_ltype" "BYBLOCK")& W4 y, X0 ~9 \& z
  9805.             "BYBLOCK"
    2 B% c' d$ w9 N
  9806.           )) }7 p! A2 f# }: Z* f0 @9 l! A
  9807.           (T  (set_tile "t_ltype" ltname) ltname)
    # J- g3 V& y; f' @% Q
  9808.         )
    6 L7 O/ u0 A; {
  9809.         eltype$ B% V9 S6 Y5 r# G/ t
  9810.       )2 z; y' s4 I& m; f/ s& V. x
  9811.      )
    2 X0 W/ D+ A6 E, H/ |$ V8 M% f& q5 f( d
  9812.      eltype
    : G4 C9 ]$ U. _6 o
  9813.     ): h/ e7 c3 O( Y/ i0 t2 k9 Y
  9814.   )
    7 y8 a$ H- K! A. n% P
  9815.   ;;7 w( M" s9 U# O( s9 p& _6 T
  9816.   ;; Edit box entries end up here) N3 z3 |) K( F2 @
  9817.   (defun ltedit_act (ltvalue)
    , o( C; A5 s) H: [  B
  9818.     (setq ltvalue (xstrcase ltvalue)). T: I1 x6 P; y" D& F
  9819.     (if (or (= ltvalue "BYLAYER")
    8 x, r) F. o; H; u4 ?1 _* F9 _% }
  9820.             (= ltvalue "BY LAYER"))! A6 [) R* }9 K3 I1 D
  9821.       (setq ltvalue "BYLAYER")
    , a7 ?5 ~! N8 w- @5 U
  9822.     )
    - ?( c! j; U; k: v# B$ [/ n
  9823.     (if (or (= ltvalue "BYBLOCK")/ y1 F" M5 D+ a5 i6 s: g
  9824.             (= ltvalue "BY BLOCK"))
    + S1 c/ Q- R$ l& U8 M  g- r
  9825.       (setq ltvalue "BYBLOCK")
    2 O7 j5 M' H5 H( B* K5 [) L
  9826.     )
    2 e2 l% ]: d, |7 [. p7 F0 j
  9827.     (if (setq lt-idx (getindex ltvalue ltnmlst))' Y2 `5 R; h6 Q2 H
  9828.       (progn  F- e. V' @1 h. R& I* b% L1 v, T& g) y
  9829.         (set_tile "error" "")
    + K/ a- ]2 N4 T2 b: M) |# K" o- E
  9830.         (ltlist_act (itoa lt-idx))* g5 b4 N- ~% m
  9831.       )
    ! H- X* Z0 K% j4 @3 A
  9832.       (progn; J& x- J) h4 C$ r
  9833.         (set_tile "error" "Invalid linetype.")
    1 A3 T! z' K5 I
  9834.         (setq lt-idx old-idx)( ]2 K& i  k( v2 _1 t- ]
  9835. ;;        (mode_tile "edit_lt" 2)
      F; D, j: b% c. L
  9836. ;;        (mode_tile "edit_lt" 3)
    ' L1 D  t3 f5 b+ W5 ]7 ^
  9837.       )
    + I* a! ^0 _% `" i$ U1 m4 x7 P
  9838.     )
    $ T2 A/ a& j7 H& ^+ Q
  9839.   )8 N4 k& a. ^0 W
  9840.   ;;
    / b$ S' ~3 N; q, f3 n7 z' d& C
  9841.   ;; List selections end up here.  Update the list box, edit box, and color
    9 d1 V% Q" m8 _  j% }, i4 D. W
  9842.   ;; tile.
    ) C7 Y4 r# ?+ @
  9843.   ;;( f9 _/ S5 _1 T8 K# g5 @
  9844.   (defun ltlist_act (index / dashdata)
    * n0 q2 i6 P. M1 X; l' U1 F
  9845.     (set_tile "error" "")% ~" ?- d/ t" ^% C6 C! ?- N
  9846.     (setq lt-idx (atoi index))
      \7 {) U3 s- R& C0 B/ d! T
  9847.     (setq ltname (nth lt-idx ltnmlst))
    ( K( L9 l' m; Z' L# |9 ~
  9848.     (setq dashdata (nth lt-idx mdashlist))8 y$ q: a7 a* x  x
  9849.     (col_tile "show_image" 0 dashdata)0 p# q  ~+ Y9 s% u& D
  9850.     (set_tile "list_lt" (itoa lt-idx))3 z# [0 G. ?; l/ G
  9851.     (set_tile "edit_lt" ltname)% T; L4 }9 @2 R" ]$ {, H
  9852.   )
    : z" ~5 J0 B1 O6 R) M# v
  9853.   ;;* ~. _# r; E0 K9 S: e$ I
  9854.   ;; Reset to original linetype when cancel it selected
    : |+ o' W) R# {5 k  P- e9 o
  9855.   ;;
    , e) R9 M3 ?0 m8 y" x' B/ {
  9856.   (defun reset_lt ()
    ( K) M% Q3 C9 G  E1 _  f* ?# Z* @
  9857.     (setq lt-idx old-idx). a3 v, C3 Q4 \0 n; e1 p
  9858.     (done_dialog 0); j" f& G0 j! _+ [
  9859.   ); E# a& A. Y! c2 W
  9860.   ;;
    8 w- A! V, t$ H0 c8 a  s
  9861.   ;; This function pops a dialogue box consisting of a list box,image tile, and* o: m2 f2 J$ I- d
  9862.   ;; edit box to allow the user to select or type a layer name.  It returns the2 e" Q7 k- K7 q% {
  9863.   ;; layer name selected.  It also has a button to find the status (On, Off,# T0 x3 j" [/ g% ]; \
  9864.   ;; Frozen, etc.) of any layer selected.6 J( m, a% p! x8 V1 A. Z0 m1 ?
  9865.   ;;
    0 @' I3 C: H4 C# `
  9866.   (defun getlayer (/ old-idx layname on off frozth linetype)7 M5 H" x) k8 Y& }
  9867.     ;; Create layer list the first time the layer5 ~$ u* C" `( B/ w6 E1 ?
  9868.     ;; dialogue is called.
    6 C/ y4 l2 k1 m2 U
  9869.     (if (not lay-idx)
    9 K+ V2 p$ Q1 _( x
  9870.       (progn
    3 z& d+ Z, w  L( ^4 e  z
  9871.         (make_lay_lists)
    0 @, ?6 _0 ]* T( B
  9872.         (setq lay-idx (getindex elayer laynmlst))
    ' H- L* p( `2 Q$ `+ J( M, t
  9873.       )4 {- G/ H1 c. T* w2 T$ @- V5 u  N: M
  9874.     )
    ! }# B9 Z+ I6 l" N3 \
  9875. / y+ y3 O* E# }: z
  9876.     (if (= (get_tile "error") "")5 n2 L& H0 h3 [! w5 c9 w
  9877.      (progn
    4 R8 C$ Z" k: y1 P+ _% W
  9878.       (if (not (new_dialog "setlayer" dcl_id)) (exit))
    % i" H0 s" G, b7 Y! n
  9879.       (set_tile "cur_layer" (getvar "clayer"))" o9 w8 w1 Q9 T0 `
  9880.       (start_list "list_lay")
    " n8 z; {* G( R. H: B2 w! S" p: q
  9881.       (mapcar 'add_list laynmlst)  ; initialize list box, d3 c/ z5 ]! p+ w5 K" I
  9882.       (end_list)4 T1 N4 ^) n1 X
  9883.       (setq old-idx lay-idx)
    % o1 S. ~7 f1 T/ K% x" R# l
  9884.       (laylist_act (itoa lay-idx))! h- U4 W% a% H, G
  9885.       (action_tile "list_lay" "(laylist_act $value)")
    % Z6 E4 U6 ~' A
  9886.       (action_tile "edit_lay" "(layedit_act $value)")5 j) i: H3 V# }4 S
  9887.       (action_tile "accept" "(test_ok)")' m# |! {: N3 R/ i
  9888.       (action_tile "cancel" "(reset_lay)")
    % n) }, q: t$ B- ^* c: c: M
  9889.       (if (= (start_dialog) 1) ; User pressed OK, g# }7 B1 z6 }, c$ j) P8 j
  9890.         (progn1 B' j. D8 n% p( K% T1 p* M# ~; i
  9891.           (set_tile "t_layer" layname)9 `! U* r' d1 `, b3 T
  9892.           (setq elayer layname)5 ?1 m& u4 W' m) U: _
  9893.           ;; If layer equals bylayer reset color tile; o  S: D3 z, Y) `" k
  9894.           (if (= ecolor 256)" I9 X0 H) }  g2 }! V4 e: D2 ~
  9895.             (col_tile "show_image" (bylayer_col) nil)
    3 r. W. l! Y6 @: A) U" h
  9896.           )
    % _" i/ P: b5 r
  9897.           layname
    % k$ M* H& J# P* Q# X# Q& O
  9898.         )! Y' p* r  K2 H# N) L+ S* n6 H
  9899.         elayer$ X: X! b6 }% L$ u  b  |
  9900.       )
    ; D" ]7 o/ F! g; C/ a6 D7 @2 m
  9901.      )
    2 X7 C7 Z, A# @) ?* J; l5 q) E; g, f
  9902.      elayer. m" P! M; ?- \- w
  9903.     )
    ' _7 h8 I# R7 e! B% `& e
  9904.   ). v$ J9 m' y* u" x# m- R
  9905.   ;;
    8 M) s( w% S2 F, t
  9906.   ;; Edit box selections end up here.  Convert layer entry to upper case.  If
    # X. O6 M, {" U$ i
  9907.   ;; layer name is valid, clear error string, call (laylist_act) function.
    $ M2 h( k6 v2 K
  9908.   ;; Else print error message.( O" G, k) d: P; t- r& o
  9909.   ;;
    , m8 m+ H7 Y8 D+ d& K' n
  9910.   (defun layedit_act (layvalue)- r; a6 @7 f0 @- |# o1 p8 p
  9911.     (setq layvalue (xstrcase layvalue))/ W, G& [  F: Q$ f
  9912.     (if (setq lay-idx (getindex layvalue laynmlst))
    ( L4 G4 f1 l# f4 E
  9913.       (progn7 M  C9 ?2 t+ x" J
  9914.         (set_tile "error" "")
    1 }9 V( k8 q: t' Y- D! R* T
  9915.         (laylist_act (itoa lay-idx))1 F% D  Z6 I1 V! g% Y! a- b  n$ Z9 I
  9916.       )9 t0 |7 H( @$ f' X( J
  9917.       (progn6 v( a9 T# A* z& Z" J- }0 q! x
  9918.         (set_tile "error" "Invalid layer name.")
    0 ^6 a: X% w7 W+ K
  9919. ;;        (mode_tile "edit_lay" 2)0 e8 {9 F5 M/ z1 G) M0 ?8 Y
  9920. ;;        (mode_tile "edit_lay" 3)
    ! B" E( l9 M, k" j
  9921.         (setq lay-idx old-idx)0 f" P/ n5 o7 Z) t. o
  9922.       )( `) G  m" Y3 a6 n1 o2 N
  9923.     )
    3 ~, Z6 N5 F& g% Z
  9924.   )! `- W& a+ g4 i! g
  9925.   ;;
    / _% I. R# P, F8 ?$ o6 g: @+ @
  9926.   ;; List entry selections end up here.* l% ]6 L  s) e$ ^
  9927.   ;;, o0 A8 E+ w4 d+ n/ X
  9928.   (defun laylist_act (index / layinfo color dashdata). @" `( K! x) i9 H9 ^: L+ z! Z
  9929.     ;; Update the list box, edit box, and color tile.
    & O  M6 Z0 n/ K4 j$ k
  9930.     (set_tile "error" "")
    ; J0 a( A+ Z" F0 y5 k
  9931.     (setq lay-idx (atoi index))
    ( L4 _2 Y5 B- F6 l
  9932.     (setq layname (nth lay-idx laynmlst))* L* e. a" ^: J* n
  9933.     (setq layinfo (tblsearch "layer" layname))
    ) }5 f& e) p) g% b
  9934.     (setq color (cdr (assoc 62 layinfo))). D, h  S: R# i/ y
  9935.     (setq color (abs color))
    8 K$ J4 b) o6 H; P- j8 _
  9936.     (setq colname (colorname color))& L7 a  c; D0 X. [# ?& z' V; ]- I
  9937.     (set_tile "list_lay" (itoa lay-idx))- F; a: b7 J! H5 l: v( j8 Y
  9938.     (set_tile "edit_lay" layname): E* j2 ^0 _  v, C) h* v0 q+ U
  9939.   )
    2 h# U& E6 A9 O0 P* V+ G+ k: O
  9940.   ;;; e' r) F; o0 b1 l$ a7 X# e
  9941.   ;; Reset to original layer when cancel is selected.
    2 w- b, Y! w$ S: W4 X* \" f) b. P
  9942.   ;;
    : l! L( n% `' A6 ]3 s# g
  9943.   (defun reset_lay ()8 Z5 Q) I. _4 |3 `
  9944.     (setq lay-idx old-idx)
    4 Q8 ?4 H$ }+ c% Z
  9945.     (done_dialog 0)
    8 b: v  ~& s+ y* \1 Q
  9946.   )
    ' F: _% g0 N$ ~  P  k/ d1 K5 Y
  9947.   ;;; p2 T1 x" E6 K* w) g7 [
  9948.   ;; Checks validity of thickness from edit box.7 X, j3 A4 E5 P1 K7 ^% W1 _
  9949.   (defun getthickness (value)
    ; {4 T; Y: ~( s; U$ z& M) z
  9950.     (setq ethickness (verify_d "eb_thickness" value ethickness))
    7 d, L, y2 V- c% }% ^& w7 t
  9951.   )7 {5 X( P* t+ _
  9952.   ;;5 _5 O5 T1 M: h: y' Z
  9953.   ;; Copy of (getthickness) for ltscale.  If more, make this function
    9 A/ W* X  v8 `/ ]; R: k4 ]) b" @
  9954.   ;; generic.& ?- n$ q$ d1 h1 O0 r
  9955.   (defun getltscale (value)( B; e/ k& O- w) Z3 b6 [) m% R
  9956.     (setq eltscale (verify_d "eb_ltscale" value eltscale))
    # G' |$ g1 k! v" T! h9 }0 F
  9957.   )4 B) j7 {; d1 p, T: p! U) f
  9958.   ;;
    + k0 C& v  }4 F0 h3 }; ~1 D$ ~' O
  9959.   ;; This function makes a list called laynmlst which consists of all the layer! h8 w3 c; Q( R/ `: R% n7 |3 a& Y8 ]
  9960.   ;; names in the drawing.  It also creates a list called longlist which; p! Q0 u! @( X* Q- `: S
  9961.   ;; consists of strings which contain the layer name, color, linetype, etc.1 N& I: Q, k: M+ p
  9962.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    * O6 O. H' L+ S! Q; ]
  9963.   ;; same.. `. r3 M6 ]; W& G9 K8 w1 M
  9964.   ;;
      B) W6 t) a8 [1 E3 v
  9965.   (defun make_lay_lists (/ layname sortlist name templist layer_number)
    / Q" j& Y8 Q+ Q$ c. G0 n. b
  9966.     (setq sortlist nil)
    2 n* P- i0 W" A+ z; [, ]
  9967.     (setq templist (tblnext "LAYER" T))$ j2 N8 g6 P3 J' K( T
  9968.     (setq layer_number 1)% T5 d/ r8 B$ i& `6 e
  9969.     (while templist6 Q/ c1 r/ ~  J( d* j9 `1 V4 F
  9970.       ;; No xref dependent layers, please.
    + V# }8 E2 [. ?0 n! @
  9971.           (if (/= (logand 16 (cdr (assoc 70 templist))) 16)
    3 b) N& J; [" t. ~8 D
  9972.             (progn
    7 p8 v& `2 R! H0 W3 i! P
  9973.               (setq name (cdr (assoc 2 templist)))0 y( \% x7 S4 Y; X5 u
  9974.           (setq sortlist (cons name sortlist))5 V3 |9 }9 r2 q9 t' Z) J
  9975.         )$ K9 ~# t3 d0 ~& t$ ^3 d/ u
  9976.           )
    4 k2 T& \3 W4 v6 d
  9977.           ; Get the next layer.3 _8 H; a5 F7 n9 S8 a1 @
  9978.       (setq templist (tblnext "LAYER"))2 y8 W' _. {# O: P/ }4 L  _5 l' p
  9979.       ;; Not dead message...
    ; T" g" v. S( g1 Y$ n2 y% L
  9980.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))- }- Y4 C) Z: R0 a
  9981.         (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    , `0 S, D1 j' i4 V
  9982.       )! l& \1 k0 y% ]1 }
  9983.       (setq layer_number (1+ layer_number))
    $ g* R+ M+ `% f; p9 T
  9984.     )- B6 Y) h  Y% m  p; L
  9985.     (set_tile "error" "")$ |. t' x1 O) ?& W7 ]6 Y
  9986.     (if (>= (getvar "maxsort") (length sortlist)): [: L: h7 M, t! d# j* T
  9987.       (progn1 D7 I* q, p; Y: K1 c
  9988.         (if (> layer_number 50)( g! f% o: d- [- U- p
  9989.           (set_tile "error" "Sorting...")
    5 P  U1 v/ d0 `2 ?3 H
  9990.         )
    2 {3 ~1 l) d7 H; _* e5 I% J
  9991.         (setq sortlist (acad_strlsort sortlist))% t9 U& l; c' y1 `# Y8 ~* }+ v5 b
  9992.       )
    " K& P. {/ b, h2 U- H; W; G  \
  9993.       (setq sortlist (reverse sortlist))
    # D, d% j. ?: g
  9994.     )' S0 ?" k- D2 x" V3 Q
  9995.     (set_tile "error" "")
    # S7 x2 H- R$ a" [% i
  9996.     (setq laynmlst sortlist); k8 P) Q% O  s# @
  9997.   )+ x* |9 l$ \, z9 e% P
  9998.   ;;2 V- x- d" F# l/ R6 ~
  9999.   ;; This function makes 2 list - ltnmlst & mdashlist.
      @0 _3 e7 d$ N+ O5 ]
  10000.   ;; Ltnmlst is a list of linetype names read from the symbol table.  Mdashlist
    " I! @% z$ q7 }' n& \
  10001.   ;; is list consisting of lists which define the linetype pattern - numbers
    + J0 |" U  J* S% v( |5 m
  10002.   ;; that indicate dots, dashes, and spaces taken from group code 49.  The list3 d* {" |  F7 Y# v' k0 }
  10003.   ;; corresponds to the order of names in ltnmlst.2 E0 x) l  j/ A$ N3 G/ V
  10004.   ;;2 i7 K# z4 l# {, l+ h* B2 _
  10005.   (defun make_lt_lists (/ ltlist ltname)& z" I- P9 c4 C. o) k' \# m$ u- d
  10006.     (setq mdashlist nil)" D; M2 a: R' w) w( X
  10007.         (setq sortlist nil)
    4 K# U$ I( |5 ]8 @" G+ Q( a
  10008.         (setq ltype_number 1)) Y2 Y/ l( D; M( c, v# p9 O
  10009.     (setq ltlist (tblnext "LTYPE" T))
    " ?7 y  V. N1 {) _
  10010.     ;;(setq ltname (cdr (assoc 2 ltlist)))% I6 {1 y+ ^2 s8 v4 G* C
  10011.     ;;(setq ltnmlst (list ltname))
    ' b- K5 G/ E/ [5 s2 @# R6 E, T* Z
  10012.     (while ltlist- \4 i) h* s% b. K
  10013.           ;; No xref dependent linetypes, please.2 m' r3 ?& Q8 t
  10014.           (if (/= (logand 16 (cdr (assoc 70 ltlist))) 16)* a+ |0 V$ A- B1 u
  10015.             (progn
    6 A  S/ G6 I3 o. [- a3 B
  10016.           (setq ltname (cdr (assoc 2 ltlist)))
    0 _& P( S+ ?5 U- H: e+ T
  10017.           (setq sortlist (cons ltname sortlist))* N9 Q9 z: ^9 c: S% o* n
  10018.             )
    * T, k0 r2 W3 @: E, v8 t
  10019.           )
    ) q0 l6 U; U' P
  10020.           ;; Get the next linetype.5 N2 A! N7 [0 a: n( |. ^
  10021.           (setq ltlist (tblnext "LTYPE")): X( t0 P' {" {6 ^& n3 a

  10022. 4 d: \0 \! N4 Q6 u3 ?6 N" P
  10023.           ;; Not dead message...  x9 E* R3 T0 @+ ~
  10024.       (if (= (/ ltype_number 50.0) (fix (/ ltype_number 50.0)))( _# P5 D4 x) f! \% _9 H( |
  10025.         (set_tile "error" (strcat "Collecting..." (itoa ltype_number)))4 V9 a; h/ h2 r* M1 o3 y& s
  10026.       )( a) F# z" ~, l0 X* Z- X
  10027.       (setq ltype_number (1+ ltype_number))
    , i/ c+ D# i, ]4 q/ X
  10028. 6 T, o) o$ T. o- @  g
  10029.     )( X  _. e4 z" Z

  10030. 5 R* y0 G( v8 l7 Z
  10031.         ;; Remove Collecting message.
    + |. v4 f0 ]; l% L* E  h
  10032.         (set_tile "error" "")
    & F1 x1 v* V" N
  10033. & U2 _* ?3 D% k. [
  10034.     ;; Sort based on maxsort.
    3 I/ ^( i. P- q
  10035.         (if (>= (getvar "maxsort") (length sortlist)), w7 c* d, q" o2 l  e) ]
  10036.       (progn
    1 E' Y- ?1 O& x8 W3 m( O4 q2 L- _
  10037.         (if (> ltype_number 50)
    ( s- Z* a" N2 {' O3 f
  10038.           (set_tile "error" "Sorting...")
      Y4 T9 `, \; L; H, w# m5 T# s# T4 l
  10039.         )
    8 L6 j3 W8 C8 d9 L
  10040.         (setq sortlist (acad_strlsort sortlist))
    - H- {; J( X' Q: Z3 L
  10041.       )! ^: R+ `) F5 |: U" d7 l$ `( K
  10042.       (setq sortlist (reverse sortlist))6 M6 B- h2 N0 T: y! `8 P3 {
  10043.     )1 W- [1 r: R, k" b
  10044.     (set_tile "error" "")( U5 G; C( \* i; o" D
  10045.     (setq ltnmlst sortlist)
    % Z, R  c& J1 Y. |' P) d$ U
  10046. 5 n: f' n: M3 t7 j- k; W9 g7 ?
  10047.     (foreach ltname ltnmlst
    ! h( \7 F3 W  C. w) ?, I
  10048.       (setq ltlist (tblsearch "LTYPE" ltname))
    # W) g8 B6 X3 E/ X8 o2 V% r
  10049.       (if (= ltname "CONTINUOUS")
    & R, r% I  x4 Q
  10050.         (setq mdashlist (append mdashlist (list "CONT")))0 S" q8 D1 s& r& R# D) @
  10051.         (setq mdashlist
    . c8 d1 g% @7 L5 F' z) }2 s; r
  10052.             (append mdashlist (list (add_mdash ltlist))); x+ N# s$ E( b) H" p4 W
  10053.         )5 M" ]5 f1 D# q: D- F
  10054.       )
    . f% D6 f- ~% \2 O! @
  10055.     )' P2 [. N! D! E$ d7 I5 Y
  10056.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    9 q  Q# a: O& \- X
  10057.     (setq mdashlist  (cons nil mdashlist)): D0 }( a- b$ V- A* M7 d
  10058.     (setq ltnmlst (cons "BYLAYER" ltnmlst))( k: S7 B. l& t1 @
  10059.     (setq mdashlist  (cons nil mdashlist))
    0 n, Y" C- _( D$ M1 b% p
  10060.   )
    3 M; N1 k1 `8 Q  T/ E! n. W' p
  10061.   ;;4 y' V6 t& @- Z5 W0 C2 J
  10062.   ;; Get all the group code 49 values for a linetype and put them in a list
    : N; V9 D  `0 S- H; p
  10063.   ;; (pen-up, pen-down info).
    9 s" }5 Y! K1 R; K- b
  10064.   ;;! Y% O/ e) @8 Y/ Y/ i
  10065.   (defun add_mdash (ltlist1 / dashlist assoclist dashsize)! g# J8 h0 x; ]/ E7 ~
  10066.     (setq dashlist nil)6 K" x* @0 {: F8 S8 J. e
  10067.     (while (setq assoclist (car ltlist1))
    % P2 `! n3 a, y" |- V2 U  P) e
  10068.       (if (= (car assoclist) 49)- [9 H) `8 z& R# k+ K
  10069.         (progn8 _( H0 a8 ~7 z- Y* l3 v% N" k
  10070.           (setq dashsize (cdr assoclist))' _5 _( ^# ], q0 Y9 F" W2 B4 @, f/ p
  10071.           (setq dashlist (cons dashsize dashlist))
    - b8 g; b5 ]# G  w4 F! A
  10072.         )* C- j7 T$ T& M- x& x. q2 E& }8 d$ N
  10073.       ); t. ~1 F* n" a# {" j$ N
  10074.       (setq ltlist1 (cdr ltlist1))8 N$ V5 }( M& |% G" J9 M; _
  10075.     )" _' `1 A3 F4 T* B  O
  10076.     (setq dashlist (reverse dashlist))
    6 h3 G+ M. w( _2 |- ]7 J
  10077.   )
      E! [- i9 c% U9 s/ m, ^5 g. L2 G
  10078.   ;;) g/ L9 Z4 I7 K& f; `
  10079.   ;; Color a tile, draw linetype, and draw a border around it8 K; z; z. T0 B1 c6 V! @* C4 C: D7 j$ N
  10080.   ;;
    : h1 }; H$ t0 r- J( Z- F* h
  10081.   (defun col_tile (tile color patlist / x y)
    - {  O8 L2 s' G& A- a9 y
  10082.     (setq x (dimx_tile tile))
    3 Q$ h& b. ~( l  ]
  10083.     (setq y (dimy_tile tile))
    9 j6 i0 d5 s9 o. Z) w
  10084.     (start_image tile)
    0 a* e" ~, `) R0 f7 S
  10085.     (fill_image 0 0 x y color)0 y, V+ u. H- g
  10086.     (if (= color 7)
    # V. n" E, G# h: U: ?3 @( f+ @
  10087.       (progn! i) M9 d( v" g# s: m1 b3 |
  10088.         (if patlist (drawpattern x (/ y 2) patlist 0))7 O' r6 l% I- z" b% d2 |. M
  10089.         (tile_rect 0 0 x y 0)
    1 p8 z+ b4 q3 W. z* B6 o
  10090.       )
    % g" u# `$ h- }/ x7 s- u) S
  10091.       (progn
    , ^# u$ g  i+ ^+ s- t, R) x' H
  10092.         (if patlist (drawpattern x (/ y 2) patlist 7))
    7 B0 y% Q0 o; ^# S" r) z
  10093.         (tile_rect 0 0 x y 7)  Y- Y) n% V% g5 t. W
  10094.       )
    6 Y6 @8 o- O+ O- ^
  10095.     ), q& Q+ B2 t/ o+ T: w& R; v
  10096.     (end_image)
    $ i9 l8 v1 @- ~3 B2 |8 Y( n3 ?9 B4 J
  10097.   )
    # w) D) B4 |4 w6 y" Y  H% u
  10098.   ;;
    2 m* ]+ J* @2 C; `
  10099.   ;; Draw a border around a tile. T6 k- |2 ~& a6 n' J
  10100.   ;;. y  [/ w" e6 w" a* A3 L( J+ ~
  10101.   (defun tile_rect (x1 y1 x2 y2 color)
    , o: |: p# S, A5 C7 V/ B2 a6 w9 x# C
  10102.     (setq x2 (- x2 1))7 G& Z8 a" K& T, O" D
  10103.     (setq y2 (- y2 1))( X2 u2 H6 D) j0 A
  10104.     (vector_image x1 y1 x2 y1 color)/ i; {! a. K9 F3 S' K4 @$ ~. q
  10105.     (vector_image x2 y1 x2 y2 color)$ I  b. C  X0 X: b& L1 A+ N* p3 ^
  10106.     (vector_image x2 y2 x1 y2 color): d- @4 ?. C' _, w! k0 Z2 \/ H. K
  10107.     (vector_image x1 y2 x1 y1 color)' n% X4 I& A# D
  10108.   )8 ]7 P- n9 j+ `. K
  10109.   ;;
    & l6 k0 D8 I3 z* B4 k" i  s' k
  10110.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image$ b0 g7 K2 K6 b0 `& K
  10111.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a5 Z4 ], Z9 j* @& f9 Q
  10112.   ;; list of numbers that define the linetype, and color is the color of the
    4 K% X2 G2 K0 f6 F
  10113.   ;; tile.
    ( J* L# f# j3 U/ O/ D% O: i. W
  10114.   ;;! f1 U0 c& V; E5 N8 Q+ S2 I/ e
  10115.   (defun drawpattern (boxlength y2 pattern color / x1 x2
      m" Z# s2 h4 Q1 Q0 n
  10116.                       patlist dash)5 A/ O$ I& I1 H
  10117.     (setq x1 0 x2 0)# Z7 u1 V; V  ?" u; R, f1 ?
  10118.     (setq patlist pattern)2 u# n& N3 C) R- u2 C" |
  10119.     (setq fx 30)) K2 O2 D: }" M' ]0 P
  10120.     (if (= patlist "CONT")
    ! a; t2 o# B+ `9 N
  10121.       (progn (setq dash boxlength)* }% I' q7 f  Y: C7 g
  10122.         (vi)
      C! D2 z. f; O/ b% c! j
  10123.         (setq x1 boxlength)
    ' O; O! H$ G. g0 p
  10124.       )
    4 ~; R) O* y0 r! m9 [/ \: a, m$ p
  10125.       (foreach dash patlist
    ' Z% ^( F' r$ n4 B5 v
  10126.         (if (> (abs dash) 2.5)5 k. c7 |+ a: B( _  K
  10127.           (setq fx 2)
    2 p# Q6 g: Y. x4 b9 r0 }
  10128.         )% K/ P" ^: ~1 V, g' y
  10129.       )9 R7 a- J' p2 p" [3 U, o" E( B4 V7 ?
  10130.     )
    " }' M1 B1 \/ y/ p1 l
  10131.     (while (< x1 boxlength)
    ; c; c# y. A( Q) n
  10132.       (if (setq dash (car patlist))1 ]6 b- F; r/ f: A
  10133.         (progn
    ' a/ Y( `2 n2 c( Z7 z
  10134.           (setq dash (fix (* fx dash)))
    + h. v/ b, y3 h) c9 s
  10135.           (cond. P9 z2 a- n. j
  10136.             ((= dash 0) (setq dash 1) (vi))) d6 h2 q7 [" Y3 j9 a, a
  10137.             ((> dash 0) (vi))- w4 O0 r9 m; C. Y
  10138.             (T( [9 J" C/ s$ {2 B
  10139.               (if (< (abs dash) 2)
    9 a7 x" [  a$ d" B% h
  10140.                (setq dash 2)( O# ~4 U4 v, ]3 ^" e8 T6 \" Z- F
  10141.               )2 z: q2 ^; p1 c% g) S
  10142.               (setq x2 (+ x2 (abs dash)))
    + h9 H' q; J5 i5 ~, D) ^; n+ ^
  10143.             )
    7 A, d) O  l& G, l" y+ P2 j
  10144.           )
    ! G( y; p8 C3 N$ ^
  10145.           (setq patlist (cdr patlist))! j! Q4 E: K; ^0 @1 n# c5 S
  10146.           (setq x1 x2)
    0 s3 V* K5 e! @# S  Y  [
  10147.         )2 ~$ P; q/ w" U2 J. w+ w
  10148.         (setq patlist pattern), X% Q  H# F. y0 N
  10149.       )8 T- M  L$ m/ d' w7 K1 e
  10150.     )
    / T& P" J0 I. L- z5 r1 A1 \
  10151.   )
    3 S9 n' _) |, a8 E/ G7 j3 V3 ]5 ~
  10152.   ;;
    ( G5 s( Q3 @& B
  10153.   ;; Determain state of xclip' R4 G' b, G  S) z
  10154.   ;; Returns the group 71 value of the spacial filter dictionary.+ P6 H3 a+ [7 b0 u- V
  10155.   ;; If the entity doesn't have a spacial filter dictionary, this
    % Q+ t/ |& l' ^, z! M# p, }% n/ K
  10156.   ;; returns 0. If it does it will return 0 or 1 depending on the4 O! S3 B$ \8 X) B+ c
  10157.   ;; current setting of the state of the clipping visibility.
    . Z# w" A: n+ K
  10158.   ;;
    4 H5 {1 c& T$ V" |
  10159.   (defun xclipon(elist)- \% z6 d% F1 _4 L! A+ L6 g1 g% B
  10160.     (setq hasclip T)
      i) U+ I* Y# \  n) K4 r8 M% n
  10161.     (if (/= (assoc 360 elist) nil)$ ]& K9 ?; h! e
  10162.       (progn
    0 t6 ~% x( c0 @0 J/ p5 z4 X
  10163.         (setq tmp (entget(cdr(assoc 360 elist))))
    * ~) q* N7 L) E6 F, {# Q
  10164.         (if (/= nil (assoc 360 tmp))
    " k" ^( \, [) ?5 }9 d2 N  ^
  10165.           (progn4 M5 `" h0 q% [
  10166.             (setq tmp (entget(cdr(assoc 360 tmp))))
    0 j1 Y* Y* B, N/ E  p) w
  10167.             (if (/= nil (assoc 360 tmp))
    * [9 S" _* y. r4 E* y
  10168.               (progn0 @2 g. D/ i7 r! r: ]7 c  `$ }0 q
  10169.                 (setq tmp (entget(cdr(assoc 360 tmp))))" n; l# t0 @9 u' M7 L7 c2 i3 Y
  10170.                 (if (/= nil (assoc 71 tmp))
    1 c; L/ S0 U% L9 z9 r4 U
  10171.                   (cdr(assoc 71 tmp))) o; z! M, I% S, j! L
  10172.                                   (progn
    : h& M! D1 ^( h. B9 }) D
  10173.                                         (setq hasclip nil)
    ( T" K  o3 c2 V( R
  10174.                                         (eval 0)" }' s- }2 [* L1 M# |. q
  10175.                                   )
    6 P6 z% C  e1 o! l/ E% i
  10176.                 )
    1 y( D& G+ M+ x' T' D. G. l
  10177.               )5 r7 v0 a; C' z1 a* G* j% u3 ?  H
  10178.                           (progn & r- y7 k6 E" |! s9 b' K
  10179.                                 (setq hasclip nil)
    1 a$ J; Z" \- V, d! E- R' N
  10180.                                 (eval 0)
    5 D9 S9 W9 n# p  J
  10181.                           )! Q2 I) A4 r; \0 S
  10182.             )2 v* [" D/ A! X6 G
  10183.           ), s" t  L0 j& L+ p% V% H8 @3 z  W
  10184.                   (progn 5 ?$ i' E9 k9 R% O* s: p  ~- M
  10185.                         (setq hasclip nil)9 J2 r- n2 V$ z0 Q( i; T
  10186.                         (eval 0)
    ! V. w3 t, X3 S; [* Q; U
  10187.                   )
    * ^: D* P5 f+ i: d0 x! r) P
  10188.         )9 }% z2 C; ]2 Z1 C" B
  10189.       )1 K; }2 q2 s1 H; S- b+ L% s/ ^/ v
  10190.           (progn
    7 U# u: I+ ]- K) {5 N. w% `
  10191.                 (setq hasclip nil)3 e8 \& v  \0 ^" g( F+ Z# l
  10192.                 (eval 0)
    2 m8 S- N- y& i
  10193.           )
    ' R: E) Y+ F0 O% S2 N3 `9 |
  10194.     ): {$ d8 r& Y" I4 ^
  10195.   )- h4 C8 J& d! U8 z: }3 H
  10196.   ;;
    0 I7 z! s" o. _, ?  ?
  10197.   ;; Draw a dash or dot in image tile
    & P# q# Z% G* |* n' v) r, ?
  10198.   ;;
    / A3 i; D! G- E3 h
  10199.   (defun vi ()" H5 I- }. H$ Q0 _4 o9 q
  10200.     (setq x2 (+ x2 dash))
    # P4 l2 Z/ G* l9 @' I
  10201.     (vector_image x1 y2 x2 y2 color)
    7 P( U$ }8 y! ?7 c( \
  10202.   )
    + E6 H! I" n& s% b
  10203.   ;;
    1 o( @" |' h8 W4 L7 h% c0 P
  10204.   ;; If an item is a member of the list, then return its index number, else3 F/ M) K. [, X8 [' K2 B- k7 V1 P
  10205.   ;; return nil.
    6 G4 w+ e* q, l9 w
  10206.   ;;) f% H0 ]* q0 t4 \6 S
  10207.   (defun getindex (item itemlist / m n)/ O' F1 s" b! C$ h+ G2 j4 X+ x
  10208.     (setq n (length itemlist))9 L7 |3 M  y8 ?8 C9 d
  10209.     (if (> (setq m (length (member item itemlist))) 0)
    / ]% ]+ ?6 z1 P  Y0 F  E+ p  d
  10210.       (- n m)- a" j* `  D/ [" r- v# s
  10211.       nil. `- A& t0 j4 u. [# b
  10212.     )6 s0 G3 v8 H+ }2 _. M5 q0 |+ d
  10213.   )) R0 O6 R: Y1 A0 j. S# D$ B. @6 d
  10214.   ;;) n8 ~+ H  c& h% T6 M
  10215.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    8 w( @- v; k" X5 g  I7 o( i, B8 Q* E
  10216.   ;; ltype of the layer so it can be displayed  beside the linetype button.
    3 d: O$ }) o4 M! T8 |. f
  10217.   ;;
    ( [. Y2 k4 S: E! P2 \' a
  10218.   (defun bylayer_lt (/ layname layinfo ltype)7 B9 z" R* {, _: l/ o
  10219.     (if lay-idx
    3 @1 t: g6 T2 |6 n
  10220.       (progn! @1 E- y! q* W) v4 O
  10221.         (setq layname (nth lay-idx laynmlst))
      }( S" J' }! {( j! u6 I; J
  10222.         (setq layinfo (tblsearch "layer" layname)). i" M9 b0 G0 `' X( B, g
  10223.         (setq ltype (cdr (assoc 6 layinfo)))
    8 `2 c  m  T% Q8 I$ ]
  10224.         "BYLAYER"' t; N! Q" b8 a" A: }* z
  10225.       )1 L; E5 B8 O4 g3 }+ V
  10226.       "BYLAYER"
    % ]: A# S" X8 ?" o
  10227.     )8 k- z7 n8 Q. j# w: p
  10228.   )
    ! x7 F- }. i5 U7 C6 v
  10229.   ;;
    / G; h  Y# k& ^/ V% F
  10230.   ;; This function is called if the color is set "BYLAYER".  It finds the color. L, j( e7 v  ^3 f, W2 ~! f
  10231.   ;; of the layer so it can be displayed beside the color button.7 d" b  P: N8 b# d/ F- L
  10232.   ;;
    ) _7 i. Q4 E+ O/ R
  10233.   (defun bylayer_col (/ layname layinfo color)
    / X. K9 Q/ Y0 i% q- I& X
  10234.     (setq layinfo (tblsearch "layer" elayer))
    + R4 L& x, v8 u( h7 ~( K
  10235.     (setq color (abs (cdr (assoc 62 layinfo))))2 K' V, r9 N" I2 g) |4 ?
  10236.   )
    - h) n. h  S4 R
  10237.   ;;
    9 m- W+ X7 k* U4 M5 v
  10238.   ;; Used to set the color name in layer subdialogue.
    % r2 y2 \" |/ |! r/ \
  10239.   ;;3 g% \7 n3 e  }! U" L
  10240.   (defun colorname (colnum / cn)6 X6 p3 j' h5 J2 v. X2 M
  10241.     (setq cn (abs colnum)): M3 R* Y1 E6 B2 L2 y* i9 s& j
  10242.     (cond ((= cn 1) "red")9 i* B, q$ B4 u, J8 x! J7 s
  10243.           ((= cn 2) "yellow")& |& m0 Z3 X+ Y% n* F0 n2 u/ P
  10244.           ((= cn 3) "green")
    , z- I% d/ I+ F3 q& j9 r
  10245.           ((= cn 4) "cyan")
    2 k  F; L8 D; y4 q
  10246.           ((= cn 5) "blue")  L, t" P1 U' p5 M1 m8 O) L: e1 ]
  10247.           ((= cn 6) "magenta"), C5 Y4 E0 K+ y
  10248.           ((= cn 7) "white"), q# a; l, |" u; R! q9 q/ k) Z' d' k9 y
  10249.           (T (itoa cn))) j& `  ~" t4 @' n, Z2 C
  10250.     )
    1 w3 n, I4 g! @" p7 Q% ^
  10251.   )
    : i0 C6 f8 t! p  v
  10252.   ;;$ p" O$ S' l# Y8 l& c$ t* j# \
  10253.   ;; If their is no error message, then close the dialogue.
    * m, h' g' V% f3 ~- L+ s
  10254.   ;;, z# \3 L" m" s4 W+ w9 p7 u
  10255.   (defun dismiss_dialog (action)) T) l2 Y7 o( O+ \# ]
  10256.     (if (= action 0)0 ]7 L$ y. k) O, {. g, h
  10257.       (done_dialog 0)
    6 R& w. ^- ^# x& {
  10258.       (if (= (get_tile "error") "")
    / f* {$ Y/ [3 S! T5 D. k
  10259.         (done_dialog action)
    ' i& P* e1 h0 Z5 a  l9 P1 z! P
  10260.       )6 [( ^7 E4 H! C# G9 D# L
  10261.     )
    / O( F$ v( m) |( V0 E
  10262.   )" M6 M( f" T6 ~$ D0 n
  10263. # Q" m$ t+ a7 P  X  H0 L
  10264.   (defun test_ok ()& {7 J1 D% v, {) ]2 E: b" n- n
  10265.     (if (= (get_tile "error") "")# B% `8 f. e+ s& ?1 W  {4 x4 T' @
  10266.       (done_dialog 1): @, |& f% j- Z$ Z
  10267.     )# L" _2 b3 z( R6 w
  10268.   )% T3 V  t6 L8 z  `& h0 W9 s; g
  10269. & H0 b* }1 a2 f+ M$ Y) ]
  10270.   (defun cancel ()  F# }7 B# C: r' x8 K6 _0 m9 @
  10271.     (done_dialog 0)
    9 I+ B5 H- u: ?4 ]4 K  c4 M, H1 L
  10272.   )
    7 p$ Z/ G7 ^: D+ C: r. r( |3 U

  10273. 5 t0 T, w% D& L3 g$ a
  10274. ;;; =======================================================================
    * c0 s4 g! z5 I& M2 B0 i- t
  10275. ;;; SETUP layer and linetype lists for application, and initialize all
    ! `. V5 ^8 U2 i: h
  10276. ;;; program variables.6 M% ?  O! _, N+ ?9 p$ X* z3 K( H

  10277. # O8 {5 f! Q3 m" C) j' w2 m* T
  10278.   (setq elist       (entget ename)" g9 [' U' Y4 z3 I* e6 O
  10279.         old-elist   elist1 Z3 k/ F1 J( ]7 R0 ^1 Y8 }* K
  10280.         modlist     elist; \# p$ e2 j9 ^( h- S- z
  10281.         etype       (strcase (cdr (assoc 0 elist)))
      G2 T' Y5 `( N( y0 O+ O. o
  10282.         ecolor      (cdr (assoc 62 elist))* p$ m- `+ M0 J. e  m  r# D
  10283.         elayer      (cdr (assoc 8 elist))$ L. u2 B$ \- F/ I
  10284.         eltscale    (cdr (assoc 48 elist))' T* `$ O# F* s- O2 m9 h
  10285.         ethickness  (cdr (assoc 39 elist))9 ~! x; k- H& B' q2 M6 V2 Y
  10286.         eltype      (cdr (assoc 6 elist))% E; b6 l9 [% O* H7 A
  10287.   )$ _# z' u, L! v
  10288.   (if (= (assoc 210 elist) nil)+ x8 d5 m2 w  W4 C
  10289.     (setq extru (list 0.0 0.0 1.0))- z$ E1 J. n' O- o% _
  10290.     (setq extru (cdr (assoc 210 elist)))
      }, K; c7 e6 e$ W5 D+ z
  10291.   )
    * J; i8 Y$ @, e9 Y- P6 Q( N1 P

  10292. 7 y5 W+ K- s. G: C7 j
  10293.   (if (not ecolor) (setq ecolor 256))
    + u$ X/ u# z0 |% Q$ {5 O" S! t/ l/ o
  10294.   (if (not eltype) (setq eltype "BYLAYER"))
    1 ~4 d* F5 B/ J& m  C
  10295.   (if (not ethickness) (setq ethickness 0))
    3 o; t  J- W3 i: Y3 B1 r: ]
  10296.   (if (not eltscale) (setq eltscale 1))+ ]: r) C- e0 d9 `
  10297. ) ; end ddmodify_init
    , T5 W2 h( j! W! F- p' L" w$ x

  10298. - @6 P2 `" z# X2 ^+ F4 q. D( `
  10299. ;;; --------------------------------------------------------------------------
    8 |" j3 m. W/ b; \, S2 ~; [/ j
  10300. ;;; Function: DDMODIFY_SELECT& V* l* w# i) B& V- z
  10301. ;;;% T0 B. W' i  R5 R# M
  10302. ;;; Object aquisition function.
    . X. h, z  T( e. ]
  10303. ;;;
    * l3 r1 {& [6 R) Y& p
  10304. ;;; (ddmodify_select): R# K/ J  o" q# Q8 V
  10305. ;;;
    . p/ k1 n6 d2 m6 e" G. g' `
  10306. ;;; Obtains object to be modified, in one of three ways:8 _5 D( b& z. ^, |* ?
  10307. ;;;% D( L6 W& ^+ Y2 d9 F+ o6 A2 j
  10308. ;;;   1 - Autoselected.
    . [1 w) }$ ?8 F/ |# h4 D$ V" ]$ Y4 h
  10309. ;;;   2 - Prompted for.6 l  }/ [/ S9 e' C; ]
  10310. ;;;   3 - Passed as an argument in a call to (ddmodify <ename> ); U0 ~( l5 `. I8 e
  10311. ;;;
    . t! r$ R2 ^% K% d7 w* u
  10312. ;;; The (ddmodify_select) function also sets the value of the% O* f% J  b+ i8 V  y  d
  10313. ;;; global symbol AI_SELTYPE to one of the above three values to
    + D4 Q: v: \% [
  10314. ;;; indicate the method thru which the object was aquired.* U4 u! i# J9 `! S% e# e: L( g0 P
  10315. ;;;
    5 c; V2 X+ t% p, A
  10316. ;;; This value can be useful to applications that want to RESTORE% f/ @: T+ r$ R+ V
  10317. ;;; an object that was autoselected to its previous selected state+ s6 d: R. G* w/ @5 A; c
  10318. ;;; when they terminate, although there doesn't appear to be any
    5 C6 M$ O7 _) \% W& d) ]4 C
  10319. ;;; way to do this right now.
    7 W6 {" O; h6 {3 K

  10320. / z0 m& g: G% S8 b
  10321. (defun ddmodify_select ()
    3 j( k& U/ `" ~. O
  10322.    (cond
    ! I/ ~( @4 E$ y, B  {- ?8 `: ]
  10323.       (  ename                             ; (ddmodify) was called
    & H7 R3 k; l6 E
  10324.          (cond                             ; with an <ename> argument3 v0 r' d* O& p) H9 _
  10325.             (  (entget ename)              ;   If object is non-deleted
    " g: y) m+ q" }" b: n% r" A
  10326.                (setq ai_seltype 3)         ;   then return its ename.7 P* {$ O* E' r
  10327.                (ai_return ename))))
    ' ?. ?# l! u0 s, ^- t' u! w+ r( ?. |7 b9 }
  10328. - ~* p/ d  g# T7 S' W8 ]" c
  10329.       ;; return auto-selected , see ai_utils.lsp
    ! U% G9 U0 V$ G
  10330.       (  (ai_autossget1 "\nSelect one object to modify: "))& t3 ]9 p; g( z) L# v& D5 N
  10331. ! T5 n& K$ f2 x( G( K
  10332.       (t (princ "\nNothing selected.")  g3 f) K6 T- o' f
  10333.          (ai_return nil))3 j1 I1 x2 K0 }( {3 q% |' `( b2 W
  10334.    )
      {- R. d6 `6 y, z% m1 t
  10335. )
    & R( V3 j* J& j+ l
  10336. 0 u2 K$ e$ [! K* t% `. ?
  10337. ;;; ============= Command line interface function =======================& o' U2 @, z$ P6 t
  10338. . o/ _. u6 n5 W7 u0 G) o% p
  10339. (defun C:MMO ()8 k5 k( g9 f1 K* g( w! _
  10340.    (ddmodify nil)3 k9 W* [) x3 Y. H% U4 }+ S; L+ _
  10341.    (princ)
    + \7 t0 f2 g) j+ F
  10342. )
      h; K' L! E8 j

  10343. 0 J" m0 U* Y7 c% J1 X4 Z+ b& c
  10344. ;;; ================== (ddmodify) - Main program ========================
    " t. {$ r! \' q1 S3 P
  10345. ;;;" x% u$ {4 e  q
  10346. ;;; (ddmodify <ename> )  e( q+ i+ ]% V) [! }9 G, h
  10347. ;;;! M- F/ P4 S  h1 o" [- f, P  G
  10348. ;;; Main program function, callable as a subroutine.
    - l" d) Q  K  n8 F. {3 _+ _
  10349. ;;;
    : U; d( ?0 O5 F" R+ B+ _
  10350. ;;; <ename> = object name of the object to modify.2 ^& r) e) b) D$ D
  10351. ;;;& [6 u4 P; W3 _; |" t" _
  10352. ;;; If <ename> is nil, then user is prompted to select
    - c; ]6 S' [) Q* x' b
  10353. ;;; the object interactively.0 B; H  {! ^+ D$ p8 P( P* l
  10354. ;;;
    ; U0 \4 w$ z8 H, b. j/ O* w
  10355. ;;; Before (ddmodify) can be called as a subroutine, it must
    # N: e# i* i* P6 O
  10356. ;;; be loaded first.  It is up to the calling application to
    % P- H: }, m& X" N
  10357. ;;; first determine this, and load it if necessary.
    3 {3 ?% _4 R2 f; Q4 T
  10358. , ]7 B( u3 a% ?5 `

  10359. ( s, {  R3 X9 V$ v& Q( M
  10360. (defun ddmodify (ename /
    ( D/ L8 e+ p4 B: Q' d
  10361. 2ndpt              ell_calc_area            move_pt1               templist
    2 x/ k" M' F$ g+ i
  10362. add_mdash          ell_tile                 n                      tempmod
    ' ?7 a7 l! C: _+ |7 G
  10363. alipt              eltscale                 name                   tempst_ang  _5 ^) R8 i3 D6 ]/ A
  10364. ang                eltype                   newpoint               test_ok1 A8 J! F+ O$ t2 b
  10365. arc_calc           emod                     next                   text/ q; [) m4 K# J" O7 B1 H1 Q
  10366. arclen             end_ang                  next_vertex            th-value
    ! t, U9 j0 S0 O/ P" \
  10367. assoclist          endpt                    obl                    tile
    6 _' }" r9 z3 P' {; @  T4 n/ a
  10368. atprompt           errchk                   off                    tile_rect5 Y5 ^1 }( W$ w7 j2 ], V
  10369. attag              ethickness               old_majrad             tilemode0 r- m% L8 V" \
  10370. attprompt          etype                    old-closed             totang" G) z6 X, i! D1 X$ ]; u( R
  10371. bit                extru                    old-closedm            tstyle
    3 X+ q* M0 _) E- s* T
  10372. bit1               fchk                     old-closedn            u
    ' L# U1 T( _; G3 \1 }
  10373. bit-10             first-10-rec             old-elist              undo_init
    5 X3 G! J- ^7 B% W) E
  10374. bit-11             first-10-time            olderr                 upsd
    + L# g, q% p6 C8 z
  10375. bit2               first-11-rec             old-fit                v! U4 F( b4 N; d3 u5 G0 W& |
  10376. bit3               first-11-time            old-idx                va
    $ k* e0 N- H6 q, D* c& X. G1 V6 g* Z
  10377. bit4               fit                      oldlist                value7 Q- r' {: I9 N$ F7 g4 q2 J
  10378. bit70              frozth                   old-spltype            ver_4
    1 r8 Y4 J) Y3 t; S
  10379. bit-70             f-vis                    old-u                  ver_ang1, C' g9 P6 A% x! L
  10380. bit75              fx                       old-v                  ver_ang29 _( T% A5 |/ J0 k, s+ R
  10381. bk-up              get_color                on                     ver_col
    7 d1 }% [% v2 E
  10382. bkwd               getcolor                 onoff                  ver_colsp
    ( R7 Z) `. C. A! P
  10383. boxlength          getindex                 on-off                 ver_eangle2 w0 d1 T! }+ l: o2 Y: p
  10384. bylayer_col        getlayer                 patlist                ver_hght
    0 M: }; T5 A' i) J0 [) n0 x* ~8 q
  10385. bylayer_lt         getltype                 pattern                ver_majrad: ^  T: \# H! x9 x
  10386. calc               getthickness             pltype                 ver_obl9 \6 ?. A# F' u6 J( F
  10387. cancel             globals                  polytype               ver_pt16 w9 ^( _7 p" n- y# J2 ^  O1 h0 x4 B
  10388. cir_calc           ha                       pre                    ver_pt2
    - e5 U# g" d0 h9 X$ }
  10389. closed             ha-prev                  proplist               ver_pt3* t# Z/ S- D6 f# |4 ]
  10390. closedm            help_entry               pt                     ver_pt4% O7 n4 |: {- P. C$ {8 [
  10391. closedn            hght                     pt1                    ver_rad: m: Y5 R7 l' s4 \
  10392. cmd                icvp                     pt1_eq_pt2             ver_rot% ]' `/ f$ h" w" G6 L
  10393. cn                 image_add_vector         pt2                    ver_row
    5 r2 h& N" o# B$ f6 v% a
  10394. cname              image_clean_variables    pt3                    ver_rowsp
    ; f  l7 B8 Z9 h# i' E
  10395. cntl-pt-indicator  image_cross_product      pt4                    ver_tag+ C- c" J( |1 b! p' ?8 c8 r
  10396. code_71            image_disp_opt           ptype                  ver_u
    0 f/ s; G5 U, \
  10397. col_tile           image_dot_product        radius                 ver_v1 I+ T. c) I0 ]4 b9 q! B5 q7 ^
  10398. col-idx            image_normalize_vector   rational_spl_flag      ver_wid6 m1 B; Z7 X0 \# E. H: T2 u: K
  10399. colname            image_rotate_vector      reset                  ver_x1
    ! L$ i$ H# T3 k9 [; A
  10400. colnmlst           image_scale              reset_flag             ver_x23 v( N/ l( r2 }7 ]% e! C
  10401. colnolst           image_scale_vector       reset_lay              ver_x3
    ( k& t& d4 E; E" Q) t7 z
  10402. colnum             image_update             reset_lt               ver_x4
    " m" E& e% C' z/ b
  10403. color              index                    reset_uv               ver_xline_pt1" u' Y# _5 s$ H, k# G2 H; p
  10404. colorname          inv                      rot                    ver_xline_pt2
    4 T( _8 @# u3 @! f6 f3 m' X0 z) s
  10405. colorno            item                     rows                   ver_xline_x1
    $ k: s; K8 \3 J; E  `% `  g3 N5 o5 F1 Y
  10406. col-sp             item1                    row-sp                 ver_xline_x2
    9 d& n) T6 H, H( R. R* ^* y2 W
  10407. columns            item2                    rrat                   ver_xline_y1
    ( D$ a6 M0 N! F: V, S
  10408. con                itemlist                 s                      ver_xline_y2. x! [& b5 g3 Q7 W; }
  10409. coord              jlist                    set_action_tiles       ver_xline_z1  ~. n, L: e/ l# E$ b& T/ a9 P1 r5 _
  10410. ctr                jlist_act                set_just_idx           ver_xline_z2
    6 d* A# E  j  b' y" B8 s
  10411. cur-10-rec         just-idx                 set_tile_bk-up         ver_xscl8 s* Y9 C5 V2 E4 N" q
  10412. cur-11-rec         layedit_act              set_tile_cntl_pt       ver_y1' `/ G, N- R& l( N* m- X3 w/ J
  10413. cvpname            lay-idx                  set_tile_data_pt       ver_y2' J3 \' f, G0 u2 e
  10414. dash               layinfo                  set_tile_dirv          ver_y3
    5 Y% o! S$ G0 N
  10415. dashdata           laylist                  set_tile_edges         ver_y4+ x- |$ ?. i5 W
  10416. dashlist           laylist_act              set_tile_endang        ver_yscl8 [3 C3 Y& L! B' \8 C
  10417. dashsize           layname                  set_tile_hght          ver_z1
    . J* ~+ ^/ Z5 ]4 H- `2 s
  10418. data-pt-indicator  laynmlst                 set_tile_icvp          ver_z2
    9 z6 k9 P1 p% a' |7 h
  10419. dcl_id             layvalue                 set_tile_just          ver_z3" G6 ~2 e! k5 Q+ a
  10420. dd3dface           line_calc                set_tile_obl           ver_zscl
    - ]! B! I; r9 a( S
  10421. dd3dsolid          linetype                 set_tile_prompt        verify_a+ c0 z0 A! [/ \, c. s. c
  10422. ddarc              list1                    set_tile_props         verify_d
    4 c# A- c; j& [5 f% M' V0 m' L6 R
  10423. ddblock            longlist                 set_tile_pt1           verify_i5 E1 r# E, l, b/ T* r
  10424. ddbody             ltabstr                  set_tile_pt2           verify_xline: j7 ]5 W1 y4 l9 e. z
  10425. ddcircle           ltedit_act               set_tile_pt3           vfy
    # g- C/ v6 e( }1 ?0 c1 K9 [5 `
  10426. ddellipse          ltidx                    set_tile_pt4           vi' H% D5 M" W( b% k# O) {2 \
  10427. ddgetprompt        lt-idx                   set_tile_rad           vlist+ t- X7 z+ |" J" Y+ R% }8 e- j# c, ?
  10428. ddgettext          ltlist                   set_tile_rc            vname
    5 V2 w' j6 a" d  J
  10429. ddimage            ltlist_act               set_tile_rot           vpf
    % J5 E4 v% ]- A2 Q/ P
  10430. ddimen             ltlist1                  set_tile_scale         vpid2 Z: b4 P* }; \) p3 C, ^" I! A% b
  10431. ddleader           ltname                   set_tile_spline_props  vpldata
    # Y0 [& F: o. h) L. ]1 \
  10432. ddline             ltnmlst                  set_tile_stang         vpn  }+ ~9 d% v6 P% }1 P0 G
  10433. ddlist             ltvalue                  set_tile_style         vpt, F' T* }$ R* M/ w' ?; X4 p
  10434. ddmline            ltype                    set_tile_tag           which_tiles& @+ W8 z5 h/ L  D# @0 G; s6 t8 Y
  10435. ddmodify_err       m                        set_tile_text          wid9 P- S, g: K- i0 g: r3 {" |2 l3 W. ^
  10436. ddmtext            majrad                   set_tile_vpt           x
    ; e- d+ N: ~+ P* h
  10437. ddpline            make_lay_lists           set_tile_wid           x19 s9 k3 `+ y* G* S' T3 H
  10438. ddpoint            make_lt_lists            set_tile_xline_pt1     x2
    . X9 _7 v1 R$ L% k
  10439. ddray              mdashlist                set_tile_xline_pt2     x39 x( j0 ^7 h1 f+ S) V+ j
  10440. ddregion           minrad                   setcolor               x4
    3 L2 T6 }# [0 E2 ^+ r; b
  10441. ddshape            modify_3dface            shght                  xdlist
    / A4 v; a  E8 l$ G' l
  10442. ddsolid            modify_3dsolid           showpt                 xline_pt11 |9 V. G  O/ c. y( O$ }$ n
  10443. ddspline           modify_arc               size                   xline_pt2
    2 @% ]) n# M4 s
  10444. ddtext             modify_block             slist                  xline_x1
    . a: P  K0 U: G3 Z, \1 ]
  10445. ddvport            modify_body              sname                  xline_x2
    1 H" A) i# C* W; J- Z" k; _; P7 h
  10446. ddxline            modify_circle            sortlist               xline_y19 b7 l5 M, N/ P. X- v
  10447. denom              modify_ellipse           spltype                xline_y2  `) a' Q' z' E2 w3 P
  10448. dialog-state       modify_image             ss                     xline_z1
    0 S6 c6 ]# U: l' Y. J
  10449. dir_pt             modify_line              st_ang                 xline_z2
    1 N$ w* R8 X* ?4 Y, `) h+ U
  10450. dir_ptx            modify_mline             stpt                   xscale; Q! `, J2 C" j1 w2 n8 Q
  10451. dir_pty            modify_mtext             style_act              xx
    ' l: ~0 t* ^- N4 u1 ?! ?
  10452. dir_ptz            modify_point             style-idx              y
    # z% ^& d8 p" J1 y( P
  10453. dismiss_dialog     modify_polyline          style-list             y1
    2 {$ Z; r8 a/ s" [+ |, z3 K' K9 j
  10454. drawpattern        modify_prop_geom         tagval                 y2
    ' V2 e( i6 }) v3 F/ r- ^: w, I4 Y
  10455. echo               modify_properties        temp                   y3% W; ~' n. d% S/ f( _& P7 {
  10456. ecolor             modify_ray               temp_color             y4
      C" m* h: |$ I
  10457. edge1              modify_region            temp_dir_x             yscale
    : f8 r% s7 p& y- P
  10458. edge2              modify_shape             temp_dir_y             yy
    4 w' W5 p7 f9 p$ p! Y; r& V
  10459. edge3              modify_solid             temp_dir_z             z1) A$ N, S6 z7 n( a& h; t- E
  10460. edge4              modify_spline            temp_xline_pt1         z2
    9 w9 l9 V( A+ u6 V1 F/ S, |
  10461. edgetest           modify_text              temp_xline_x1          z37 B, ~3 H% Q2 a& c# b
  10462. elayer             modify_vport             temp_xline_y1          z4) A* R; r, q9 j2 b! \; N8 }
  10463. elist              modify_xline             temp_xline_z1          zscale
    # Z* a8 [" X9 m8 Y; n/ \6 Q, ]
  10464. ell_calc           modlist                  tempend_eang           zz
    0 o& ~) u2 E9 o1 n
  10465. dir-idx            safe_ddedit              ver_MtextWidth         xcliponoff
    + H  @! c  y# Y
  10466. MText_style! Q' a) F" v1 o- i% ]
  10467.   )$ e# A) l& V5 {- n" E
  10468. # }, q& m* ]+ g- g, S4 l$ L
  10469.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    6 y# O/ O6 P7 {8 U  Y
  10470.         old_error  *error*            ; save current error function
    # E/ n! N7 q, M3 V5 X8 H+ Q
  10471.         *error* ai_error              ; new error function
    ( g1 M+ ^5 b) [% V5 O3 I3 \0 P
  10472.   ): ~4 @' t2 ], D. E# Q) n
  10473. : c% [; V- ?1 @2 T8 B+ x5 G
  10474.   (setq old_pickstyle (getvar "PICKSTYLE"))          ; save old pickstyle
    1 B4 w7 k6 l0 ]( W! |
  10475.   (setq new_pickstyle (logand old_pickstyle (~ 1)))  ; turn off group selection
    . W1 V- B. A2 L& O1 K6 g* C
  10476.   (setvar "pickstyle" new_pickstyle)                 ; bit and set to new value
    # j# W8 R) R+ L& k
  10477.   i5 ~" {# t" @+ }9 f
  10478.   (setvar "cmdecho" (cond (  (or (not *debug*) (zerop *debug*)) 0)
    8 D" l' G1 `; E1 z3 l, @; ~
  10479.                           (t 1)))
    " E2 s; J/ g* z
  10480.   (cond
    " [# @) O& w4 P9 M% D; ~; g/ H
  10481.      (  (not (ai_notrans)))                      ; Not transparent?
    : d5 n$ O- g8 L. ^0 s) T
  10482.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    & h7 Z; u8 C8 Z/ z
  10483.      (  (not (setq dcl_id (ai_dcl "ddmodify")))) ; is .DLG file loaded?
    # c. {8 b+ h4 W
  10484.      (  (not (setq ename (ddmodify_select))))    ; object to modify?
    ; A# f2 _& d" D) ~
  10485. % r# r- q, [) {! J* ?' w
  10486.      (t (ai_undo_push)) U  O6 e+ Z' e9 \' U
  10487.         (ddmodify_init)                          ; everything okay, proceed.
    9 C. \! Z+ I. b2 o, Y/ v
  10488.         (cond+ |. t$ g0 x+ b  F1 a
  10489.            ((= etype "LEADER"): b1 Q: N; r$ T& n, `4 r' l$ p
  10490.              (setq help_entry  "modify_Leader_dialog")3 T9 m" y2 E  t& _* @: r
  10491.              (ddleader)
    * A# m& I% C3 G: I" U
  10492.            )
    # h* U/ G' S  f9 x+ k% w
  10493.            ((= etype "ARC")
    , s. s: y$ S5 N) h) K
  10494.              (setq help_entry  "modify_Arc_dialog")2 g# D# Y+ @( m+ W& y
  10495.              (ddarc)
    ) f& ^+ f. o" C7 k# d% ~4 C
  10496.            )8 o6 k  N/ Q0 S& J1 l5 c
  10497.            ((= etype "ATTDEF")& u0 \0 d. a6 {8 H6 l8 C
  10498.              (setq help_entry  "modify_Attribute_Definition_dialog")
    : c6 W: M7 `9 ]% s" J
  10499.              (ddtext)
    $ R) _* x; @& h9 ^2 [
  10500.            )
    3 N" Z; f  c  g3 _. h' R- H
  10501.            ((= etype "CIRCLE")
    ! l- t; M# A" Y/ i
  10502.              (setq help_entry  "modify_Circle_dialog")
    / P" T" A) ?; u! q& B! w
  10503.              (ddcircle), q% f+ w( N1 N0 T9 b! k
  10504.            )7 ?! H, f4 V: R7 U4 [/ i$ E
  10505.            ((= etype "ELLIPSE")" b/ P6 a8 Q! ]7 i/ H- x
  10506.              (setq help_entry  "modify_Ellipse_dialog")
    ' M3 X& ?: j5 P- _
  10507.              (ddellipse)
    9 X  C7 \/ \5 @1 r2 z/ k
  10508.            )
    7 F. K1 ^( I" V  y# [
  10509.            ((= etype "3DSOLID")
    ; x% c, c; \+ c4 Q) i
  10510.              (setq help_entry  "modify_3d_Solid_dialog")
    ( ?$ s* w/ Z0 T3 @
  10511.              (dd3dsolid)- p5 d( O0 x' G% G
  10512.            )
    ; I) s; m0 L7 S1 k3 B; A
  10513.            ((= etype "BODY")% |7 V! c. L8 v  }
  10514.              (setq help_entry  "modify_Body_dialog")
      K' u& w+ C% `/ C9 x7 o
  10515.              (ddbody)
    : G1 v6 J3 O" V, h7 e# }
  10516.            )/ d! l! x/ y! ]7 b
  10517.            ((= etype "REGION")- ?- n$ h2 P0 o* n
  10518.              (setq help_entry  "modify_Region_dialog")
    $ h1 V& Q. [8 o/ v
  10519.              (ddregion)2 K5 w0 b2 {$ W& E9 |/ K; I
  10520.            ): Y$ V6 O, ?& y( p
  10521.            ((= etype "HATCH")
    / v" K% h1 K' k4 a9 u' E) d
  10522.              (setq help_entry  "modify_Hatch_dialog")
    & C) o# C1 U8 l6 J) }9 z! M4 j  `
  10523.              (ddnewhatch)8 @: P4 V6 }1 R% f
  10524.            )
    & Z8 Z  ]3 R$ T* J
  10525.            ((= etype "SPLINE")/ V* f6 E; p& l8 n  A  B! }% u
  10526.              (setq help_entry  "modify_Spline_dialog"), q& i, c% t6 m& `# }* C
  10527.              (ddspline)1 s' t. }# r0 }2 U2 s
  10528.            )
    1 b) d* E3 {' |3 }: ~
  10529.            ((= etype "INSERT")    ; see ddblock for help_entry
    9 a. M, u$ J: `& B0 x7 \$ ]
  10530.              (ddblock)) h$ T5 Q, s" [2 ~+ Q1 y
  10531.            )1 {! N0 I& r6 R: B$ o0 O: J% R
  10532.            ((= etype "LINE")) @. f* c: x+ n! C! Q: I
  10533.              (setq help_entry  "modify_Line_dialog")
    % `/ P' t* ?1 x6 |. Y5 i- o
  10534.              (ddline)
    4 `# H5 _/ |" |- w3 b
  10535.            )
    * \  n9 J2 x! }8 \' J
  10536.            ((= etype "MLINE"): {; k! m# i9 x) k7 O; P
  10537.              (setq help_entry  "modify_multiLine_dialog")% j7 Z6 |4 {- i) k% ], P! w# D+ h. \, ?7 ~
  10538.              (ddmline)' |0 W, S9 s2 i- f
  10539.            )' S- \1 l8 n! _; X* z$ o  M) a
  10540.            ((= etype "RAY")
    & B+ E  O3 b& }5 p3 v% i, S$ I
  10541.              (setq help_entry  "modify_Ray_dialog")
    8 Z; ~" {, O  [1 e" g: ~. n9 @
  10542.              (ddxline)1 G! y, y8 ^# z* b' O4 {
  10543.            )
    : ~! p5 O8 I. Q' P/ e; J' {. G( F4 @* p
  10544.            ((= etype "XLINE")
    ) Z, z# o7 a# a/ I/ Y4 k2 X% Z4 G
  10545.              (setq help_entry  "modify_Xline_dialog")! k& X, W. _7 X$ {* M8 x8 `
  10546.              (ddxline)
    0 b) G) }+ A" p  f4 e" c
  10547.            )
    : ^, n5 j$ z! L( k0 {) E5 H! n
  10548.            ((= etype "POINT")7 l; [; L6 H4 |! ?5 b
  10549.              (setq help_entry  "modify_Point_dialog")
    4 V2 |/ J' d7 p# Y8 J1 r1 \
  10550.              (ddpoint)
    9 t1 ^6 K" W5 A5 L
  10551.            )
    : f; p' `  O/ m- p! A" }: R
  10552.            ((or (= etype "POLYLINE") (= etype "LWPOLYLINE")): G1 D" e' t  ~
  10553.              (setq help_entry  "modify_Polyline_dialog")
    + R" x; ]$ }" q/ l: V
  10554.              ;; If a 2D pline, check to see if it is planar to the current1 c+ |" `% a8 A3 w7 F
  10555.              ;; UCS, reject if not.   To see if the pline is parallel,; }( g, j8 f  I; p. T: a
  10556.              ;; the 210 group (WCS) is added to the current UCS origin (WCS)7 k* b3 T8 s2 a. w+ A9 i1 K0 r
  10557.              ;; and then converted to the current UCS and checked to see if8 C) n3 @- |# \! f- R
  10558.              ;; it is equal to (0,0,1).
    # v- h5 }, s' ?9 a( p- q3 A' P6 T

  10559. / |3 @+ ?* w- L+ {- D+ H
  10560.              ;; Incase the 210 is default and not in the dxf list.4 I/ f9 K. J. U0 W. C- n4 L
  10561.              (if (= (assoc 210 (entget ename)) nil)
    / d5 _, x3 }8 A6 h  h2 E  y
  10562.                 (ddpline)
    " C; a  c' C* `  @! I( N! [! z8 [
  10563.                 (progn2 c# t% n, u2 W( [
  10564.                     (if (and (zerop (logand 120 (cdr (assoc 70 (entget ename)))))
    $ y9 M9 L4 u; T- q6 C0 J2 a" }
  10565.                             (not (equal '(0.0 0.0 1.0)& I* b- ^3 c" l9 z7 F7 _
  10566.                                    (trans (mapcar '+8 K3 @( Q# P7 n
  10567.                                              (cdr (assoc 210 (entget ename)))
    : S9 i2 r; v# l2 U! r
  10568.                                              (trans '(0.0 0.0 0.0) 1 0)
    1 J9 o6 J( T& a# W% K/ }. m
  10569.                                           )
    ) _6 U: K% t' B+ u4 Y7 z
  10570.                                      0 1
    7 D+ ~& q' v; v$ _
  10571.                                    )3 @* D' u3 j7 s
  10572.                                    0.0000000001            ; fuzz
    4 n& j7 }; o# Q) o
  10573.                                 )
    " H. a- t, M- Y/ |6 u9 n) B
  10574.                             )# @* e/ ?1 a$ U  W& X# w9 U0 h
  10575.                         )
    % r$ \- {9 r8 x, g0 J
  10576.                     (princ "\nThe 2D Polyline is not parallel to the current UCS.")
    - B+ I& W7 P7 c4 F: M3 D
  10577.                     (ddpline)! ^; Z9 G/ J: K; v, U. q1 C
  10578.                     )) H( x8 m; m3 G
  10579.                 )' t+ Q  k( f' b0 c% E. H. j4 ~3 f
  10580.              )6 w# Y) r" a! P$ H
  10581.            )
    ( c1 f) A) i% x6 t3 j2 ^' O. i  D
  10582. 8 P  M6 e0 B' R4 c* o# [
  10583.            ((= etype "SHAPE")
    ' @5 Y1 }8 }/ D+ u  }+ y6 i
  10584.              (setq help_entry  "modify_Shape_dialog")5 z( p, R* I& R8 {0 C0 f
  10585.              (ddshape)1 ]- I3 U) B7 s, L6 O5 w
  10586.            )" N: ]4 X7 X, n
  10587.            ((= etype "SOLID")
    / ~4 E+ f$ u& t! K& b, \
  10588.              (setq help_entry  "modify_Solid_dialog")
    # H5 W' L, f+ h+ L3 q# L
  10589.              (ddsolid)# D2 K) \6 V& o' m+ S) w( i
  10590.            )' U! x) [! d+ q
  10591.            ((= etype "TEXT")
    ; k( E2 ~0 d5 \: K
  10592.              (setq help_entry  "modify_Text_dialog")% w: D8 X* R) `; p" }1 w
  10593.              (ddtext)
    7 w& j- W$ ^$ v/ _9 H% p: |, L' s% S
  10594.            )
    ! \( p8 O! H& t! e
  10595.            ((= etype "MTEXT")( j" S! }3 J3 T+ ^8 a
  10596.              (setq help_entry  "modify_MText_dialog")+ e! k# x( _. @4 {( d
  10597.              (ddmtext)) w3 E* z9 C8 a9 C4 H" v
  10598.            )
    2 B7 b! i( a: z# G- X6 d
  10599.            ((= etype "TRACE")3 A4 E+ I& k! a9 S' h. _# ^; }8 @
  10600.              (setq help_entry  "modify_Trace_dialog")
    9 n3 j! M/ r& S: e4 e5 E- |1 a
  10601.              (ddsolid)& f/ t: F  G$ O4 e/ R
  10602.            )5 B2 q# t7 t6 k! q
  10603.            ((= etype "VIEWPORT")1 q% l: J) Q* I
  10604.              (setq help_entry  "modify_Viewport_dialog"), W5 R& D! w) T+ I7 `- h
  10605.              (ddvport)9 i9 M0 g+ V4 [
  10606.            )
    - y/ g/ X: n4 |& T: l6 y# c& m" ^* b+ ?
  10607.            ((= etype "IMAGE")
    4 Y( j8 ~" x, }3 L* Z- W
  10608.              (setq help_entry  "modify_Image_dialog")+ R5 c8 j/ C3 G# P; A: I) G1 p
  10609.              (ddimage)
    & ^6 @2 @% _$ Z/ W
  10610.            )& S1 n3 u# Z! ~. w, u2 y  Y6 g9 e
  10611.            ((= etype "3DFACE")# ]) a# m& k1 p+ q8 o! g! k, ^  l
  10612.              (setq help_entry  "modify_3D_Face_dialog")
    $ @- q! R/ Q# v
  10613.              (dd3dface): c* s2 w! ^" I7 W8 l. R
  10614.            )
    6 |- V7 L4 Z4 z0 q# p) F  S
  10615.            ((= etype "DIMENSION")
    - j# B+ {# Y0 K0 ]% @6 ~" r1 H% q
  10616.              (setq help_entry  "modify_Dimension_dialog")& X" @; s. ]0 L$ L8 d( Z4 Q# @" U
  10617.              (ddimen)8 b% F# e6 \4 l$ K0 ?  c/ d
  10618.            )3 Y! j5 Z- ?- C1 f+ o3 ^  ?
  10619.            ((= etype "TOLERANCE")9 }9 t4 A( x7 R+ G
  10620.              (setq help_entry  "modify_Tolerance_dialog")
    , S2 ?; y; H0 T+ o/ E! J
  10621.              (ddtolerance)
    $ i: S+ K0 h( N
  10622.            )
    . V- e9 v% E: z" X5 P& h
  10623. ;; Fall-through condition changed by MCAD for MDT 1.1 release.
    , G  N  C. @& F5 @  q: W
  10624. ;; This allows DDMODIFY to work on any custom object or any new object type- A, t* [+ l' I1 H: c0 V
  10625. ;; that isn't specifically handled above by calling the more generic DDCHPROP.8 {' Q! I) {2 b0 v6 E
  10626.            (t
    8 h8 n8 N% ~: v& D: c
  10627.              (if (and (not ddchprop) (not (load "ddchprop" nil)))
    & U+ f0 m$ f8 |; J1 u
  10628.                 (princ (strcat "No dialog support for object type: " etype ".")))
    & b& |$ M, X# J
  10629.              (progn2 J- l- O% ?. o( \; ~
  10630.                 (setq tempss (ssadd ename)), n; T5 g5 A: _, h( i% ~7 k
  10631.                 (ddchprop tempss)+ x( w9 b3 ?/ Z$ f; V
  10632.                 (setq tempss nil)
    5 _# |3 T$ Z8 X3 J- u5 y
  10633.              )
      ?) G+ W  L& {% Z5 R6 X/ F
  10634.            )$ p' N( L# i, b& ]8 T5 h! Q
  10635.         )
    . a! K" J. F3 j/ i$ ^
  10636. ;; Previous fall-through condition.. x/ y- p/ i8 y, t
  10637. ;;           (t (princ (strcat "No dialog support for object type: "
    . Z  |- I" ^6 T. @, E) s6 n
  10638. ;;                             etype "."! v6 E! z; H. p3 n9 }. c# K" y
  10639. ;;                     )9 Y; R8 F! M8 {) ?
  10640. ;;              )
    , z2 i/ @9 N  z
  10641. ;;           )$ {0 ~) h, o( k8 C
  10642. ;;        )+ n! @" q# h$ o0 Q4 D, s% ?
  10643.         (ai_undo_pop)4 _: @1 i" c, s( }, q
  10644.      )
      {( |/ t3 g) Q5 \( u+ y
  10645.   )2 B+ \4 S) u3 \" r- ^6 u& j9 O, P7 L
  10646. , P: r2 O% ^. _  ?# K8 b. N
  10647.   (if (eq new_pickstyle (getvar "PICKSTYLE")) ; if user didn't change pickstyle
    9 E! C( e1 n$ X- v
  10648.       (setvar "PICKSTYLE" old_pickstyle)      ; transparently then set it back
    ) }* f! M  l4 s' b6 g; m3 b# a" o
  10649.   )                                           ; to what we started with
    6 E3 O" B/ k5 f( i! g3 Y2 _

  10650.   p1 r, s1 F7 f( X
  10651.   (setq *error* old_error): Y! K& b9 i( t" p
  10652.   (setvar "cmdecho" old_cmd)
    . _; h0 b! f1 e- k* Y0 h! A% U
  10653.   (if (not reset_flag)            ; if object was modified, then' h2 z& b8 w( Y7 E* {6 S8 F1 [
  10654.       (ai_return ename)           ; return it's ename to caller4 Z. e0 s; J# @5 M8 }. m
  10655.   )8 Q( W3 D" j1 V4 S) A) E! d1 T
  10656. )
    , S' |; W, s+ u. n. n- J& \
  10657. 5 V& d( e- Z# Q- g
  10658. (defun checkForLockedLayer (ename): u! A" ?: i; k. z
  10659.     (setq layername (cdr (assoc 8 (cdr (entget ename)))))
    5 P: a3 q% r- W5 _9 C0 I( y
  10660.     (setq layerflag (cdr (assoc 70 (tblsearch "LAYER" layername))))
    9 L+ H$ Z. c: L5 {1 |6 e+ u
  10661.     (if (= layerflag 4)6 p1 t, O' J2 h: }
  10662.         T
    $ P/ \' }" x& Y: A! o, v  U: s
  10663.         nil
    ( |9 a$ K1 M: r9 H' t
  10664.     )
    , A7 P' Y  b  F1 G! [
  10665. )* y; k. A6 ~( p& m  x7 M
  10666. 5 i/ L( I3 L- F2 D$ N* b
  10667. (princ "  DDMODIFY loaded.  ")& n4 s. `& {  q  }' J+ {
  10668. (princ)) H9 Y6 Y( b, ~# z# w' X, d3 L
  10669. ;;;???;;;---------------------------------------------------------------------------------------
      H4 J$ F9 _) A6 Y9 L% y1 y
  10670. " w5 T% V5 _! F
  10671. ; Next available MSG number is    8
    ; \! |+ ]! C2 {( d
  10672. ; MODULE_ID DDUCSP_LSP_( E, v$ \4 O& ]2 G6 h
  10673. ;;;
    % @+ y, O# {+ t4 Y4 [, x
  10674. ;;;    dducsp.lsp6 e/ b( u- U+ J% k; c: a) [, b
  10675. ;;;
    1 |* t6 Z0 w  Q, u' z5 F6 f; B# b
  10676. ;;;    Copyright 1992, 1994, 1996 by Autodesk, Inc.) s/ a2 L9 Y% o" C
  10677. ;;;
    7 j" P3 I. b! Z0 c' t
  10678. ;;;    Permission to use, copy, modify, and distribute this software
    & f/ X& s7 G* M5 z
  10679. ;;;    for any purpose and without fee is hereby granted, provided" |- P( P3 l8 t0 R! q! q
  10680. ;;;    that the above copyright notice appears in all copies and) O1 W. \9 e2 ~2 A7 b! z
  10681. ;;;    that both that copyright notice and the limited warranty and+ S* w; r5 t% c$ X, F3 k
  10682. ;;;    restricted rights notice below appear in all supporting0 H1 V/ Q2 [; J9 v$ i$ Q, r" R
  10683. ;;;    documentation.! `+ v# Z2 q3 e2 Z7 }; m
  10684. ;;;, z( V# k7 d4 X6 ]4 s/ J
  10685. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.3 D# U" n; y3 R$ C: ]& y" \
  10686. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF' i+ D) _, C" }( |8 I
  10687. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.& X8 g5 a" c+ j/ ?
  10688. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE; |" T  ~: j" @1 T6 |
  10689. ;;;    UNINTERRUPTED OR ERROR FREE.- @2 L: a* x7 @! W' w* K+ L; O
  10690. ;;;
    7 Q! S4 b/ ]1 R7 W# \, M/ m: ]
  10691. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    2 A( [8 ?. T4 w* x/ f
  10692. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    9 x' ~' l0 F, E* R0 K  b' W( `0 w# N. a& L
  10693. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) ! o; E) Y1 T0 A4 C; L5 v
  10694. ;;;    (Rights in Technical Data and Computer Software), as applicable.. R4 ?$ N4 y; x# Z( @
  10695. ;;;8 a- Y. m  i. \& ~8 A
  10696. ;;;.
      q* T2 `' l# N. k
  10697. ;;;   C:DDUCSP - User Coordinate System presets dialogue.
    ( k! ?6 v' B* m1 }7 r# P) o; \
  10698. ;;;     3 x2 i! S/ m# [8 c  W3 p0 B
  10699. ;;;              Uses DDUCSP.DCL for the dialogue definition.  The
    / b7 Q! S$ I% Y2 f
  10700. ;;;              slide images are in ACAD.SLB.
    6 O: S1 B0 ~3 a/ d
  10701. ;;;( s/ g; x. p/ F! ~& h6 c9 A& g7 ?
  10702. ;;; ===========================================================================  g+ r, \6 y% B
  10703. ;;; ===================== load-time error checking ============================# r2 F1 |- |  E8 X/ a+ x( ?; V, g
  10704. ;;;" _1 ]9 l& J& L
  10705. , u% T$ G- Y7 X' z- e7 U$ \/ \
  10706.   (defun ai_abort (app msg)
    2 {& f$ X$ t( J2 [
  10707.      (defun *error* (s)
    / l, C! Y/ w( }7 n0 Z( c: R5 Z
  10708.         (if old_error (setq *error* old_error))( O( ?' O  F* B: d$ A2 S
  10709.         (princ)- [% U9 `1 R6 @0 S' E2 u
  10710.      )
    ( I- _  A7 O0 g1 a. }4 o
  10711.      (if msg( K! Q* ^( i0 u! D* d6 J
  10712.        (alert (strcat " Application error: "6 K8 _+ |9 ]3 a; {$ g4 ~4 a7 N* x
  10713.                       app) y9 N4 q2 C9 @, n) l/ J
  10714.                       " \n\n  "
    - N1 y0 F$ S& |' c) I* L& g6 t) h  ~
  10715.                       msg' r  w9 X: f& |. Z* ~, A5 n
  10716.                       "  \n"
    * E7 a" ?9 N0 _& y
  10717.               )9 K4 C* M( Z3 G* G2 {2 w
  10718.        )
    9 T3 E6 k1 _1 o, Z4 F- G
  10719.      )
    3 {1 N( j. T. \, i# U8 |
  10720.      (exit)
    1 `0 P  r& [4 l$ Z
  10721.   )
    . Z) G% z8 `' b, Z% ?) J

  10722. 0 @; ^: O- @  z
  10723. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,% m8 E6 D3 _. {; q0 R
  10724. ;;; and then try to load it.
    % @1 k, x3 I7 E- p; F
  10725. ;;;3 [& L8 z3 k, b' s/ l( U1 `
  10726. ;;; If it can't be found or it can't be loaded, then abort the# K- `) @3 t+ s8 z, R
  10727. ;;; loading of this file immediately, preserving the (autoload)
    1 ^1 d% D/ Y; z
  10728. ;;; stub function.
    + m; \5 O! W3 g" I% ]. o
  10729. 3 @+ R% ?/ B+ z* L
  10730.   (cond# d) F$ R. _1 y; Q" W  T" t2 x
  10731.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    % ?$ q9 i* W) n

  10732.   H/ X$ `) b& m5 P4 P
  10733.      (  (not (findfile "ai_utils.lsp"))                     ; find it# B* B+ L9 I% _" b' P
  10734.         (ai_abort "DDUCSP"
    % s9 s, t4 g7 I. y/ _
  10735.                   (strcat "Can't locate file AI_UTILS.LSP."
    / |) z" E! T8 N& I
  10736.                           "\n Check support directory.")))
    0 e, b% e: v3 H, h7 ?2 R% {4 U

  10737. 7 e# q4 A( \; Z& j! ?  F& j6 o6 n
  10738.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    5 ~9 Q3 C) ?1 K/ I1 q
  10739.         (ai_abort "DDUCSP" "Can't load file AI_UTILS.LSP"))
    0 ^3 J" c# Z8 Y: ]$ w7 a/ L
  10740.   )
    4 z, }5 |1 U- W" j7 x& k7 F& e  N8 K
  10741. 4 P7 j. K% J9 s
  10742.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP  ~- g, D* W) Z" F% i
  10743.       (ai_abort "DDUCSP" nil)         ; a Nil <msg> supresses
    / x- ~( {! ?" D% i$ O1 u4 }
  10744.   )                                    ; ai_abort's alert box dialog.: h; g( c6 G6 e9 V

  10745. 2 L  R2 Y% ]* J/ g* e/ ~4 r
  10746. ;;; ==================== end load-time operations ===========================
    3 N8 \, ~, L; m) t/ T! \! v' y
  10747. / \& g' L7 ]9 v2 j
  10748. (defun ai_ucsp_start ( / program)
    % A$ b6 G( u. ]' H+ t8 z& _8 k3 Y) s- D
  10749.   ;; Get program name4 ]) @, H% g/ v1 W
  10750.   (if (not (setq program (getvar "program")))
    0 P3 U0 g. H9 p# ~
  10751.      (setq program "acad")
    ' h; D" K4 P( `- v
  10752.   )
    ; j8 @- F* z( H
  10753.   (foreach v0 '("world" "left" "cview" "top" "front"
    ' I: m) v* ~0 ^) _! _& |+ g& r* e
  10754.                 "bottom" "back" "right" "prev")8 A! X' B* [! y, [2 ~
  10755.     (start_image (strcat "ucsp_" v0))3 c+ U; f9 _4 @
  10756.     (slide_image
    4 a- o2 |. V/ _+ b) U" a7 u9 Q% |" v
  10757.       0 00 h4 n/ G- @. k( ^- i8 K
  10758.       (- (dimx_tile (strcat "ucsp_" v0)) 1) (- (dimy_tile (strcat "ucsp_" v0)) 1)
    2 L: V) X. d# @( n
  10759.       (strcat program "(u-" v0 ")"), F9 u* o; K- ]
  10760.     )& J) e0 X, `( O% I+ p9 d& c
  10761.     (end_image)5 l: u/ u6 N+ J" L' {* P
  10762.   )
    8 ?; P3 N2 }3 {  [3 I  l. {- `  Q
  10763. )
    ! p( m; U( H$ E; e; R) \& P
  10764. ( y0 \4 E& X. N- V
  10765. (defun ai_ucsp_set ()
    # l4 |) S) Z# I) {; P3 {+ M5 j
  10766.   (if ai_ucsp_sv
    6 ?8 O$ G9 Q1 g# b# Q' n. L; q! {
  10767.     (command "_.UCS" "_V")& x4 Y9 E+ ]' Z, [# a# o+ h
  10768.     (if ai_ucsp_prevs
    & y; c( M# p7 D: p9 b! i* o; x7 R
  10769.       (command "_.UCS" "_P")
    / i# |5 t5 U; w" c/ R& Z
  10770.       (if ai_ucsp_chg- y$ C9 Z) T6 ?0 X2 O
  10771.         (progn4 [9 Z' a# m9 K/ B5 {- B( n! C
  10772.           (if (/= ai_ucsp_a "*")
    / x# n) ]. P2 {* Z0 c! k, H( |3 A( m9 v& C
  10773.             (setvar "LASTPOINT" (trans (getvar "UCSORG") 0 1))
    6 |! X$ i, k2 H" i9 m0 m
  10774.           )- y$ P* A8 W  V) k
  10775.           (if (< ai_ucsp_pick 6)
    + N! \. x# V/ `7 [: Q, @  H; g) n
  10776.             (setq ai_ucsp_set0 "@"). g  A4 \0 @0 ^$ ~6 }
  10777.             (setq ai_ucsp_set0 "*0,0,0" ai_ucsp_a "*")
    3 ?$ e5 S. d( M8 W
  10778.           )
    4 |% p9 C8 n# n( P1 X& v! ]
  10779.           (cond ((= ai_ucsp_pick 0)$ ^; X. q* y9 j7 n+ ?* i/ t" e
  10780.                  (setq ai_ucsp_set1 "0,-1,0"$ w, L7 B' T2 N6 Z/ N
  10781.                        ai_ucsp_set2 "0,0,1"7 M+ o% f* D: o9 w% f! N0 Q
  10782.                  )
    " q( r8 W% K) y: C5 Y- w
  10783.                 ); ?. ?$ f( j' |
  10784.                 ((= ai_ucsp_pick 2)& |6 _8 {- t$ m: j
  10785.                  (setq ai_ucsp_set1 "1,0,0"
      c+ L, v9 ^. l7 b# v* i7 v
  10786.                        ai_ucsp_set2 "0,0,1"
    ( {9 ^8 n' H2 `3 ?0 q
  10787.                  )( k" f' h. L. x/ `7 b: c; m3 N
  10788.                 )# f% s4 y* ?, Z8 y5 x/ \
  10789.                 ((= ai_ucsp_pick 3)
    * ~) Y" s/ N2 ?8 e' A- V* X7 a9 ]
  10790.                  (setq ai_ucsp_set1 "1,0,0"
    - @8 t. D4 j6 _! H6 Z2 J
  10791.                        ai_ucsp_set2 "0,-1,0"8 f3 `* p; P; j$ e( r& }. y
  10792.                  )4 K' n) R, R. l, c
  10793.                 )
    , O2 v, I; A5 Z5 B
  10794.                 ((= ai_ucsp_pick 4), ^7 r% E, `2 X! O( G4 d( E* W
  10795.                  (setq ai_ucsp_set1 "-1,0,0"1 N, l0 H: `0 L
  10796.                        ai_ucsp_set2 "0,0,1"
      x  w! O$ J; [4 R) v' D
  10797.                  )% ]0 |; l# Z* N0 J% ?
  10798.                 ). q6 _" w2 |$ [9 I
  10799.                 ((= ai_ucsp_pick 5)
    , s3 |2 a2 C" ?- k% X3 Y7 P2 n
  10800.                  (setq ai_ucsp_set1 "0,1,0"
    ! l, j2 Z% E: |/ C7 e+ F
  10801.                        ai_ucsp_set2 "0,0,1", q4 m+ D- i) x
  10802.                  )
    0 \8 m2 l5 N- Z" ^6 Y. x
  10803.                 )  L- \& r4 \8 p; G2 H5 y
  10804.                 (T
    . K& w6 a' J5 [  J+ X9 `
  10805.                  (setq ai_ucsp_set1 "1,0,0"- V0 a0 o' Q/ P& {* Z; o7 H' D
  10806.                        ai_ucsp_set2 "0,1,0"
    7 a7 t4 _' B$ A; Q) J8 |2 e  J
  10807.                  )& }  C3 F0 B1 ?
  10808.                 )2 @( ]$ i, g5 [6 b' |7 V; m8 S: V* M
  10809.           )
    0 p. T# A1 s) o! Q0 e, ?: P' ~" I0 D
  10810.           (command "_.UCS" "_3P" ai_ucsp_set0
    8 I- W. F+ A; ^0 x4 y
  10811.                    (strcat ai_ucsp_a ai_ucsp_set1)
    9 t2 W( Z9 R  ~- G
  10812.                    (strcat ai_ucsp_a ai_ucsp_set2)5 R) l  K4 O" c' p0 m! D
  10813.           )
    , m0 B9 q. Q# x7 _& X: v
  10814.         ): I+ a$ V( [# s
  10815.       )
    4 j/ Z) d  G" k# w
  10816.     )* l2 H- D; S. W8 t" c
  10817.   )7 e$ H9 N7 s+ v, {1 W# r
  10818. )% m) J  Q/ @( H% {5 m
  10819. ; V2 r$ q" V" \, T4 b3 ?  i
  10820. (defun ai_ucsp_p (val currtile)
    : ~! p0 I9 P* }  @
  10821.   (mode_tile ai_ucsp_currtile 4)( {( z4 }: Z6 E% v! h. i7 V/ R
  10822.   (setq ai_ucsp_pick val
    8 n% S  q% p" S# m, D
  10823.         ai_ucsp_sv nil8 h* P4 X, J3 J& ^: ?  c
  10824.         ai_ucsp_currtile currtile
    8 ^" R/ h) ?9 L% Y; U
  10825.   )9 ^. |, B# b: o* Z2 ~* L  i3 i
  10826.   (if (/= val 1)
    ' K- P4 q7 N, V! H, O2 R* [
  10827.     (setq ai_ucsp_chg T)
    + M7 M* F$ b+ ~+ X" J- D
  10828.   )9 t/ x7 u# y4 T$ r. C$ M, j
  10829.   (mode_tile ai_ucsp_currtile 4)
    ) G( B+ ~1 A2 D2 n6 N
  10830. )
    ; m" }1 T7 X9 K
  10831. 2 C( ^, r# X; A/ u2 S
  10832. (defun ai_ucsp_swcs ()) h& o! D  U0 u3 k+ Q% V7 A; H
  10833.   (mode_tile ai_ucsp_currtile 4)
    : I; B1 e+ M, L
  10834.   (set_tile "ucsp_a_wcs" "1"), e! E( d4 A  B% |7 l7 O# f
  10835.   (setq ai_ucsp_pick 6
    5 W' l( n5 |% [  W; l" S  `
  10836.         ai_ucsp_sv nil/ E# f( J2 U! K# _4 h# [/ x# ]1 _
  10837.         ai_ucsp_currtile "ucsp_world"2 G  p& X2 H: F
  10838.   )/ ]1 d' a* `* F5 @
  10839.   (if (/= 1 (getvar "WORLDUCS")); ]! D; X3 r/ H/ |& d% b% Z' t
  10840.     (setq ai_ucsp_chg T)( `; V- K5 P$ }$ x
  10841.     (setq ai_ucsp_chg nil)0 T% }( H0 N9 m4 I0 q# X
  10842.   )9 g4 ?% D, ~8 x$ R( U
  10843.   (mode_tile ai_ucsp_currtile 4)
    % I: _0 [# f1 U2 X( j; x5 _
  10844. )7 H2 U* h- V9 d2 x8 G: Z6 O/ M

  10845. 6 m+ S6 Q5 N! x: i5 Q
  10846. (defun ai_ucsp_cview ()
    ) }/ @0 m4 x. T$ t8 d
  10847.   (mode_tile ai_ucsp_currtile 4)
    ' M& b0 A% j: z, @
  10848.   (setq ai_ucsp_sv T
    2 F1 N/ r" L! Y; I! i7 q) T
  10849.         ai_ucsp_chg nil3 S0 W0 V3 q# l% A5 m
  10850.         ai_ucsp_currtile "ucsp_cview"7 A0 d8 Q  R9 s0 F0 @& M
  10851.   ). J0 D! S8 l3 [7 W
  10852.   (set_tile "ucsp_a_wcs" "1")* |7 r4 J  u) t& s, X+ }
  10853.   (mode_tile ai_ucsp_currtile 4)4 T! r  ^8 k) F0 F( B0 d, b
  10854. )
    1 a6 Q& r+ }: i* R2 P

  10855. % [, ^: p& x, |( N( D+ @) t
  10856. (defun ai_ucsp_rucs (typ); j0 Z9 s+ @' Q: a* p! \" W* T% A# _2 I
  10857.   (setq ai_ucsp_a typ): L* A: x; v% N0 g9 c  {
  10858.   (mode_tile ai_ucsp_currtile 2)8 s0 _2 ^# b" H
  10859. )
    # q' x/ v7 B) `2 j
  10860. & v& C) J3 D. ~+ n5 `/ x( Y$ G
  10861. (defun ai_ucsp_prev ()
    : j' c- a5 v: D3 P  A* n
  10862.   (mode_tile ai_ucsp_currtile 4)
    / j) d3 r- B0 C/ p; F7 f; L
  10863.   (setq ai_ucsp_prevs T
    " R# x1 E& W0 M7 r& z( t
  10864.         ai_ucsp_currtile "ucsp_prev"
    : C  U; S& X* N# C; v2 W3 J& j
  10865.   )6 ?( M( h0 U0 Q" B. T+ G9 x1 o* |
  10866.   (mode_tile ai_ucsp_currtile 4)* X$ l1 F8 C5 h- o$ Z) A( G* S
  10867. )
    . Q0 b9 z6 r  t

  10868. 1 e2 c1 |. |; U5 U9 G
  10869. (defun ai_ucsp_main ( / ai_ucsp_pick ai_ucsp_sv globals)
    8 u  e0 l6 v! A( X5 L) s
  10870.   (if (not (new_dialog "dducsp" dcl_id))7 n+ ~' D9 c- m- H$ l2 e
  10871.     (exit)
    & @% f+ m" _- N
  10872.   )) g4 ^2 l& A' I4 V
  10873. 3 a% m; i2 O2 g4 b7 l# D
  10874.   (ai_ucsp_start)
    3 q4 M, ^/ U9 P! |
  10875.   (setq ai_ucsp_a "@"
      S( x' Y9 ^# S( k. M7 _
  10876.         ai_ucsp_pick 2
    3 K; M  L- h3 o, p. }
  10877.         ai_ucsp_currtile "ucsp_top"! P$ s( v3 m- r3 s1 f# A: n. z$ M4 i
  10878.   )
    5 A3 M" E5 `9 I' l$ k
  10879.   (if (= 1 (getvar "WORLDUCS"))
    ! K+ D4 O) ]( I
  10880.     (progn+ _, d5 h1 v$ S) K  N. c
  10881.       (set_tile "ucsp_a_wcs" "1")# ]  g7 F. j8 m# }6 n. a
  10882.       (setq ai_ucsp_currtile "ucsp_world")
    ! ?& a7 I0 G$ ]' {
  10883.     )
    9 ^2 o7 ?! y/ t( t# q& ~
  10884.     (set_tile "ucsp_r_ucs" "1")
    % `' n( r! Y! o* \1 o
  10885.   )4 p; n+ ]9 e3 O
  10886.   (mode_tile ai_ucsp_currtile 2)! n% @6 S. d/ G& m# `3 P
  10887.   (mode_tile ai_ucsp_currtile 4). u2 w; t3 y2 x& A
  10888.   (action_tile "ucsp_world" "(ai_ucsp_swcs)")
    ! _# w. g8 N5 c. x7 D: I# S
  10889.   (action_tile "ucsp_cview" "(ai_ucsp_cview)")
    4 N2 K7 p" U2 K# ]: Q$ r) r  w5 z
  10890.   (action_tile "ucsp_left" "(ai_ucsp_p 0 $key)")
    & K. B- U: h5 W7 o  R7 i1 Q, X2 V+ `  q
  10891.   (action_tile "ucsp_top" "(ai_ucsp_p 1 $key)")9 o: e7 j# I8 }+ X$ }! a1 d& A0 X
  10892.   (action_tile "ucsp_front" "(ai_ucsp_p 2 $key)")+ O( A2 z. @% L; M
  10893.   (action_tile "ucsp_bottom" "(ai_ucsp_p 3 $key)")
    . ~. o- w: Q/ J* s5 A( M8 ^/ b0 }
  10894.   (action_tile "ucsp_back" "(ai_ucsp_p 4 $key)")
    / j. T/ N) P! N8 x" O' P+ [, r: Q- p
  10895.   (action_tile "ucsp_right" "(ai_ucsp_p 5 $key)"), u/ B2 F! {" p! M7 a
  10896.   (action_tile "ucsp_prev" "(ai_ucsp_prev)")1 |1 ?- H+ g' [, b+ q. G
  10897.   (action_tile "ucsp_r_ucs" "(ai_ucsp_rucs \"@\")")1 E1 r/ f4 l# }5 ?9 N) c" K6 X
  10898.   (action_tile "ucsp_a_wcs" "(ai_ucsp_rucs \"*\")")
    ! z5 s/ f2 m. U- b) M. o* ?: Q
  10899.   (action_tile "accept" "(done_dialog 1)")7 n4 V! c; f9 X
  10900.   (action_tile "cancel" "(done_dialog 0)")2 b; J, J7 F' ]7 [, q
  10901.   (action_tile "help" "(help \"\" \"DDUCSP\")")) |9 ^; z+ e3 w0 `- c& B  S
  10902.   (if (= (start_dialog) 1)
    & N4 N% x7 ~+ u$ O3 @1 _
  10903.     (ai_ucsp_set)
    : Z  _& {* j. H  n* M- X' ^
  10904.   )
    6 ]% p: [4 ?. @6 U6 b
  10905. )4 b  Q' ^, c6 a" h# y
  10906. - [* v! k* Q" P  o6 T* V* N+ I
  10907. (defun c:UUS ( / app dcl_id old_cmd old_osmode ai_ucsp_prevs
    1 e3 {4 f! P! y7 @: I" n9 t3 z
  10908.                     ai_ucsp_sw undo_init)/ d7 X4 w7 d" x5 T4 e
  10909. . d7 n- |2 J, ]* T! l
  10910.   ;; Set up error function.8 _, [! z$ X& Q! Z! m% w
  10911.   (setq old_cmd (getvar "CMDECHO")    ; save current setting of cmdecho
    ; n; T$ v- l3 m+ V8 b5 i7 ^
  10912.         old_error  *error*            ; save current error function
    $ u! j6 B9 h3 |+ a
  10913.         *error* ai_error              ; new error function
    ( }# s& |5 \9 i3 [, P  z! Q
  10914.         old_osmode (getvar "OSMODE")  ; disable OSNAP for duration
    6 u9 n8 a  O; e
  10915.   )
    4 w9 B/ r$ f' W

  10916. 8 W. j( }4 ^$ l( F4 {
  10917.   (setvar "CMDECHO" 0)
    3 g$ ~* d% l' O, B8 y5 _% b
  10918. 0 i' ]% Y( S4 U6 v3 U  K
  10919.   (cond
    - N6 q6 |( D! I
  10920.      (  (not (ai_notrans)))                     ; transparent not OK* A7 W) o8 f: T6 a8 F) u
  10921.      (  (not (ai_acadapp)))                     ; ACADAPP.EXP xloaded?
    : B0 A5 ^- ?2 \5 r4 X
  10922.      (  (not (setq dcl_id (ai_dcl "dducsp"))))  ; is .DCL file loaded?" U9 z. j$ {# S: P3 q
  10923.      (T (ai_undo_push)
    1 j! ^2 l5 B% k
  10924.         (setvar "OSMODE" 0)$ g% ]  t( e- d* Y
  10925.         (ai_ucsp_main)
    - e3 n2 ]" z2 z1 y8 g
  10926.         (setvar "OSMODE" old_osmode)( U9 k! q' c# M$ a  o1 B
  10927.         (ai_undo_pop)! Z# I% ^/ U( t+ h
  10928.      )
    ) f2 h( Q, ?" @
  10929.   )+ d: `: t/ `4 H# }; N) y: E

  10930. , E( a+ K  t% |3 d$ ~- n6 y3 D4 k
  10931.   (setq *error* old_error) - ]% \5 H4 ~* @" q& K
  10932.   (setvar "cmdecho" old_cmd), j) c* X! X8 i" C$ k3 E9 E
  10933. 7 k) ~/ B: J* E
  10934.   (princ)
    . L/ w7 ]1 o4 g  b6 W1 _; f. w9 ?
  10935. )
    $ ~, |7 n; C1 a% X" c

  10936. # o8 d# P; ^1 z) v6 r) R) Q" s
  10937. (princ "  DDUCSP loaded.  ")1 C) q. |7 B, V$ N6 k
  10938. (princ)  v( D8 @( p) y# c
  10939. ; y# n- m# l2 d' }0 }/ Y
  10940. ;;;???;;;---------------------------------------------------------------------------------------) f0 r3 l9 U9 m% c3 m

  10941. 2 c; L6 o2 |' o7 h  }+ f% O
  10942. ;;;----------------------------------------------------------------------------
    # `" [* i3 z1 A1 Q/ J
  10943. ;;;& J6 w. ^" \+ z
  10944. ;;;    EXCHPROP.LSP    ; k) L2 L8 d2 z4 A: k5 O, ~
  10945. ;;;    Polyline and text modification capabilities added by ) I1 O: T6 Z: i/ X9 h3 B0 h
  10946. ;;;    Randy Kintzley  
    ; J( M. l  M/ k& I) j2 L
  10947. ;;; 4 i' N# y$ x2 l$ ]  j/ F
  10948. ;;;    Copyright (C) 1997 by Autodesk, Inc.
    ; F  N$ s  S: u; ^  V. U
  10949. ;;;) k9 W- C' Y! s0 S6 y: T4 P
  10950. ;;;    Permission to use, copy, modify, and distribute this software- \; L& C5 v" r* K' t# ~
  10951. ;;;    for any purpose and without fee is hereby granted, provided( B! g4 z) G3 N+ G( }  f* |+ e4 Q
  10952. ;;;    that the above copyright notice appears in all copies and
    0 R/ l6 {3 v' ]- V% `" d
  10953. ;;;    that both that copyright notice and the limited warranty and* Q9 @( J# N) D6 [7 {: @8 q. o/ ?' }7 @
  10954. ;;;    restricted rights notice below appear in all supporting
    0 k, G. X0 @" H' D& I2 a5 Y: z
  10955. ;;;    documentation.
    - o0 m; y8 d3 h6 `; z% M! Z8 u' Z
  10956. ;;;0 W" N- C+ g6 O( Y
  10957. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.  Z. x5 j1 x" O& o; ?
  10958. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    " }2 x& Q' {* |2 T4 {9 r" y! i9 M
  10959. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    6 k7 m* E6 @$ i7 ^6 x
  10960. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    8 k' C3 O6 X' e7 D
  10961. ;;;    UNINTERRUPTED OR ERROR FREE.
    * I. V# s; T$ @0 v4 C9 F0 D" [
  10962. ;;;
    ( |# h9 b, m" W; n8 A
  10963. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to' o1 t" |  n, V- H- }
  10964. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer6 M" @5 r/ ~3 @/ {6 e
  10965. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii). D; ?7 ?2 L' B( \) Y! \- l
  10966. ;;;    (Rights in Technical Data and Computer Software), as applicable.
      ~$ I9 l+ \7 o! D! w7 H* w& h
  10967. ;;;. \+ }4 f! V# B! M5 j$ W
  10968. ;;;.
    . G3 o) A4 S' M# z0 _0 ]; Z
  10969. ;;;    28 February 1997
    3 J# I* k" z1 q& ~7 t/ @3 T0 _
  10970. ;;;  S' N/ X# ]1 G8 d+ }
  10971. ;;;8 M# w: G. C' \* \/ ?9 r/ Z8 H
  10972. ;;;----------------------------------------------------------------------------; D$ a& v" {! }) ^
  10973. ;;;   DESCRIPTION
    3 G4 B+ Y+ R% {- @4 x
  10974. ;;;----------------------------------------------------------------------------
    . v$ v! N5 F% a7 G( Y
  10975. ;;;   C:EXCHPROP is an extended or enhanced version of ddchprop. This  2 R( w  ~6 y% L# V5 I7 q, p# u8 _
  10976. ;;;   command gives the user the abilitie to change several characteristics
      |( R" k( N0 }3 E8 J3 e* g
  10977. ;;;   of selected polyline and text objects.
    ( B+ y$ n8 f1 X4 D' N! k6 @
  10978. ;;;       The style and height of selectected text objects can be modified 7 W( A$ s4 B) P. Z, P7 l
  10979. ;;;   (including text, mtext and attribute definitions) as well as, width and 8 e3 A# d/ n5 M1 L5 C! ?$ P" D, z
  10980. ;;;   elevation characteristics of selected polylines (includes lightweight and * z+ W( w6 D( m; V
  10981. ;;;   traditional polylines.)
    5 \/ e' m) {% r9 m" X  h
  10982. ;;;----------------------------------------------------------------------------: t6 m4 s+ w( \9 j# J$ S* V
  10983. ;;;----------------------------------------------------------------------------) [# Z  c3 ~5 d' M
  10984. ;;;   Prefixes in command and keyword strings:. y/ K# u' Y) t1 Z: N3 F
  10985. ;;;      "."  specifies the built-in AutoCAD command in case it has been
    4 [+ B6 `5 Z# r* |2 r7 U  @
  10986. ;;;           redefined.
    9 ^! Y( |! O4 e* l
  10987. ;;;      "_"  denotes an AutoCAD command or keyword in the native language, m, Q5 i' Q' f
  10988. ;;;           version, English.
    + v$ ~$ L. n" F7 g
  10989. ;;;----------------------------------------------------------------------------, h4 M2 ~7 P) y  [( j/ I) ]
  10990. ;;;5 }' i0 r9 x2 L  |; v+ W! b, ^$ P' X
  10991. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    4 s# F- G2 K" y0 {8 l
  10992. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    / G4 i& x5 g0 Q! e& S
  10993. ;Functions created as result of loading file: exchprop.lsp
    ( Q5 y! k2 _/ Z2 G$ Q
  10994. ; DDCHPROP25 a2 A5 W% O* B* G3 Z4 F
  10995. ; DDCHPROP2_INIT
    1 ~- n# x0 F, a: a4 T+ e, r6 A
  10996. ; DDCHPROP2_SELECT
    ) V+ F5 @* V: q' L  h, ~
  10997. ;
    2 U7 y( F/ x8 @4 e% ]( M
  10998. ;Variables created as result of loading file: exchprop.lsp4 D4 L& l# p; [3 a4 u) I
  10999. ; OLD_ALLOC$ |( U8 f9 _% }- F1 [5 O7 y
  11000. ;  V) H9 y4 S) m( D; Q
  11001. ;Functions created as a result of executing the commands in: exchprop.lsp
    5 L9 r! S: C9 ~- `1 c
  11002. ;
    0 X" p6 [5 `1 E+ W/ O( f* u( X
  11003. ;Variables created as a result of executing the commands in: exchprop.lsp; L7 H0 P6 m3 K3 P/ F
  11004. ; AI_SELTYPE, v, ~/ n& ~8 g0 Z. J6 A: t
  11005. ; BONUS_ALIVE3 V3 w1 |) e' S! `1 v! E( m# ?  E
  11006. ; BONUS_OLD_ERROR# h! _' Z) g& ~: f
  11007. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# C6 ], q* A: {6 S2 u  ?8 ]- R/ _+ ?
  11008. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      q/ S$ [; J& g! Z9 j. }

  11009. " P, D' V: j& r
  11010. ;;;6 b( Z" O( n) E' q) O2 X( [
  11011. ;;; Avoid (gc)s on load to improve load time.3 x4 m! Y/ E- \8 d6 [; X
  11012. ;;;
    " A/ U2 Q  R( F" s0 B6 u' l3 O
  11013. (defun do_alloc (/ old_allod new_alloc)  r+ W" U2 n9 {* T
  11014.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))- E" d( w4 F0 x, |) T
  11015.   (expand (1+ (/ 4750 new_alloc)))
      ?6 w  s/ C! h) i# d3 O
  11016.   (alloc old_alloc)
    2 H* |4 V; ]. [9 i
  11017. );defun0 }6 ^; }, F+ `2 v2 P  ]3 H8 a
  11018. ) P8 I0 U& ^$ G, V7 U0 A0 W
  11019. ;runs at load time - rk6 q2 L7 c! {( V& n" R) N7 d
  11020. (do_alloc)
    4 L: x- x. i/ k2 Z) S# m; w" x' y
  11021. (setq do_alloc nil)5 x. I& B; b7 B1 ]/ l( i6 G
  11022. ;;;
    4 p8 a! P1 k  T5 _! S
  11023. ;;; ===========================================================================& J% }6 x+ U# ?6 }; p4 c9 b4 y2 ?4 J
  11024. ;;; ===================== load-time error checking ============================
    5 [- k$ ^, h5 ~5 f
  11025. ;;;
    ; b( H; a/ d0 {+ \+ F
  11026. 2 }! m1 n  _0 J  c
  11027.   (defun ai_abort (app msg) + d, T3 W, @( g5 d6 J" _
  11028.      (defun *error* (s)0 T- u( w3 J& b  l  j. Y2 `
  11029.       (if old_error (setq *error* old_error))0 Y7 l6 {& z  m2 Y2 E
  11030.       (princ)- h! y- m/ r" e# V
  11031.      );defun% U0 l$ |9 k1 ~' K, Y3 I
  11032.      (if msg  Q) f1 e% ~7 z) W. g# U
  11033.        (alert (strcat " Application error: "4 G& g$ x8 \. z8 B! f6 ~3 g; j
  11034.                       app% Z' l6 @$ o$ h& U- Z  e/ Z
  11035.                       " \n\n  ": n" B/ N! u8 z$ m
  11036.                       msg, s4 u" @1 w0 _, h& H
  11037.                       "  \n"
    & [9 Z5 M4 B# x% u& Z
  11038.               )
    1 H+ R3 [! \5 _
  11039.        );alert
    ( i, Y- A( R/ d; y0 \* Z4 R0 U
  11040.      );if
    5 F8 o9 O; y( u- x
  11041.      ;(*error* msg)  i  b* p5 G4 C9 \+ `/ t. }/ {7 t
  11042.      (exit), ]* B6 w: N0 Q$ e* O/ G
  11043.   );defun ai_abort% c+ @  G4 @: H4 d

  11044. ) `9 Y5 J4 [  `) v
  11045. ;runs at load time - rk
    3 }4 o) h7 e, a8 H
  11046. ;(if (and *error*      ;added the if wrapper around this - rk.- q9 R3 s- i' \9 A
  11047. ;         (not old_error)      
    6 r- q4 C1 i; [6 h
  11048. ;    );and : \8 o0 P% X/ M) y9 O
  11049. ;    (setq old_error *error*);setq
    * w% k8 a2 W+ E/ G0 [5 R/ I
  11050. ;);if
    ! O- D- ?8 O% _  I7 ]
  11051. & k& A8 J, ^* |3 A6 [! n

  11052. / \) c4 q, K$ a! {8 [2 e4 L6 G+ m2 m
  11053. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    # p" \) T! U7 A0 b
  11054. ;;; and then try to load it.  f0 ]7 n" h4 E$ t# ?# l
  11055. ;;;
    : o6 ]/ P$ o8 P2 [5 \
  11056. ;;; If it can't be found or it can't be loaded, then abort the
    7 j' Q; e. u! r4 P  D* D8 s
  11057. ;;; loading of this file immediately, preserving the (autoload)
    ) n" \+ U' F* W4 E4 L2 b7 V0 x
  11058. ;;; stub function.
    / }- b- d/ A% S+ r* a

  11059. ' s# J, `! s  p" v, g% ?0 Z
  11060. ;runs at load time - rk.
    5 o+ }  D. O4 `/ I% z, _! W
  11061. (cond
    3 f! h. S5 H/ E/ j: ~) v- }
  11062. (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.- I0 f  y1 z! }* o/ r
  11063. (  (not (findfile "ai_utils.lsp"))                     ; find it
    $ m2 [: Q1 z. s$ h( l( D- S6 G
  11064.     (ai_abort "EXCHPROP"
    ) k; d. q  D8 P4 T/ y8 w: w
  11065.               (strcat "Can't locate file AI_UTILS.LSP.", ?& i( @' _2 ?; [5 H" R' A
  11066.                       "\n Check support directory.")
    6 n3 G5 Z! i, ]6 f$ ?
  11067.     );ai_abort
    ; N3 [: ^& v! c3 u6 s2 s. {3 K
  11068. )" @1 C6 p# N/ L
  11069. (  (eq "failed" (load "ai_utils" "failed"))            ; load it0 C, \, m2 }4 b
  11070.     (ai_abort "EXCHPROP" "Can't load file AI_UTILS.LSP")7 |/ m. [5 v( h5 ~3 p6 [& [
  11071. )
    ; V$ B0 k8 n: f1 E- i: w2 @
  11072. );cond close
    " x- a" l2 v& [3 v' J2 I% k0 l
  11073. 4 ^! T. G8 M  ^5 s% M  N; t
  11074. (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP* z+ f1 r. x$ X& `, m, [
  11075.     (ai_abort "EXCHPROP" nil)       ; a Nil <msg> supresses7 q  N$ v! Q0 O9 [8 u& J5 f8 E0 p' @
  11076. );if                                 ; ai_abort's alert box dialog.
    8 z+ I! K& E( {
  11077. " z' d& Z4 [' A
  11078. ;;; ==================== end load-time operations ===========================% B+ H1 V; h1 r- W
  11079. # L# [; X4 w9 N$ C" s% j
  11080. ;;; Initialize program subroutines and variables.( L, z4 L, L; U, z/ l
  11081. 9 v) E( J2 s* Y/ L
  11082. (defun ddchprop2_init()
      }8 _6 m! s  G( o0 Y

  11083. 6 f% I. a3 ?- G1 a9 l1 f

  11084. 2 e7 \' f4 O+ q& M

  11085. . }( N! T- r1 D* t5 v: b
  11086.   ;;
    ; a5 `& o: y9 Q
  11087.   ;; Define buttons and set values in CHPROP dialogue box
    : z5 t+ d& o9 a# u3 U9 d; d
  11088.   ;;
    1 e4 K: @5 Y$ ?
  11089.   (defun call_chp2 (/ cmdact p1 p2)! B! M6 X2 _8 Q* Z& x8 n9 D

  11090. : j3 l. r/ A5 Q! I
  11091.     (if (not (new_dialog "ch_prop" dcl_id)) 6 g& ~: i# I. n9 p" u9 i/ \
  11092.         (exit)$ T. F; F4 Z  c
  11093.     )# Z% ^  `' ^& o. }( K

  11094. $ R# }; s+ K& v: J
  11095.     (set_tile "error" "")
    6 a9 l& \- i6 K& F& a. u* y
  11096.     ;; Set initial dialogue tile values
    . Q' [4 Q& G" z. y- [, O
  11097.     (set_col_tile)3 v+ T5 L1 T* U' V1 s8 L
  11098.     (set_tile "t_layer" elayer)
    1 ]0 E. l! K9 m9 N$ H, z. O

  11099. - O/ i. N1 P% j3 @& i- }/ G
  11100.     (cond5 w5 O2 w) U2 g. _  [( c
  11101.       ((= lt-idx nil)& g6 ?& B) j- s2 A
  11102.         (set_tile "t_ltype" "Varies"). K+ w0 N5 Y, G1 L2 v, r/ U
  11103.       )
    7 L4 v; Y( x1 D( @+ f& r1 u1 q
  11104.       ((= lt-idx 0) ; set tile "By layer & layer linetype"
    9 M) ^; d% a6 H3 I1 p$ D! J8 t7 B
  11105.         (set_tile "t_ltype" (bylayer_lt))7 G8 l: ?' u2 ~9 S" p! n. \; c
  11106.       )7 E( L! b" J/ l0 S: m0 h
  11107.       (T, Y3 }+ ^+ g& u" z+ E. p
  11108.         (set_tile "t_ltype" (nth lt-idx ltnmlst))6 e7 B* H, X! T+ O# \9 {! }# n
  11109.       )
    ) F! ?5 X- K. F! w; x5 b5 u
  11110.     )' ?% U( p9 s: c/ l3 d3 z) t

  11111. + R+ p0 V% \' a/ f8 b
  11112.     (if (or (= ethickness nil)
    - x* l! g5 X, N9 Q7 Z# x
  11113.             (= ethickness "")
    ( N" A* A& C! K2 H
  11114.             (= ethickness "Varies") 8 P$ d" Q! x' U! `& g
  11115.         );or' `8 _* @! m' W% c% w* o* s& y8 Y
  11116.         (set_tile "eb_thickness" "")/ |; e. O3 K+ Y5 n5 F
  11117.         (set_tile "eb_thickness" (ai_rtos ethickness))
    8 i0 r8 |+ O. e1 F6 s7 L) |
  11118.     );if% Q$ A# K  f9 c6 F/ ~" C5 S
  11119.     (if (or (= eltscale nil)! U; x- m: f9 ~. e" {/ G' ]
  11120.             (= eltscale "")
    ! @- b, T& n1 }" d
  11121.             (= eltscale "Varies"): k9 M# ?1 e/ l& x2 k7 \" X

  11122. & u1 Y: `0 `+ I
  11123.         )
    # D# h* S  M+ s  f
  11124.         (set_tile "eb_ltscale" "")
    * @2 j: q3 }5 [
  11125.         (set_tile "eb_ltscale" (ai_rtos eltscale))& c4 D8 S6 h; n8 k$ Q# \- z+ k
  11126.     )
    0 R' w6 ~. v8 {8 y
  11127.     (if
    6 O# ~" Z7 H/ H3 Z' c: p
  11128.       (numberp ewidth)5 B4 P0 R; A4 m& o5 T
  11129.       (set_tile "poly_wid" (ai_rtos ewidth))
    1 R; ?# }% u# E4 h, W% R
  11130.       (set_tile "poly_wid" ewidth)
    2 Y) [( M$ p0 K
  11131.     )' {. s# O) ^& M2 _" Y
  11132.     (if( F- G$ `- e, C/ A
  11133.       (numberp eelevation)
    : _1 V0 |2 K' w0 [8 T
  11134.       (set_tile "poly_elev" (ai_rtos eelevation))
    & M& V3 y( k/ `1 N  }
  11135.       (set_tile "poly_elev" eelevation)
    2 Q9 R+ ~$ W4 I
  11136.     )$ Y5 m- G5 [/ @% {/ b* w7 V
  11137.     (if
    / C0 t  C/ q+ h
  11138.       (numberp eheight)) ^/ d# _4 Z' \0 U' P  e, E$ Q( I7 u
  11139.       (set_tile "text_hgt" (ai_rtos eheight))$ i* w+ |& R" |9 L8 q, R
  11140.       (set_tile "text_hgt" eheight)5 k8 d1 G  T# x& `8 b  ]# _
  11141.     )
      X5 V, @4 J! y& F8 ]5 S0 O
  11142.     (if (not estyle)" P% W& M0 C7 s* x, h; \, B
  11143.         (setq estyle "")
    % L& W1 L" z5 I& b( ?
  11144.     );if
    2 ]5 H# i3 ~0 M/ O, P
  11145.     (setq hair_style_list (tnlist '("style" 16)));setq
    + e* t* |0 M" a# g# \* `
  11146.     (if (not (member estyle hair_style_list))$ H" k( ]$ C  n" k1 p, K
  11147.         (setq hair_style_list (append hair_style_list (list estyle)));setq" E; E3 [, w0 O
  11148.     );if , _) r: g* T' b; g. g& Y

  11149. # d( k: B- U0 W% g8 c  x8 j% B
  11150.     (setq hair_style_list (acad_strlsort hair_style_list));setq
    " b& \, J, ~* X* N6 _
  11151.     (mpoplst "text_style" hair_style_list)1 O$ {5 g; r+ l2 {
  11152.     (set_tile "text_style" 2 o5 h# F, z6 }/ h. N
  11153.               (itoa (position estyle hair_style_list))
    * E+ }5 o; O, V' S2 y6 J. H) K0 o) p- \
  11154.     );set_tile
    # E0 w- X. P. _2 u- ~& ]
  11155. - M& m, J" j% H. ^9 a* u
  11156.     ;; Disable tiles if need be...  ;@RK: \: L8 n$ z8 S
  11157.     (setq a 0). @0 F/ c- b1 R+ H9 \2 {  C
  11158.     (while ( < a  (sslength ss))
    " a( c% c/ |5 x1 G
  11159.       (setq which_tiles4 m& w/ R3 N; ?# @& v
  11160.             (ai_common_state (cdr (assoc '0 (entget (ssname ss a))))))2 z4 f* w2 x* p* n
  11161.     1 E& h7 g: R' E0 f5 O
  11162.       ;; If all fields are enabled, don't bother checking anymore.
    - p6 h- \, X  q) p( z% c
  11163.       (if (/= which_tiles (logior 1 2 4 8 16))1 g7 n+ W2 g6 b( n
  11164.         (setq a (1+ a))  ~" G0 T5 ?4 {: }! E3 c4 @
  11165.         (setq a (sslength ss)): {0 Q& c% a5 f, u: R1 i4 ], b
  11166.       )! H7 `% J. k; P- i7 p# n
  11167.     )# W% G: y% m  n  d/ ~
  11168.     ;; Layer Button and Text Field
    : e# B6 o1 }9 C4 [% i" T' Y) Q
  11169. ' M4 H1 N- O2 F0 U% F
  11170.     (if (/= 1 (logand 1 which_tiles))
    7 L, o/ W! m0 [
  11171.       (progn
    ) W' W7 L- ]. D# r; M
  11172.         (mode_tile "t_layer" 1)
    ' u3 i+ n% e& c' s7 N
  11173.         (mode_tile "b_name" 1)8 T' a5 c' t6 V; U! T0 ^9 S
  11174.       )1 ?- i) C5 @: ^/ b; o+ e
  11175.     )
    6 f9 i# N- `' x, t) D$ m4 I
  11176. 3 l( i' @) z7 i3 U
  11177.     ;; Color Button and Text Field2 e* U. w* a2 Q+ {! b8 u
  11178.     (if (/= 2 (logand 2 which_tiles))% E6 p7 v5 r2 g: c! F9 k
  11179.       (progn( k2 l- Q5 x& m) T% K4 E
  11180.         (mode_tile "t_color" 1)
    4 x; Q6 `0 |+ ~
  11181.         (mode_tile "b_color" 1)
    7 E* o( ^  T, @9 q; B
  11182.         (mode_tile "show_image" 1)
    0 Z" e2 h3 Z- f7 w: b
  11183.       )
    % `9 r+ r# R( O- l! [
  11184.     )
    % X% M' ]- S4 x
  11185.     ;; Linetype Button and Text Field* F: x0 p; x( n% B1 P
  11186.     (if (/= 4 (logand 4 which_tiles))
    8 Z" [. Y4 M- S9 ?2 I+ ^0 j1 x
  11187.       (progn
    ( Y! F+ F% I8 B) Q" [+ H
  11188.         (mode_tile "t_ltype" 1)
    ! Q& P7 F, w4 K$ u0 l4 z: |9 ?
  11189.         (mode_tile "b_line" 1)0 x( s1 N$ a$ |$ p5 W
  11190.       )6 R  s- M& f5 J& o# k, G8 r  q
  11191.     )
    4 m% v. l7 l  M& g/ u
  11192.     ;; Linetype Scale Edit Field; c' V; ^: {7 c% @) n6 U- Z% C
  11193.     (if (/= 8 (logand 8 which_tiles))( [" M% j7 A' l/ q; ]# J1 @# K
  11194.       (progn4 J2 k7 y; \" R
  11195.         (mode_tile "eb_ltscale" 1)& Y" v- p$ p( `/ `: u
  11196.       )
      D$ b& ~$ y: o
  11197.     )! q4 D2 Q7 U# C* Z  B/ E* k
  11198.     ;; Thickness Edit Field., h2 m% d# k, U7 I9 I
  11199.     (if (/= 16 (logand 16 which_tiles))
    1 }5 R% n4 O' p2 x" ?
  11200.       (progn- r) Y) T& E" Q: G: V
  11201.         (mode_tile "eb_thickness" 1)
    / T. H# {$ q) l& U& \
  11202.       )
    2 S) y. ]: }( r- k" E  d& n
  11203.     )% O& H. U2 X+ ~4 ~
  11204. $ g/ n8 d* s/ M5 |3 c/ j0 ?
  11205.     ;; Polyline box and tiles          @rk 10:05 AM 1/30/97
    ! b5 `2 q% r, v: P( @2 R0 _# R
  11206.     (if (not (= 2 (logand 2 eflag)))
      ]! ?4 y, W. V2 N, {
  11207.         (progn  `7 q4 J& B9 s. q4 L' e. d8 f' A
  11208.          (mode_tile "text_hgt" 1)
    # L8 K$ `  q# u* \- O
  11209.          (mode_tile "text_style" 1)
    . x, F- l7 p* w5 t- G. @! f$ j- O2 I' t2 k
  11210.         );progn
    " y4 F4 X, y8 _* b4 w$ q
  11211.     );if$ k1 W9 g7 M% j( k$ \
  11212.     (if (not (= 1 (logand 1 eflag)))& @* v2 f- u4 T# j' s0 w% T3 m
  11213.         (progn   b/ Q! R, N5 O& L2 Q1 ~
  11214.          (mode_tile "poly_wid" 1)
    $ a( N& r- h+ D- U- q7 ]' |
  11215.          (mode_tile "poly_elev" 1)
    ! i8 v/ K) w1 ]4 q0 h8 U  ~
  11216.         );progn then disable polyline fields
    # [& `; I# h$ p9 p9 q6 M3 X: m9 f+ c
  11217.     );if
    ) X5 g3 P2 p! m

  11218. ; p4 v. i' \1 f! M
  11219.     ;; Define action for tiles' P) U9 Q) f  C' l* K4 O. B
  11220.     (action_tile "b_color" "(setq ecolor (getcolor))")( L6 _5 v2 m  |5 f' f
  11221.     (action_tile "show_image" "(setq ecolor (getcolor))"): Y" F& ~2 Y4 I; B/ ~' z. G- S1 h
  11222.     (action_tile "b_name" "(setq elayer (getlayer))")- F% C: B3 Q% k9 s1 _0 j1 i
  11223.     (action_tile "b_line" "(setq eltype (getltype))")6 k8 C2 _  ~7 N+ W+ A
  11224.     (action_tile "eb_ltscale"  "(getscale $value)")
    : d; _0 T& y- z8 h# q6 [2 L
  11225.     (action_tile "eb_thickness"  "(getthickness $value)")
    4 C: Y6 j) A  g: C" I* W7 \
  11226.     (action_tile "poly_wid" "(getwidth $value)")* h( v6 z% _  @# \$ x
  11227.     (action_tile "poly_elev" "(getelevation $value)")
    8 O9 J- ~1 p) D1 A
  11228.     (action_tile "text_hgt" "(getheight $value)")" Y3 F/ V* j& J: r) J
  11229.     (action_tile "text_style" "(getstyle $value hair_style_list)")
    & \7 c. a' \. D4 v4 X) Q
  11230.     (action_tile "help" "(help \"AC_BONUS.HLP\" \"EXCHPROP\")")
    ' O& g4 q2 K2 e3 e
  11231.     (action_tile "accept" "(test-main-ok)"). ~$ O9 }4 \+ s) c. \$ ^, j* ?

  11232. # ^1 c3 Q5 _. Y) E# h1 F7 b
  11233.     (if (= (start_dialog) 1)6 q+ s7 t5 O. j
  11234.       (progn
    : G; z2 S/ J5 N" E
  11235.         ; Update special properties for polyline and text selection-sets.
    6 G. e& {5 p/ ~$ C! ?5 E$ h
  11236.         
    5 F/ `3 D6 q' a4 _; m
  11237.         (if (and (= 1 (logand 1 eflag))   ; polylines rk chprop, S" X' K3 b% t% x( o
  11238.                  (or ewidth+ s% a& c! `. p2 Z' z7 C- K# Q
  11239.                      eelevation# t6 P/ C8 h. \: I8 y
  11240.                  );or% o' V  X& z! t# P% w& Y4 R
  11241.             );and( {% p2 J! ]3 l4 n! l, [( F- }
  11242.             (progn
    4 H2 g1 }& c3 |. |
  11243.              (setq  ss-index 0
    / a3 c3 |4 Y* v! j
  11244.                    ss-length (sslength poly_ss)
    ( q- h/ ^/ `6 _" _# Y/ X
  11245.              );setq
    0 N# [/ E/ q0 e& @- L& O
  11246.              (while (< ss-index ss-length)- r; X; A" L; n0 P0 V1 x
  11247.                (setq ename (ssname poly_ss ss-index)
    1 b( a& K: R1 M( o
  11248.                      elist (entget ename)
    . \) [. d: X6 [3 y$ X- c
  11249.                );setq. }6 P, W. H: ?% q0 o
  11250.                (ucs_2_ent (cdr (assoc 210 elist)));this function lives in ac_bonus.lsp* O1 N: f: f/ b2 u7 r3 G
  11251.                (if ewidth
      H3 F: c" ?1 S1 i, w" W
  11252.                    (command "_.pedit" ename "_W" ewidth "_x")% a6 Z3 ?# E$ K# [
  11253.                );if 7 L% S! h- m8 `$ T2 ^3 x9 J
  11254.                (if eelevation
    : T6 T$ i6 N  A4 S8 O: ]3 S
  11255.                    (progn
    " f9 o0 A/ L' H/ V. J* X* _
  11256.                     (setq p2 (list 0.0 0.0 eelevation));setq- Q+ ^3 n  N) ^: ]
  11257.                     (if (equal (cdr (assoc 0 elist)) "POLYLINE")! R" V9 s; V, {- T2 |" v" I
  11258.                         (setq p1 (list 0.0 0.0  t% o# Z% s# r! L* c
  11259.                                        (caddr (cdr (assoc 10 elist))); R0 [) A3 w- J# ~: w7 p
  11260.                                  );list
    " I" X, b2 w1 |0 e% {0 A7 E( \  q
  11261.                         );setq
    ' i0 d$ z+ q. x" l: d1 _9 @  W
  11262.                         (progn
    ) i, \% @8 L2 i3 r8 J' i5 Z5 k
  11263.                          (if (assoc 38 elist)9 U9 O" d2 A) A" P
  11264.                              (setq p1 (list 0.0 0.0
    + S" Y. \: R+ s& ^
  11265.                                             (cdr (assoc 38 elist))
    3 J# ]0 K- X  V- b4 X
  11266.                                       );list
    ' v; s! J4 x/ H/ N8 A- \
  11267.                              );setq6 [+ X/ q7 T* s0 S! P
  11268.                              (setq p1 '(0.0 0.0 0.0))- p, c( T2 \6 c5 x$ n
  11269.                          );if6 s: w% l9 ~8 e; n; B" c+ G( [
  11270.                         );progn ) ?7 j7 K1 [  W
  11271.                     );if
    6 U4 E7 G" k! y+ O* h
  11272.                     (command "_.move" ename "" p1 p2)
    : G' t! n& t: u( a
  11273.                    );progn then change the elevation of the polyline
    ) a' F, h7 i9 q* P( |8 f
  11274.                );if& m/ R" @/ {$ U5 p$ j
  11275.                (command "_.ucs" "_p")+ _! b8 V. A6 t! F  y6 a" A5 y
  11276.                (setq ss-index (1+ ss-index))6 [5 v; r9 x$ {. _/ y6 k5 x1 K
  11277.              );while
    / a6 p! P) _1 o2 n4 g; L2 ^+ h0 l( {
  11278.            );progn then polylines are in the selset
    ) v7 q1 R" D! _; x6 p$ J4 g
  11279.          );if/ z  U  w3 |7 V3 w4 T
  11280.          (if (and (= 2 (logand 2 eflag))     ; text4 `! h) s+ k& j$ ]. t" N6 H2 x& w/ w
  11281.                   (or eheight
    * ~9 ^' b% ^# G( U
  11282.                       estyle8 Y6 T7 C% n" b% c8 C6 }; m
  11283.                   );or
    ! \! d2 V: r5 V( B
  11284.              );and( l2 l" J! I  w0 @, P
  11285.              (progn9 `* {* D) g! g4 v% h8 k
  11286.               (setq ss-index 0 ss-length (sslength txt_ss))5 H8 A& R: c5 d  h
  11287.               (while
    8 c; X6 O# ^. }+ p8 j3 b8 g
  11288.                 (< ss-index ss-length)* {1 f" I, n& g
  11289.                 (setq elist (entget (setq ename (ssname txt_ss ss-index))))- A- {5 G: E0 D5 |5 T
  11290.                 (if (numberp eheight)
      s5 {8 b9 i$ `6 A, Q- k% }  q
  11291.                     (setq elist (subst (cons 40 eheight)/ ~; p* k+ Q! p3 n7 J$ E1 ~& V5 @
  11292.                                        (assoc 40 elist)
    2 H7 {* S/ C& J) i
  11293.                                        elist
    & P+ a% |4 @6 a/ Y! A3 |
  11294.                                 );subst7 U) q- ^5 G/ v' Q  m2 B
  11295.                     );setq7 p9 r. K& e/ q$ H* G
  11296.                 );if! Q+ j# ?* W. {
  11297.                 (if (and estyle ;(not (equal estyle ""))/ e9 M) k! k+ ^' }- S
  11298.                          (not (equal estyle (cdr (assoc 7 elist))))
    ' Z# B* A  E0 X' ?
  11299.                     );and9 o$ f, O' |- f' l7 W$ i0 Y; E
  11300.                     (progn  0 Q' M% p7 s; E6 s% B2 p$ D
  11301.                      ;rk. This needs to be implemented as per mtext font issue in                                                                                                          ;    ddchprop_notes.txt : C* |2 C7 O5 T# u" H
  11302.                      ;(if (equal "MTEXT" (cdr (assoc 0 elist)))7 W, p( z% ?$ s& [: ^
  11303.                      ;    (setq elist (fix_mtext_fonts estyle - F" s2 ?% O! S) v8 @: Q! [# A
  11304.                      ;                                 elist. j5 |! u% T* M4 ?" m$ d
  11305.                      ;                )
    " r9 M9 H+ r0 J& F1 ~6 o7 C
  11306.                      ;    );setq then1 |' ]) j7 d' ]  F- N2 p+ [* Z9 w6 Z
  11307.                          (setq elist (subst (cons 7 estyle)2 r5 G5 {5 N, h) P) h
  11308.                                             (assoc 7 elist)
    2 k( e4 W; }( w( `, y& w
  11309.                                             elist
    * m+ M) G+ j7 J; V
  11310.                                       );subst
    - r% a' x) h, ^6 f$ F2 u' V3 W
  11311.                          );setq else
    7 P1 e" w  p9 |& G+ e! P
  11312.                      ;);if
    1 _" q9 q- e9 [: y: N
  11313.                     );progn
    3 a4 P3 m. B/ S0 d& _2 w* ]: I
  11314.                 );if
    " c; T+ {6 g' r" G1 D) Y9 @
  11315.                 (entmod elist)3 L# X- i; f4 _8 X. d2 n( b! a
  11316.                 (setq ss-index (1+ ss-index))4 c- M9 y( d9 ^/ x8 ^9 X
  11317.               );while
    % V. l: g* v+ l5 L. j( Y3 `
  11318.              );progn then
    % x  c0 s* A+ j9 D% S9 E) I
  11319.          );if
    $ L  ?/ i% \% N, W0 m( Z( E' B

  11320. * i& s9 b# D; _+ I
  11321.         (setq cmdact (getvar "cmdactive"))9 N# _6 _7 E& E
  11322.         (command "_.chprop" ss ""), N7 C' T  @' v8 A
  11323.         (if (/= cmdact (getvar "cmdactive"))  ; Is CHPROP actually running?9 h5 g# R8 C5 `& i- u
  11324.           (progn9 g  c7 g- d7 U: H
  11325.             (if ecolor0 ~! p# p) O' _. d- G
  11326.                 (progn9 V* p  B; q) E3 B) C+ v# D
  11327.                  (if (= 0 ecolor)   (setq ecolor ;|MSG0|;"BYBLOCK"))' ^+ W% S# K! ]* P
  11328.                  (if (= 256 ecolor) (setq ecolor ;|MSG0|;"BYLAYER"))$ J! ]# V: t( k9 Q3 a
  11329.                  (command "_c" ecolor)
    3 Y$ u% F' n* h4 n
  11330.                 );progn then$ ?' B7 A* m* E/ k0 ~# o' G* a: J
  11331.             )
    1 L" M0 A6 g- R& v
  11332.             (if (and lt-idx
    - A  B" Y8 B8 a5 R2 o5 U5 J+ z
  11333.                      (/= eltype ;|MSG0|;"Varies")
    : h1 Q/ p2 T% A4 z  B, B1 x8 ~8 P' Y
  11334.                 )
    ; x% a7 }  R" q( k
  11335.                 (command "_lt" eltype)% j. r( O! y1 @" b. [0 K" p
  11336.             )
    ) B1 N( C8 ]7 J( d8 c, }8 b1 K, d
  11337.             (if (and lay-idx 3 H6 u6 Z% {, l
  11338.                      (/= elayer ;|MSG0|;"Varies")$ `( E, M9 z1 y" z6 s
  11339.                 )  W- H0 g; g6 m! T6 f7 Y+ h
  11340.                 (command "_la" elayer)' o2 X; n; h- @5 P3 r* n5 e& M  e
  11341.             )' [0 t2 ^. M) Y% _) e
  11342.             (if (and ethickness
    ( B2 j8 X1 C9 O. z
  11343.                      (/= ethickness "")
    1 k4 {* t6 ~: H5 D4 @
  11344.                      (/= ethickness "Varies") 5 _; a! r! ^7 G4 g- @
  11345.                 )! S) d" U! p; h6 c1 a; ^
  11346.                 (command "_t" ethickness)* ^) y3 Q1 c* E
  11347.             )
    2 a4 n/ {. U8 m1 D- s  \
  11348.             (if (and  eltscale (/= eltscale ""))* o+ J' K; M+ N- e$ c
  11349.                 (command "_lts" eltscale)3 K2 T; o5 q8 ?( Q, x
  11350.             );if
    ) O3 r7 l4 M3 K& x
  11351.             (command ""). Z# E6 z  b7 W/ W1 m
  11352.           )
    3 D* ?, l  @6 y$ v3 `
  11353.           (princ "\nProperties unchanged")  ; CHPROP didn't like our SS set/ g$ P7 b7 A& K0 P- @/ M
  11354.         )
    , e  ^; f7 @* G2 c1 S3 R# U
  11355. + R  O6 P0 ^* d7 R9 y
  11356.       );progn then OK was picked in the dialog.
    ' }3 {# S  n8 a/ y- Y4 x  e# b
  11357.       
    ( }! g4 w9 j. b7 v
  11358.       ;; Fred GERBER - 25-AUG-947 y. i' h* L" T( b
  11359.       ;; Don't print the "Properties unchanged" message when the user cancels2 G* J$ e) L7 H7 U. ?) T
  11360.       ;; the dialog because he knows that already (otherwise he would have3 a  o! Y6 S: f9 {* I1 j' K
  11361.       ;; hit the "OK" button). Display the message only if CHPROP fails for
    ) t0 L! [/ k- T& B
  11362.       ;; some reason, because it is not the expected behavior of the command.
    , P% N4 ]) U9 w  J5 U$ `
  11363.       ;;
    . j+ I9 s. k- k& q. w. `' _- f- l# r
  11364.       ;; (princ ;|DDCHPROP2_LSP_8|;"\nProperties unchanged")0 |9 s& j0 n! V3 R" y
  11365.     );if
    8 D  ~  B1 L! z
  11366.     (princ)4 r8 ^+ a# R7 |( X& \; j; O
  11367.   );defun call_chp26 `8 F( d& a! g+ S$ j
  11368.   ;;1 v4 G4 s: R! d; Y$ |/ i1 x
  11369.   ;; Function to set the Color text tile and swab to the current color value.6 }. V8 Y( v/ f$ H
  11370.   ;;7 D, o) R& w) K  [! U
  11371.   (defun set_col_tile()
    4 V' ]3 U  @: M+ P  R6 Y) x
  11372.     (cond
    # X7 X% R2 W! O
  11373.       ((= ecolor nil)$ S- N6 s( b, M" R- _$ D7 Y
  11374.         (set_tile "t_color" "Varies")' l+ F2 P: t! h6 ?  L0 S- @5 g
  11375.         (col_tile "show_image" 0 nil)
    " [7 O% A7 e1 `
  11376.       )% j1 G/ N: Y7 ^& Q$ y
  11377.       ((= ecolor 0): N4 Z9 y+ F% ^2 C% K% Y3 s
  11378.         (set_tile "t_color" "BYBLOCK")" I, V1 F$ i! L/ ^
  11379.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white- a9 f- ~! A* X2 v$ ~
  11380.       )% l- N/ ?1 C" u  D
  11381.       ((= ecolor 1)$ t3 z( t8 z/ u2 F% Q4 w
  11382.         (set_tile "t_color" "1 red")
    ( c! R2 {; Z/ c) l
  11383.         (col_tile "show_image" 1 nil)
    3 c& X9 I  [* o$ v& ~/ U0 g
  11384.       ); c  E# s9 m+ {- Q$ g' J) b' @( {
  11385.       ((= ecolor 2)
    ) T" U: t+ g$ `1 ~% U
  11386.         (set_tile "t_color" "2 yellow")! j$ ]; |' o, e! l4 P' N4 O7 V3 e6 q
  11387.         (col_tile "show_image" 2 nil)! t- }9 x* r6 m
  11388.       )
    5 x$ l  T& i& V
  11389.       ((= ecolor 3), r. E3 T2 ]" p* a
  11390.         (set_tile "t_color" "3 green")
      {: E% }" U& _  ~: A0 c
  11391.         (col_tile "show_image" 3 nil)0 a4 V! o9 T9 n
  11392.       )
    * C* b2 r$ c* C5 f5 }9 i0 s
  11393.       ((= ecolor 4)
    % }" w3 I( o  e- c6 b  s9 L, n" j
  11394.         (set_tile "t_color" "4 cyan")
    9 T! B. P/ n# R4 ~
  11395.         (col_tile "show_image" 4 nil)1 }! e: O7 s* ~
  11396.       ): i. v" X" ^, w9 z' e& B
  11397.       ((= ecolor 5)
      f5 r2 a& s% P" k, i8 F0 l# P
  11398.         (set_tile "t_color" "5 blue"); T0 P, Z% K. M/ g( z8 {
  11399.         (col_tile "show_image" 5 nil)
    6 E: |; m  \% a  |+ ?
  11400.       )
    - _" L& [: \8 V% D8 Q& Y
  11401.       ((= ecolor 6)
    $ @) r7 ?8 p5 m, ]2 e' C
  11402.         (set_tile "t_color" "6 magenta")
    1 p! ~0 W$ J: g& M6 D
  11403.         (col_tile "show_image" 6 nil)& y. U" `$ ?% ^; g. k
  11404.       )
    , U* R5 [- ?1 @$ P& H
  11405.       ((= ecolor 7)0 l" m. `5 \4 e# e5 b- q
  11406.         (set_tile "t_color" "7 white")' w! C/ G2 A, ]9 P! ~. ^# L
  11407.         (col_tile "show_image" 7 nil)2 _7 Y# e& {$ l: K
  11408.       )( ~* ^/ d/ D# |" \( d+ i, \6 k
  11409.       ;; If the color is "BYLAYER", then set the tile to) F9 L  M$ }- J4 M* E
  11410.       ;; show it's set By layer, but also indicate the
    ( @* }8 \" ?# J; M5 g. |
  11411.       ;; color of the layer - i.e. By layer (red)1 z( B: J* W  f5 H4 S
  11412.       ((= ecolor 256)0 i, K. o( T# ~  A/ a
  11413.         (set_tile "t_color" (bylayer_col))
      C. Q9 W4 y4 U; Q
  11414.         (col_tile "show_image" cn nil)
    " _( E0 j, J8 F( K1 P8 \4 }% O8 T& \" F
  11415.       )/ ]# e2 |' j, w5 n
  11416.       (T
    / p7 r* D% R$ X8 t# D( X7 S
  11417.         (set_tile "t_color" (itoa ecolor))
      i- a% R7 ?7 H7 }1 O# U
  11418.         (col_tile "show_image" ecolor nil)
    " U; H, \% j$ w. V
  11419.       )& o0 f/ V- C* T# p1 }( B  ~
  11420.     )
    4 g& j. k5 `& F6 b
  11421.   )
    : @  K$ @% B* l7 T, q* f0 i+ u) y- z
  11422.   ;;
    $ T: l" u0 M6 M6 i- B" h
  11423.   ;;  Function to put up the standard color dialogue.
    ( l: P6 s5 ^# y2 B
  11424.   ;;
    . R; d. _8 K  w, o
  11425.   (defun getcolor(/ col_def lay_clr temp_color)7 I7 E/ w+ \2 t  Q% M' u( u
  11426.     ;; col_def is the default color used when rq_color is called.  If ecolor
    8 a7 T& d% r+ d8 d8 K
  11427.     ;; is nil (varies) then set it to 1, else use the value of ecolor.! Q$ o) R9 S; ~
  11428.     (if ecolor
    # T) t9 M0 y% l. j+ ?% Y4 y  u5 S
  11429.       (setq col_def ecolor)& p. p" B/ D7 ]( a  F) A
  11430.       (setq col_def 1)* a" t) }9 D' q. `* P
  11431.     )4 l5 D5 ?5 {$ N! Y& n; V
  11432. & V) i/ @* @' W8 p3 Y: V" X9 L  o
  11433.     ;; If we're working with a single layer, get its color
    , B" Z4 U. F" |6 X
  11434.     ;; for use in the color swatch if the user selects color BYLAYER.) G3 S! r- v  W9 R8 J% N4 F" a
  11435.     (if (/= elayer ;|MSG0|;"Varies")
    , P& Z0 ?$ g1 l( @
  11436.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer)))); Z- `& W8 P0 Q. i
  11437.       (setq lay_clr 0)
    8 [( }4 K! N$ J8 K9 M5 ^
  11438.     )
    8 F; N2 ?/ g1 \& A" F2 y  q  A
  11439.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))
    & F5 x4 j7 L5 |% U$ {
  11440.       (progn
    2 @3 C8 g! i, [8 m+ G: A  P, q
  11441.         (setq ecolor temp_color); M9 |( W1 N$ ?: u7 F1 t
  11442.         (set_col_tile)* @( `8 A: b' M/ n% N4 Z
  11443.         ecolor
    : v9 h6 X7 t6 {; E, L/ Z, s
  11444.       )
    8 f$ w- k7 G  H$ f7 k, d+ F$ g
  11445.       ecolor
    9 c0 U1 v, D- l5 H% k3 H
  11446.     )) u9 ^8 q& Z1 I# O
  11447.   ). r# X" ?8 H) k
  11448.   ;;" X* K& @* {$ r( B: a
  11449.   ;; This function pops a dialogue box consisting of a list box, image tile,
    ; H/ u* {7 t' u2 j1 F8 T
  11450.   ;; and edit box to allow the user to select or type a linetype.  It returns" W, l+ Z9 [9 D$ g/ Z% H7 ~& a6 y# W
  11451.   ;; the linetype selected.+ C) A8 G  `* e" O
  11452.   ;;5 W9 V# H6 d1 n' ^
  11453.   (defun getltype (/ old-idx ltname)
    % B# ?) l# t$ U: x
  11454.     ;; Initialize a dialogue from dialogue file; ?' |, M% R" y( _
  11455.     (if (not (new_dialog "setltype" dcl_id)) (exit)): j, u% {8 p  O) r$ _% J% G
  11456.     (start_list "list_lt")  T6 Y. c. x$ Y; b9 ?. x" e4 l$ P' \
  11457.     (mapcar 'add_list ltnmlst)         ; initialize list box
    - {+ U4 B/ k' ?$ j; A4 ^7 J* P
  11458.     (end_list)0 Z$ y5 r2 n8 m
  11459.     (setq old-idx lt-idx), c! ^5 D% L, P
  11460.     ;; Show initial ltype in image tile, list box, and edit box9 j$ a. e; c3 Y
  11461.     (if (/= lt-idx nil)
    9 k/ g0 P& G" Z8 {; v
  11462.         (ltlist_act (itoa lt-idx))
    ; u! v$ Y+ f8 f9 O5 o
  11463.         (progn
    ' ^5 f6 ^6 D2 [/ s2 g1 O
  11464.          (set_tile "edit_lt" "")6 B$ ?+ U9 |! q0 v
  11465.          (col_tile "show_image" 0 nil)* r9 G% B; F) N! D: D
  11466.         );progn else3 Y' y3 h6 U2 B
  11467.     );if: Y! ?* i1 X: N1 R+ k# E$ e
  11468.     (action_tile "list_lt" "(ltlist_act $value)")
    * G3 y8 k, M$ U" a1 A
  11469.     (action_tile "edit_lt" "(ltedit_act)")
      f; X- D) |5 J5 c5 O
  11470.     (action_tile "accept" "(test-ok)")6 N+ E! a! `  l) z( y0 G9 b
  11471.     (action_tile "cancel" "(reset-lt)")
    # o1 D5 {  k; N( Z1 v
  11472.     (if (= (start_dialog) 1)           ; User pressed OK
    6 W; _# E; w3 M2 [
  11473.         (cond9 Y& o2 s0 `- u; O( h
  11474.          ((or (= lt-idx nil)# t. d, @7 y- j; ?# S6 ?- L
  11475.               (= lt-idx (1- (length ltnmlst)))6 ?, r, ]' W" C/ x! _
  11476.           );or- f, K! M: U* K, v! z1 y" Q! m! I
  11477.           (set_tile "t_ltype" "Varies")
    * Z1 P+ C1 F" k4 W4 |4 B) I& Z
  11478.           ;|MSG0|;"Varies"
    / }& s! b' f% @' A, S
  11479.          )
    / p) f# B4 w, O
  11480.          ((= lt-idx 0)
    . F7 k9 ?% }. [) J# n$ I5 p( t
  11481.           (set_tile "t_ltype" (bylayer_lt))
    " x1 x: U, y5 z/ w* Y& n( z9 z# S
  11482.            ;|MSG0|;"BYLAYER"5 n1 T' R% a& M9 B1 b
  11483.          )) e' T" Y6 W' G+ I, h
  11484.          ((= lt-idx 1)4 E5 _' M" P5 J0 V! L4 I
  11485.            (set_tile "t_ltype" "BYBLOCK")
    $ j6 J9 S  K* y
  11486.            ;|MSG0|;"BYBLOCK"5 {: N; X* P5 B( @8 Z2 Y
  11487.          )
    & Y& s1 \+ D) X. W- Z) `" f
  11488.          (T
    8 k. V+ }" x6 A/ c! s# c
  11489.            (set_tile "t_ltype" ltname)
    8 |2 w, n/ M0 Z$ N1 |4 l
  11490.            ltname
    5 B7 S& L2 J: V; m: ^% r" K* N
  11491.          )
    ( L% ?/ ?* l2 C& K  a; R
  11492.         );cond then& m9 M6 o/ p% O) D6 n/ e/ C
  11493.         eltype
    , u6 G! c- B5 z( n6 C; |" c
  11494.     );if) j' Y" p  b1 ]# B
  11495.   );defun& }% ^6 N3 q# O7 N  R
  11496.   ;;
    # z! {9 J0 B# R/ F, \
  11497.   ;; Edit box entries end up here0 i- O: v5 ~! L/ N8 T  V  ]
  11498.   ;;8 ~/ Q, G! |$ |6 A# I6 p- e3 w
  11499.   (defun ltedit_act ( / flag)
    9 f3 z; d( l' B+ N4 h
  11500.     ;; If linetype name,is valid, then clear error string,* ^0 k' k! [/ h( n6 \5 M  h) E
  11501.     ;; call ltlist_act function, and change focus to list box.8 e' A: e/ G3 @/ \
  11502.     ;; Else print error message.
    3 R5 O5 Z8 U# B4 H4 [' L' Z
  11503.     / [% s# e. r1 r: [
  11504.     (setq ltvalue (xstrcase (get_tile "edit_lt"))): t6 |1 p- X  i- O3 L1 F0 I
  11505.     (if (or (= ltvalue ;|MSG0|;"BYLAYER")# e( f1 ]# L3 [- o- A. C$ {
  11506.             (= ltvalue "BY LAYER")
    0 `' A3 [$ d: L7 \5 @& o, k
  11507.         )! h/ u% v) h7 |+ t6 N; X/ ?
  11508.         (setq ltvalue "BYLAYER"), S& X0 S& E: K7 D2 \
  11509.     )$ {" S: T! G' n# b
  11510.     (if (or (= ltvalue ;|MSG0|;"BYBLOCK")# I0 V/ L$ r0 P* Q7 ]# }$ M
  11511.             (= ltvalue "BY BLOCK")' H0 |( E% ]: i7 b! P# Y: C
  11512.         )4 P9 h* F1 m: ]3 Q; ]
  11513.         (setq ltvalue "BYBLOCK")
    ( b- X6 {, c& e7 X" j6 G
  11514.     )  c. P, E3 d* i0 [/ |' y0 O; t/ m
  11515.     (if (setq lt-idx (getindex ltvalue ltnmlst))) V+ Q" p! r) g$ R+ X; Z8 ~
  11516.         (progn
    2 z6 k5 Q. p7 B) H" f: E3 o- B" R
  11517.          (set_tile "error" "")9 _/ u' K9 z3 M4 U( R' m, M
  11518.          (ltlist_act (itoa lt-idx))( @& T/ _0 i5 K& M, h
  11519.          ;(mode_tile "list_lt" 2)
    # c; K8 X5 C* J( y5 w' V" r1 w- o9 p
  11520.         );progn then* n: _( N7 G1 b0 Z# X( {" [
  11521.         (progn4 [- i; E# o( I; Y9 [1 a) X
  11522.          (if (/= ltvalue "")5 L3 i5 ]$ n( t' G! q8 _
  11523.              (progn. D# |% U! f- R" O3 I$ A
  11524.                (set_tile "error" "Invalid linetype.")
    + Z' V3 z) H' `
  11525.                (setq flag T)
    , V, K8 d% X3 D" E& w' m
  11526.              );progn+ X$ T8 b; ?6 ?) F% i+ X
  11527.          )/ R/ L: Y  N  O& o7 D; ~& N/ z3 M$ U
  11528.          (setq lt-idx old-idx)
    4 B& T: L- [, [4 j- _) @
  11529.         );progn else
    ( N9 W5 d" J$ _1 d( }
  11530.     );if
    " [' @9 r% U* a! N& I' S
  11531.     (if (and (not flag) ;added so a return will take you out of the dialog.5 x2 C* u; x/ g8 i: \
  11532.              (= $reason 1)) a/ e$ Q0 {* r% W/ y
  11533.         );and$ p4 V5 F- Z$ ^" r" E
  11534.         (done_dialog 1) ) l# Z1 _; a* A- @
  11535.     );if 9 b3 V7 n6 ?  i( F% V6 b
  11536.   );defun ltedit_act# }* P1 q: d5 o/ e% R5 N  x
  11537.   ;;8 e6 U7 z& [; C" ]2 b
  11538.   ;; List selections end up here" h0 f. O0 c1 o: A$ j
  11539.   ;;
    - A' u5 s3 ^2 C3 F( }' b& E
  11540.   (defun ltlist_act (index / dashdata)1 B0 `& r- F; c
  11541.     ;; Update the list box, edit box, and color tile8 `2 h8 o' Y8 N, O5 `
  11542.     (set_tile "error" "")5 c( d* ^2 H  |2 q$ x' \1 G
  11543.     (setq lt-idx (atoi index))0 c5 e7 R5 o+ ~! L9 B! G, P
  11544.     (setq ltname (nth lt-idx ltnmlst))
    % W1 |+ k/ C2 u& p; l: u
  11545.     (setq dashdata (nth lt-idx mdashlist))
    , ]: }! Z( n2 A
  11546.     (col_tile "show_image" 0 dashdata)
    $ o0 f3 |- A) Y& Q3 E/ q, ^. z! J3 v
  11547.     (set_tile "list_lt" (itoa lt-idx))
    2 Z  ~$ {0 ?& d3 K2 [  F
  11548.     (set_tile "edit_lt" ltname)
      E. V+ @, ]" r
  11549.   )7 d- {) \" H* H" m$ a
  11550.   ;;
    & D7 d2 k" S- f4 h
  11551.   ;; Reset to original linetype when cancel it selected
    * Z8 G; K3 N  P5 }& u
  11552.   ;;
    - `. r7 H0 E2 F$ w; E
  11553.   (defun reset-lt ()
    4 b( B- ?) b, n' [" H) b
  11554.     (setq lt-idx old-idx)
    ' U, u5 t5 h, d$ Q& f
  11555.     (done_dialog 0)% l7 \2 a' q  U5 Q
  11556.   )  c; M. B. X1 H9 `
  11557.   ;;. R# T4 X$ M6 v. h
  11558.   ;; This function pops a dialogue box consisting of a list box and edit box to
    ! D4 \5 o  l  S+ a
  11559.   ;; allow the user to select or type a layer name.  It returns the layer name5 e2 M. v) t4 h# }$ e  v  E5 N1 V
  11560.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the, C. G; q1 r$ x- ~1 L
  11561.   ;; drawing.5 Z; b- v8 b- y7 ]
  11562.   ;;5 ?0 j1 K  `, J8 M# Z
  11563.   (defun getlayer (/ old-idx layname on off frozth linetype colname)
    $ l- ]2 Z" ^1 r# [' Q
  11564.     ;; Create layer list the first time the layer
    3 C4 ^$ a6 C( C( r, `& G& e
  11565.     ;; dialogue is called., ^+ H# ]5 U! r0 G  i  u& O7 j# U
  11566.     (if (not lay-idx)
    ; d$ R' g+ Z! P  U. Z
  11567.         (progn
    # v8 t% T% e2 ?+ }
  11568.          (makelaylists)                     ; layer list - laynmlst% _' ?. c+ q+ S& b4 e
  11569.          ;rk
    " B5 Y0 S4 r  ?0 a
  11570.          (setq lay-idx (getindex elayer laynmlst))
    . g7 T+ Z& V4 P. ?
  11571.         );progn
    4 |. m# b' Y0 g
  11572.     );if
    # o, R* L* V# b& F, O( z1 a

  11573. 3 y% v, _& c. ^  E* y8 l# x; J
  11574.     ;; Load a dialogue from dialogue file' n& I0 B/ ~- T% g9 c
  11575.     (if (not (new_dialog "setlayer" dcl_id)) (exit)); ~; M% o$ W) L6 v
  11576.     (start_list "list_lay")
    ' T* A8 F$ B4 \/ N- m/ _; s2 d& w- u) T
  11577.     (mapcar 'add_list longlist)        ; initialize list box  S0 H# T8 A% ~# N4 @* J4 C3 b# E9 A
  11578.     (end_list)4 _1 q' D3 `9 N+ l" Q
  11579.     ;; Display current layer, show initial layer name in edit$ S; |( Y, y; R- p( m. D
  11580.     ;; box, and highlight list box.1 I+ x: a. g. D; `" M9 ^
  11581.     (setq old-idx lay-idx)
    " V/ p' H9 V6 \" g+ U
  11582.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))
    - Y; b8 w% j, B6 X6 F$ u2 `2 P
  11583.     (set_tile "cur_layer" (getvar "clayer"))
    : z% @! l0 i4 l" I- N4 F
  11584.     (action_tile "list_lay" "(laylist_act $value)")
    " x, r, D3 `, X
  11585.     (action_tile "edit_lay" "(layedit_act)")
    0 l' o% N' c" y" W$ k: K. n* I
  11586.     (action_tile "accept" "(test-ok)")
    / X$ B+ i" _; I' K0 B9 |  r" z
  11587.     (action_tile "cancel" "(reset-lay)")
    ( T) E# S( H8 K/ n6 Q/ R
  11588.     (if (= (start_dialog) 1)           ; User pressed OK
    + y9 }# B9 {5 p( b0 m
  11589.        (progn
    : j( ?8 G. W! V' M  G5 ?
  11590.          (if (or (= lay-idx nil)6 o: U" _" X- P7 N
  11591.                  (= lay-idx (1- (length laynmlst)))
    * F! _8 N  m4 K" Q+ j9 c3 `9 Y3 x: l
  11592.              );or
    : E0 P2 Z" i) i
  11593.              (progn
    * g" Y4 q! b( T# S% B8 s' |
  11594.               (setq lay-idx nil)  
    8 [9 S/ `7 I# j: Z4 d
  11595.               (setq layname ;|MSG0|;"VARIES")
    , z  x; |9 |2 v. ?" b$ t. i/ [
  11596.               (set_tile "t_layer" "Varies")( ?) }$ n! w3 T/ D& J
  11597.               (setq layname "")
    / r4 l2 t* ~4 s1 X( y& R
  11598.              );progn
    . X* A' _* M  h7 R+ n
  11599.              (set_tile "t_layer" layname)' ?0 j5 W4 |8 w; C! N4 h
  11600.          );if
    " _! ^, L" ^0 y  o9 X' Q3 Q3 L
  11601.          ; If layer or ltype equals bylayer reset their tiles
    0 c, j5 Z# z* k. j- ^3 n4 f! W
  11602.          (if (= lt-idx 0)
    3 |2 p/ g& P8 u6 U
  11603.              (set_tile "t_ltype" (bylayer_lt))  c/ S  t0 j* W. v8 i2 Q
  11604.          );if- s& O. S) A0 O$ [% w' ^4 A
  11605.          (if (= ecolor 256)
    ' x: }5 q" n% c; j: I
  11606.              (progn+ \$ K+ n1 @2 M* e# Y- N
  11607.               (set_tile "t_color" (bylayer_col))
    ' D( W  s7 U* F5 f$ P
  11608.               (col_tile "show_image" cn nil)
    6 U7 U3 C" U+ Z% }7 [
  11609.              )
    9 _9 k* t( [: P$ K* m6 f& n" i
  11610.          );if
    ' A" \; \- \" l# r
  11611.          layname
    7 ~! V3 w3 P+ L
  11612.        );progn; J  K0 v! t$ [
  11613.        elayer/ }& X; t  T( |* L5 w8 c2 H/ T
  11614.     );if
    " P0 V* E( [0 j. ]6 ~0 O6 q2 |0 x
  11615.   )
    ) C; A6 ?" P/ G' }  G# z% I+ h$ R6 J
  11616.   ;;7 P; K8 j! a$ u7 t. Y
  11617.   ;; Edit box selections end up here" }( H0 S- @3 h4 j# x8 Z7 ~
  11618.   ;;
    ; E$ U* M$ o) K7 L3 N% V3 k% p' V
  11619.   (defun layedit_act()
    ( D% ~* d( F/ ^# @
  11620.     ;; Convert layer entry to upper case.  If layer name is
    3 f9 s: X. Y2 a# a
  11621.     ;; valid, clear error string, call (laylist_act) function,0 f: @! \" Q& y  d6 u
  11622.     ;; and change focus to list box.  Else print error message.% ?' Q8 P# \7 m# I3 k6 j6 J
  11623.     (setq layvalue (xstrcase (get_tile "edit_lay")))- |) d: t( v% v$ V) P+ l4 v
  11624.     (if (setq lay-idx (getindex layvalue laynmlst))) A% b% V7 G/ s# \# ^
  11625.         (progn- t3 c: {! ~/ y
  11626.          (set_tile "error" "")2 O9 \4 p: n$ D" i6 r7 t
  11627.          (laylist_act (itoa lay-idx))2 t8 `# s: t- Y6 S" z6 \$ c
  11628.         )+ p; k3 n, q% e8 S
  11629.         (progn) f; i3 }/ p! t; n  j6 y( @3 l
  11630.          (set_tile "error" "Invalid layer name.")
    5 d6 R3 a% y- O$ C% _
  11631.          (mode_tile "edit_lay" 2)
    2 y) ^3 a* {* W. z' ~
  11632.          (setq lay-idx old-idx)/ H- G# C5 [3 e" g9 G% i" p
  11633.         )$ S% U- l) \2 j0 e
  11634.     );if2 U* {. m$ e6 E
  11635.   );defun
    ! y! t2 V0 `- C! H( s
  11636.   ;;4 }5 H; M* |, J! Y: ^
  11637.   ;; List entry selections end up here
    # P8 R3 Q1 z7 V1 \1 ~, B, M& M
  11638.   ;;3 j* M# p8 G. D; _; v% I' P& `& S
  11639.   (defun laylist_act (index / layinfo color dashdata)
    " ^' M8 E' Z: O9 M5 b9 K" a- A% K7 \
  11640.     ;; Update the list box, edit box, and color tile
    / P8 p/ e3 k2 S/ z8 X
  11641.     (set_tile "error" "")
    ( G9 J; J% S  P- ^9 Q8 H
  11642.     (setq lay-idx (atoi index))5 s  r& s9 q# Y8 p$ t' \- ]
  11643.     (if (not (equal lay-idx (1- (length laynmlst))))$ m7 {; W/ L- \1 ]9 W5 a9 f, ~( g% p
  11644.         (progn
    " u& }! B4 W# k0 y
  11645.          (setq layname (nth lay-idx laynmlst))
    1 e) u3 E3 I2 {( I! g
  11646.          (setq layinfo (tblsearch "layer" layname))9 E) }4 y& v) N. c. [( H
  11647.          (setq color (cdr (assoc 62 layinfo)))6 a% y" y" @0 Z4 p0 X: m
  11648.          (setq color (abs color))
    / N& T7 U0 _" }" M% h
  11649.          (setq colname (colorname color))5 C3 h. v  b4 v  R0 ^" ]9 Q- M# l
  11650.          (set_tile "list_lay" (itoa lay-idx))
    % K: W0 ]# E* C+ g( X4 S! M
  11651.          (set_tile "edit_lay" layname)
    , `. ^! U7 _# l5 O; U
  11652.          ;(mode_tile "list_lay" 2)
    8 R5 H2 F1 ?9 {4 P! Q; K
  11653.         );progn then
    7 {% b, d8 F6 F# r2 w- Q
  11654.         (set_tile "edit_lay" "") # S- r1 G2 h  _" l, v8 U3 D
  11655.     );if
    & d' v% V7 N8 C) B6 L
  11656.   );defun laylist_act
    1 c; o$ c9 Q; U7 t& v* ]8 m
  11657.   ;;2 t8 z4 w4 O/ s) B
  11658.   ;; Reset to original layer when cancel is selected
    " u. g; }- Y- E6 y0 J3 G  i- f
  11659.   ;;' _  J1 X1 Q1 K) h+ a5 _- A5 H
  11660.   (defun reset-lay (); F7 }& j8 w2 t$ K! y3 K7 d
  11661.     (setq lay-idx old-idx)6 k( ]; m* F* l9 L+ ]0 A* u
  11662.     (done_dialog 0)
    6 C, h* z8 v4 }. w
  11663.   )
      Z1 K) n# W( A, k* c5 J/ U
  11664. " `& H' b4 y+ J9 E
  11665.   ;; Checks validity of linetype scale from edit box.  It checks to$ M. q. o2 z2 l8 |$ @" _- X# e$ m
  11666.   ;; see if the value equals "Varies".
    5 C0 Y5 }' c7 |7 S

  11667. , E# I* u; L6 n) v) W- V
  11668.   (defun getscale (value / rval)
    / v4 F/ {9 v5 C- W
  11669.     (setq value (strcase value)
    - a3 N5 W* U1 F, L. V
  11670.            rval (distof value)
    8 S, d' o1 R5 c* Y
  11671.     );setq
      E0 N; v! H( U( v/ O  r
  11672.     (if (or (= value "")2 S7 P; a& A* E5 H6 @4 E2 t
  11673.             (> rval 0.0), F3 }9 q  }2 `, o* x. I& u
  11674.         )9 N& Z, }2 Y3 b
  11675.         (progn2 E4 P0 E. T: G* l! {
  11676.           (set_tile "error" "")! |( ?* G5 r. R4 b+ A. v
  11677.           (if (= value "")/ r8 F% c6 M7 }
  11678.               (progn
    5 E- \! H* U2 [
  11679.                (set_tile "eb_ltscale" "")/ G3 x; P  E' F1 g( t. p' F
  11680.                (setq eltscale nil)  `; d: u, \1 r' w5 X1 y
  11681.               );progn then
    1 O: a+ q3 j) f6 I: p6 l) P
  11682.               (progn
    # d  M- x; Q$ k
  11683.                (setq eltscale (distof value))
    ) f7 l; z; |  Y: L" _& z
  11684.                (set_tile "eb_ltscale" (ai_rtos eltscale)). V9 s" M: Y; h, n2 d* J: j6 c
  11685.                eltscale
    ' {: I/ Y; [  M: L) k- A8 Z$ d
  11686.               );progn else, c" \1 p9 Z+ n9 p4 f
  11687.           );if
    / C( W) P1 B' |, {* D% ?
  11688.         );progn) X5 \! P7 C/ j- i
  11689.         (progn. X' B; w- b! k# c/ _) N$ w8 E
  11690.          (set_tile "error" "Invalid ltscale.")9 ^* \' F: N$ w' Q0 M; V# ?
  11691.          nil
    ' c6 V7 ~* i3 c) h( G; u- ^! S" M
  11692.         );progn else2 w" k) {, H2 s- N
  11693.     );if
    1 ]( X9 G' L" b1 a2 {+ t& B) z
  11694.   );defun
    4 R% h1 E- u5 q# q" c/ y  W6 I
  11695.   ;;; M  h; Y, o2 n$ i, e" ]6 Z) Z7 k5 s
  11696.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a; A" I% u/ P6 t# N( e0 t
  11697.   ;; string can't be converted to a real, this routine checks if the first
    $ m, H5 R% a7 X& K  U9 m
  11698.   ;; character is "0".  It also checks to see if the value equals "Varies".7 w+ Q' [: g9 K9 D0 ]7 m" b  d
  11699.   ;;6 ^! ~3 l9 g* |' g# T1 `
  11700.   (defun getthickness (value)+ g  w2 N6 N0 u' E4 }3 W
  11701.     (setq value (strcase value))
    0 Y' o  J# H- J, a$ n! w+ Z
  11702.     (if (or (= value "")1 }5 ]: }* \( I7 T
  11703.             (distof value)
    6 p  o  G3 B! n3 r# f
  11704.         );or" ]9 {# h/ {0 S) ^+ [2 ?: o. p# k
  11705.         (progn
    9 i/ F, D! ?( I+ v+ S9 i% }
  11706.          (set_tile "error" "")$ q0 B- ^9 W& y! p
  11707.          (if (= value "")
    . o7 f: n/ x" F, D
  11708.              (progn* j+ s% {7 {! J
  11709.               (set_tile "eb_thickness" "")# n# C/ G: f6 M' h
  11710.               (setq ethickness nil). \2 r* u" R9 n) L
  11711.              );progn2 \3 S0 Z9 U: k. b2 @( c1 @& D( A
  11712.              (progn
    / {. k, q2 w7 |
  11713.               (setq ethickness (distof value)). g6 k# l, L' \, u
  11714.               (set_tile "eb_thickness" (ai_rtos ethickness))% q. S% t) M+ }, N$ N6 W
  11715.               ethickness
    6 O2 @! c0 j8 t% j5 I4 V
  11716.              );progn
    ; _2 l; M* {- S& o5 ~
  11717.          );if. G/ s; g) H) z: `
  11718.         );progn
    , F7 b8 [/ `% m) ~8 ~
  11719.         (progn3 X6 S5 U' w5 a- y- y; z& G" A: O
  11720.           (set_tile "error" "Invalid thickness.")
    0 @4 e1 w* @% E) c3 e/ [8 [
  11721.           nil' X9 n' z) R# ^- _2 t
  11722.         );progn
    . T- B4 i2 ^# T* M; ~
  11723.     );if
    7 d' U" t, z/ ?3 w/ {
  11724.   );defun
    % n; Y; V. k% B7 n
  11725.   ;;
    3 I/ j: F# ?( d
  11726.   ;; Checks validity of polyline elevation from edit box.
    " r, {( d, z6 p3 @$ \( `
  11727.   ;;! m; K6 B  P$ L: h0 x1 X9 ]$ i$ q) t
  11728.   (defun getelevation (value)
    , n5 D$ M! q1 C
  11729.     (setq value (strcase value))+ ^1 u) h; E. l+ u1 Y$ O
  11730.     (if (or (= value "")+ D# P; Y! U! |2 _1 l4 U
  11731.             (distof value)/ D" ]( C! Q6 D7 W- u- ]4 R* t
  11732.         ), Q6 {; H( {. D" \8 h. @
  11733.         (progn+ B0 N" J1 _' k, U
  11734.          (set_tile "error" "")# Z5 ?& R" \# {6 T$ `, H; U# X
  11735.          (if (= value "")
    & N1 Z7 P+ \# j  F
  11736.              (progn6 A) T( W; u+ l# d+ ~6 O, I
  11737.               (set_tile "poly_elev" "")
    / G$ @1 C0 ~' `7 r
  11738.               (setq eelevation nil)  t0 k+ u& g' Y# u( m0 O
  11739.              );progn
    " p( x' U5 \' u" }( p/ G  m! T
  11740.              (progn
    8 d3 u& k1 v5 d3 G3 b- b
  11741.               (setq eelevation (distof value))* V9 J( c% a4 E  }
  11742.               (set_tile "poly_elev" (ai_rtos eelevation))9 c8 o; A" ]  L  L5 O2 v4 N+ G
  11743.               eelevation" n/ {% k1 I9 S; o+ `# J5 z
  11744.              );progn9 C4 H& D) T% M- J
  11745.          );if: T7 H* v: Y' Z# W' Q
  11746.         );progn
    5 q8 ^+ h' u  I/ L0 |' v( t, w0 h
  11747.         (progn2 {$ v# O8 b: `0 y0 T: X+ @
  11748.          (set_tile "error" "Invalid elevation."): \9 P# _7 |! Y/ ~. c) D
  11749.          nil
    4 O& u( Q% O/ f, X0 Y
  11750.         );progn/ f0 @, R+ w' n4 Q5 F  X- Q
  11751.     );if) y/ F) L0 k* a& b# U  L
  11752.   );defun# Y1 Z2 M* q# j- x! K8 S
  11753.   ;;! t8 R" ^+ C. ~1 P9 n' [' q! {
  11754.   ;; Checks validity of polyline width from edit box.) X; R4 U# \9 ~
  11755.   ;;1 x' S: r- ~8 N4 D* ~6 ~
  11756.   (defun getwidth (value / rval)9 a7 p5 ]4 U/ K$ [
  11757.     (setq value (strcase value)
    , r  j" V# ~/ u" O/ ^' L5 m
  11758.            rval (distof value)2 m) ]- _; I/ }
  11759.     )
    ! _% g+ _( @' x% k
  11760.     (if (or (= value "")) P- t- i! h* ^4 T: P' x
  11761.             (>= rval 0.0)4 |, y% W) L3 e
  11762.         )4 X$ @* x' @1 F4 v  e  j6 ~
  11763.         (progn
    $ t% V' u7 ~5 X2 p6 j7 |+ x6 I
  11764.          (set_tile "error" "")
    7 K; M/ V5 L' Y0 r9 d" S# ~5 |/ H
  11765.          (if (= value "")
    - F4 B/ i  w) Q
  11766.              (progn
    3 H: p, r# @8 Q
  11767.               (set_tile "poly_wid" ""); E1 X" ~% `6 T9 C9 \; G( Z' R
  11768.               (setq ewidth nil), P9 p6 F; {: W7 \# \; I0 h
  11769.              );progn
    * \, K4 @" s: S4 n) v& ^; l
  11770.              (progn
    ) T7 ^! V$ K2 k( s  s. i; D5 G  o
  11771.               (setq ewidth (distof value))
    % i2 ]1 d' q7 S/ K) R: N
  11772.               (set_tile "poly_wid" (ai_rtos ewidth))
    ( q2 R4 c/ m1 e% l
  11773.               ;width
    ' L, O+ E) z# @% X
  11774.              );progn( |. ^  M* ]/ B- _; f
  11775.          );if$ A& v* v4 k! j7 A1 R
  11776.         );progn, n% ~( r0 n* W! a( ~
  11777.         (progn
    ! N0 w3 o' k; D! i4 P
  11778.          (set_tile "error" "Invalid width.")
    * _" d2 B' C- o; M( y
  11779.          ;(setq ewidth nil)
    8 d) ]5 `7 e+ |5 A/ N
  11780.          nil 9 N. Z. W9 L# o' D6 Z
  11781.         );progn& R1 @, e& g3 R" B. Z
  11782.     );if
    # V. d* k& U, Q' Z4 C: W$ Q
  11783.   );defun% T7 P7 |: J2 V6 u
  11784.   ;;
    4 I0 s# T5 q$ Q% {8 P- c+ U. s
  11785.   ;; Checks validity of text height from edit box.
    5 C$ w2 W2 A/ k0 Z: {  C
  11786.   ;;6 J" U- e  |% _- l- q
  11787.   (defun getheight (value / rval)
    $ J/ K8 M% p1 C* }; Z7 a0 J
  11788.     (setq value (strcase value)
    & Y0 o4 _, {; M% h* z
  11789.            rval (distof value)9 G7 F  i/ Q+ B- a- `
  11790.     ); }( X8 r8 x: K/ u- j# R( o
  11791.     (if (or (= value ""): O; O/ n; W- C' W5 k
  11792.             (> rval 0.0)( k' W7 M5 w* U
  11793.         )  |: h; j* m, s  Y6 C6 _
  11794.         (progn2 j7 N2 z% W  a' O' Z" Z
  11795.          (set_tile "error" "")* K2 z' G. Q$ V& a+ S: |/ a
  11796.          (if (= value "")
    0 [# o: D4 C( i& h
  11797.              (progn9 ^- j, E0 ?1 ?; b
  11798.               (set_tile "text_hgt" "")
    : R% q7 D3 M, l6 u" I( T
  11799.               (setq eheight nil)
    ) R( B# X; C$ ?$ Z: b
  11800.              );progn; L" i% r7 @! U. A
  11801.              (progn
      i2 [0 C- \& l2 @1 G( ^0 _
  11802.               (setq eheight (distof value))$ N; S+ F$ L1 Z/ I% I) V: T3 `
  11803.               (set_tile "text_hgt" (ai_rtos eheight))
    0 e* T! T( a" |( f
  11804.               eheight
    1 t0 Y: H# b: w+ `: [$ r5 f8 B
  11805.              );progn( I, f- Y0 o, w( }" z3 m( P
  11806.          );if
    ) J+ G/ R/ H6 K+ z; j
  11807.         );progn
    * V: s5 ?! i' Q. ~0 r2 p) r
  11808.         (progn$ z0 w; O/ u/ K# Q
  11809.          (set_tile "error" "Invalid height.")
    * f- @" z  W7 W% D, U$ ?
  11810.          nil
      Q- |. U4 f/ C2 i  Z4 S
  11811.         );progn( _3 b5 p. z9 V* C% \% A- Z
  11812.     );if
    / y/ k% A. n! r" ]
  11813.   );defun
    4 L) a$ G5 p1 ?. W
  11814. / t- N& M0 [' J! ?' G: b
  11815.   (defun getstyle (value lst / rval)$ n* o: L9 V* u) I0 \0 l0 K
  11816.     ;(setq value (strcase value))1 _. R, r. a' ?$ e
  11817.     (set_tile "error" "")6 k! z- O; [* n# T# g
  11818.     (setq estyle (nth (atoi value) lst))' K/ R+ ]* D" \) Y' m9 n7 X7 j# S2 l
  11819.     (if (equal estyle "")
    - U  `+ A; D5 s/ Q* u
  11820.         (setq estyle nil)6 D% w0 e" @/ f) w
  11821.     );if
    % z' k! Z. `9 j% z: A
  11822. . G* c# C) N. r- ~0 R2 t2 u9 h+ T8 i
  11823.   );defun getstyle
    8 z) ?' k& D4 d8 o! {
  11824. + }2 V3 ?/ d4 t* z7 E
  11825.   ;;
    ( A' D9 O5 o  ^) \0 @! Y# e
  11826.   ;; This function make a list called laynmlst which consists of all the layer1 R- P! x% Q; k/ E7 g' B; T
  11827.   ;; names in the drawing.  It also creates a list called longlist which
    ' w: I3 [1 r: X  s* Z8 e
  11828.   ;; consists of strings which contain the layer name, color, linetype, etc.: q: t3 `) T. X( Q0 R* c7 ^! Z
  11829.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    / A/ x, A3 U, o; o
  11830.   ;; same.
    4 I& k$ p1 @' |
  11831.   ;;
    " q2 k) m' M/ V$ ~
  11832.   (defun makelaylists (/ layname onoff frozth color linetype lock vpf vpn ss cvpname5 x1 n! A7 G5 J1 k( P, L% {
  11833.                          xdlist vpldata sortlist name templist bit-70
      W$ E9 i/ i. l( y! A: X5 @2 W7 k: F' O
  11834.                          layer_number: P: L& k; z0 _. ~
  11835.                       )
    : ]/ w0 `% M! q4 b! q
  11836.     (if (= (setq tilemode (getvar "tilemode")) 0)
    ' }( m8 X) n- {
  11837.       (progn, J5 k/ q- q- M: ^# L7 a+ d) T* P
  11838.         (setq ss (ssget "_x" (list (cons 0 "VIEWPORT")
    1 q/ I" C! _$ n4 o! U. Q+ T
  11839.                                   (cons 69 (getvar "CVPORT"))
    6 H% H7 [& l% {' E
  11840.                             )
    4 b" }" ^4 p7 n3 p) N' u: S
  11841.                  )+ ~- X1 J1 W6 x) _+ Q% o# P
  11842.         ). I4 P& @7 g( `9 K8 o
  11843.         (setq cvpname (ssname ss 0))4 R; E, }) N- ~: B) i" S
  11844.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))
    0 x! R% ~: t- L! s% a2 f7 C
  11845.         (setq vpldata (cdadr xdlist))! X4 D2 A* r7 O- T/ t0 l
  11846.       )0 x! S/ b/ w8 F6 L% V  s( \
  11847.     )
    # s6 n  Y, I+ d: B
  11848.     (setq sortlist nil)6 R) O; O8 k3 O$ C3 m. F6 X
  11849.     (setq templist (tblnext "LAYER" T))
    7 h5 _7 l6 f/ h- Y. L9 q
  11850.     (setq layer_number 1)% v$ R7 d( t9 X* P& r# b
  11851.     (while templist
    ! p) S1 o5 `$ c
  11852.       (if (not (equal 16 (logand 16 (cdr (assoc 70 templist)))))
    + S5 I7 q  J1 `, m
  11853.           (progn  
    : v! p3 I& ?$ h
  11854.            (setq name (cdr (assoc 2 templist))): j  c; x6 D: a/ R/ j# S6 v( X6 O
  11855.            (setq sortlist (cons name sortlist))
    : g7 d7 s0 T1 X
  11856.            ;; Not dead message...
    ; ~( O, _' Z) k6 U
  11857.            (setq layer_number (1+ layer_number))$ M0 k  F9 l8 }1 x6 [9 \9 A
  11858.           );progn
    7 H) E3 k% i! M) Z) o1 `! c1 Y  _
  11859.       );if
    1 {3 K1 A* m% |! `) X4 Q) m
  11860.       (setq templist (tblnext "LAYER"))
    ; S/ e/ l* J2 ~4 v) k8 ]
  11861.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))9 f  @; t4 j0 C0 t. N' W5 s5 I
  11862.           (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    8 J1 G3 r/ ^0 p/ Y4 n$ ?% m
  11863.       );if
    - I- B9 F# p: p# F7 n
  11864.     )
      Q$ i6 N3 w0 v1 R0 q
  11865.     (set_tile "error" ""): c. [) X5 s2 G3 Z/ j. K0 m( c
  11866.     (if (>= (getvar "maxsort") (length sortlist))9 J2 ?( f9 ?  R
  11867.       (progn
    * _# P( S$ h9 K  ?, M1 F' Y
  11868.         (if (> layer_number 50)
    4 z! s7 B' p' Q  P
  11869.           (set_tile "error" "Sorting...")! z% x- T% [3 E) o. j
  11870.         )
    : d- z! U3 \' e" h+ T8 b& C" y& ]8 T$ G
  11871.         (setq sortlist (acad_strlsort sortlist))# [. F" H2 z% E
  11872.       )
    2 Z5 ?6 \+ v4 }" i9 x
  11873.       (setq sortlist (reverse sortlist))( c4 @* D( V4 T6 j$ J
  11874.     )8 Y" V" l6 d& V  J$ I* X
  11875.     (set_tile "error" "")# v; |- q; p" z, n
  11876.     (setq laynmlst sortlist)
    7 W: E0 I/ @  Q# |" K/ v
  11877.     ;rk   B# @; W" n. y( i1 i
  11878.     (setq laynmlst (append laynmlst (list "")))     ; ~/ Q1 j. L9 f5 y* I! m) e' N

  11879. $ s6 V9 e5 r+ A/ ]
  11880.     (setq longlist nil)
    5 [8 x6 o. f' |: [' X: V; H
  11881.     (setq layname (car sortlist))
      N8 i# O& l; H1 Q) c6 ?
  11882.     (setq layer_number 1)
    ' v* ?5 P1 `5 @0 t- e+ f
  11883.     (while layname6 A: j5 _, C! Z+ U
  11884.       (if (= (/ layer_number 50.0) / d* X- @$ O1 F, S
  11885.              (fix (/ layer_number 50.0))
    ( {) y0 l4 r5 Y1 Z
  11886.           )
    ' A- g8 l( ?; Y) [
  11887.           (set_tile "error" (strcat "Analyzing..." (itoa layer_number)))
      X$ z! f: V6 m# I/ E: X8 O
  11888.       );if' T7 ]5 \$ @& B2 p6 g& M2 Q* R
  11889.       (setq layer_number (1+ layer_number))% g0 k7 {8 H8 p, z5 p* w* n
  11890.       (setq laylist (tblsearch "LAYER" layname))( M2 x* O% y& M% L4 _% j6 P
  11891.       (setq color (cdr (assoc 62 laylist)))- A5 C% ~: @0 J3 Y8 E+ g8 p
  11892.       (if (minusp color)& U8 `7 U' U8 X8 I0 `- x( Z& k
  11893.         (setq onoff ".")* @1 A* Z  c  J# q+ Q/ h
  11894.         (setq onoff "On")
    0 Y* ?2 h; `- B+ }
  11895.       )
    + E: R/ }& Z) g& r1 V
  11896.       (setq color (abs color))
      G6 @5 Z$ d, S( Y8 W' R( k- E) ?! V
  11897.       (setq colname (colorname color))
    7 E7 E) E* `. O* P
  11898.       (setq bit-70 (cdr (assoc 70 laylist))). v& {  W/ V4 Q
  11899.       (if (= (logand bit-70 1) 1)
    8 _7 B+ L# m- ?$ F) v& I
  11900.         (setq frozth "F" fchk laylist)
    / d6 X' f, n# J* {$ w; B
  11901.         (setq frozth "."); Z6 D5 m& y% r2 A6 h# j- @* ^
  11902.       )
    , R1 i" R' e) X1 i
  11903.       (if (= (logand bit-70 2) 2)
    6 d* Q5 B# V6 A- w  O, d
  11904.         (setq vpn "N")
    7 \1 Z7 x/ i2 Z
  11905.         (setq vpn ".")
    0 S  {. B( ]+ ?. U$ m# `
  11906.       ), o/ Q& E8 X4 R) `3 O& Q% t
  11907.       (if (= (logand bit-70 4) 4)$ f& a5 X; @5 z
  11908.         (setq lock "L")" {6 \  z$ m5 v& w$ J% h
  11909.         (setq lock ".")* K6 X0 K5 \& _1 F9 z- v
  11910.       )
    $ y6 n- C0 b6 V4 l) p4 `
  11911.       (setq linetype (cdr (assoc 6 laylist)))
    % D4 Z  L% o! A- X8 b2 b9 u
  11912.       (setq layname (substr layname 1 31))" U* O2 [& t2 ^- x- l( {  W" W- ?
  11913.       (if (= tilemode 0)
    4 i" t0 j. L( E7 e
  11914.         (progn7 P4 S7 U9 ^9 Y! U( h% f9 x/ [, V, ?
  11915.           (if (member (cons 1003 layname) vpldata)3 {' l6 L7 }& r0 S/ R" ~  h+ D
  11916.             (setq vpf "C")
    ! i+ C( x1 t3 l4 W1 q$ g2 j; B
  11917.             (setq vpf ".")/ z, G1 d% B  K( w8 U1 g" J- m
  11918.           )
    ' }* }$ S' j$ [
  11919.         )4 L9 m$ R9 ]) Z+ j
  11920.         (setq vpf ".")
    : w7 r9 D: Q  J# I
  11921.       )
    1 z+ N7 A' r1 a, |: t
  11922.       (setq ltabstr (strcat layname "\t"* f% W9 ?& s( V8 X
  11923.                               onoff "\t"* A* a* ]1 u; {
  11924.                              frozth "\t"
    . K9 F( n3 V( N( L( s6 [8 T5 @
  11925.                                lock "\t"
      B5 N( l; T: j* \4 r% v. V
  11926.                                 vpf "\t"+ o9 m- j% H- J3 {$ q
  11927.                                 vpn "\t"
    $ x$ j3 _) ?; X% e0 f; R
  11928.                             colname "\t"4 a: a7 l8 x. t6 }
  11929.                            linetype
      i# ~0 s% a8 |9 b
  11930.                     )
    ) Q( ^+ r$ G) J( s" ]
  11931.       )$ Z9 e5 X7 X! S. ?6 F# ~* l
  11932.       (setq longlist (append longlist (list ltabstr))); C4 H/ W$ F: q5 l) w
  11933.       (setq sortlist (cdr sortlist))
      r1 l# [5 r3 U$ o! Y% a( y
  11934.       (setq layname (car sortlist))6 E0 R# L# n4 t* J4 w
  11935.     );while4 U1 h. W# c1 X8 B" b7 ^6 M
  11936.     (setq longlist (append longlist (list "")))
    1 e$ a' W* w6 j: |+ q! ?
  11937.     (set_tile "error" "")8 e. b5 U- W3 p0 S: t
  11938.   )8 N3 ?2 _* t& \2 F9 o
  11939.   ;;+ m( ]. @& Q9 w0 r1 s; }8 ?
  11940.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of
    8 _( s0 a2 O( Y* l
  11941.   ;; linetype names read from the symbol table.  Mdashlist is list consisting! Y/ {! Z  g- o! D
  11942.   ;; of lists which define the linetype pattern - numbers that indicate dots,
    / r( \) E2 D+ ~9 V9 K7 X% h2 _5 S( `
  11943.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    ! s) z% {3 k0 ]+ x+ y
  11944.   ;; order of names in ltnmlst.
    3 D9 e5 j' x* O5 u) h
  11945.   ;;# H" Z% \1 F9 [3 i/ d4 q  S% H
  11946.   (defun makeltlists (/ ltlist ltname)0 R( ?9 k6 H# q8 T# G& k7 P
  11947.     (setq mdashlist nil)
    ) N# D+ N" e% X$ J+ a5 N
  11948.     (setq ltlist (tblnext "LTYPE" T)), g/ @9 h# Z% \* R# L$ x! z. h- g9 R
  11949.     (setq ltname (cdr (assoc 2 ltlist)))
    6 t3 ]2 A% u. A& k# X
  11950.     (setq ltnmlst (list ltname))7 I' d; T* r/ A, v
  11951.     (while (setq ltlist (tblnext "LTYPE"))
    # |9 f6 Y' h$ d5 |  L
  11952.      (if (not (equal 16 (logand 16 (cdr (assoc 70 ltlist)))))
    ' ~3 v4 Y4 \) k( V8 I: z3 K5 v% I
  11953.          (progn
    8 U/ H# r& t7 {0 {/ E& j
  11954.           (setq ltname (cdr (assoc 2 ltlist)))
    ( y0 v" u9 c. a( }7 l
  11955.           (setq ltnmlst (append ltnmlst (list ltname)))
    + i6 V# u5 U6 `) a2 d$ }
  11956.          );progn
    8 r9 R$ b5 O+ ~  s
  11957.      );if & B' f1 G4 s$ G
  11958.     );while% B0 Y9 P& [/ ?1 T( ]2 t$ u
  11959.     (setq ltnmlst (acad_strlsort ltnmlst)): E0 f3 f+ t* j/ x7 [2 @* O
  11960.     (setq ltnmlst (append ltnmlst (list "")));add by rk
    + q/ X; K4 N( V( a2 K
  11961.     (foreach ltname ltnmlst
    * E) O1 X6 E8 d* F, a! B
  11962.       (setq ltlist (tblsearch "LTYPE" ltname))
    / T% @# [3 o1 \
  11963.       (if (= ltname "CONTINUOUS")
    7 I7 S3 I1 L( N$ J( Z
  11964.         (setq mdashlist (append mdashlist (list "CONT")))$ |8 _2 M7 N" H8 U! _
  11965.         (setq mdashlist
    $ J4 H8 S0 v, }' W* T. d
  11966.             (append mdashlist (list (add-mdash ltlist)))% f2 A+ ?8 E9 S8 h( z& Z
  11967.         )
    ' ?7 }2 V8 a. w( {3 g
  11968.       )& y  j" n. Q2 e; Q) T" [5 T
  11969.     )3 i6 c3 o; s8 Y% ?' U3 _+ Z
  11970.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    3 N' m6 C" }- O
  11971.     (setq mdashlist  (cons nil mdashlist))
    / R0 f' ~; w5 w0 a
  11972.     (setq ltnmlst (cons "BYLAYER" ltnmlst)), D& R, W- ~. q) f+ i: T5 o) f
  11973.     (setq mdashlist  (cons nil mdashlist))3 ~9 h& A# v3 ^3 |3 H
  11974.   )
    9 \1 W$ h- o3 M  ^  ?  Z$ T& k
  11975.   ;;
    $ ~! ]# E" I7 I( |8 m6 j* K
  11976.   ;; Get all the group code 49 values for a linetype and put them in a list! [! J; e- e, ^0 i; p
  11977.   ;; (pen-up, pen-down info)
    ; p2 a% l  L% G+ F0 F
  11978.   ;;
    : }$ u4 y9 S* g, _
  11979.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)$ Z" ^$ r8 w  u( g. p! L
  11980.     (setq dashlist nil)0 E$ ~4 ~3 m% V$ R
  11981.     (while (setq assoclist (car ltlist1)): ~, b/ u0 t9 h) T! \0 V5 z+ I
  11982.       (if (= (car assoclist) 49)3 X! |' X8 S# b# t( E7 S2 j
  11983.         (progn5 ]" F- N& s5 O
  11984.           (setq dashsize (cdr assoclist))
    & O0 z3 H4 {1 Z7 _3 j& H0 C
  11985.           (setq dashlist (cons dashsize dashlist)): x3 {8 W8 a' I7 N
  11986.         )
    $ W% y7 T% Y0 z, E8 ?% p3 e5 H
  11987.       )* N: e. }5 |( u3 C' ?
  11988.       (setq ltlist1 (cdr ltlist1))
    . V" Q  ^& F- E* Z% H. ]& d$ D7 U
  11989.     )
    8 v2 c9 w2 f% a* F' Z& \* a) ]1 Q
  11990.     (setq dashlist (reverse dashlist))
    7 S9 G" i! W# I8 \6 J
  11991.   )
    , J8 N, V4 c. n5 }6 }' n) z. ~; k
  11992.   ;;* {* d0 {! I+ ], s
  11993.   ;; Color a tile, draw linetype, and draw a border around it
    $ P' X1 x1 _9 X0 o
  11994.   ;;
      A% n8 u. t% e" m' e: X) B
  11995.   (defun col_tile (tile color patlist / x y)% V$ j" K# S  Y" I% S& @7 r) ]
  11996.     (setq x (dimx_tile tile))6 d$ j% s. t2 o$ [! ~
  11997.     (setq y (dimy_tile tile)), L# v0 H% P4 |0 w0 y: M
  11998.     (start_image tile)
    . T4 g8 T! @9 x: A+ y" m# Z
  11999.     (fill_image 0 0 x y color), {! [! |* a& v. F
  12000.     (if (= color 7)
    ; z6 v! q" K* z
  12001.       (progn
    1 x  h2 k7 Q" A3 I6 O
  12002.         (if patlist (drawpattern x (/ y 2) patlist 0))6 h* S0 E- J% z
  12003.         (tile_rect 0 0 x y 0)) V8 }/ F, y7 Z' }- F& ^6 m& x
  12004.       )
    * z- `- [7 `( P/ p; j
  12005.       (progn
    5 C) @" f) U# ^( B: t
  12006.         (if patlist (drawpattern x (/ y 2) patlist 7))5 D9 J+ {" C  h
  12007.         (tile_rect 0 0 x y 7)5 X! i' s. ~- g7 u- S
  12008.       ); W* w) I/ {" v, Z4 S
  12009.     )
    6 _) F0 ]% [- W1 ~: p/ I* _  k1 {
  12010.     (end_image)
    ' M( a( {* f) v: ?! F
  12011.   )+ c4 y* ~5 k. s9 O( t
  12012.   ;;
    ( ~/ i+ r* d/ q( ]$ c5 z# s
  12013.   ;; Draw a border around a tile
    # Z/ g% |0 D2 s$ ~' z" T, G
  12014.   ;;" e5 l- i0 a) z: f: d/ @
  12015.   (defun tile_rect (x1 y1 x2 y2 color)
    ' s; |0 S1 g5 X& I! _& k
  12016.     (setq x2 (- x2 1))& j: x2 H& O+ R! o  u$ D
  12017.     (setq y2 (- y2 1))1 y( A/ P* e& _1 j6 k
  12018.     (vector_image x1 y1 x2 y1 color)
    % G/ Z. L1 o" _* E& w% Z
  12019.     (vector_image x2 y1 x2 y2 color)
    ; x* O" O$ A+ V9 n( g- w( B# L5 j5 ^
  12020.     (vector_image x2 y2 x1 y2 color)3 c1 |$ R$ [6 D, k- E
  12021.     (vector_image x1 y2 x1 y1 color)) q4 y$ d& i/ o/ u; R0 c! K% d7 v  u
  12022.   )
    & ~, L' I* s7 j: L# I
  12023.   ;;/ k6 R$ ?. G: D
  12024.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image+ ~( n4 |& S# {& Y5 z" T. _0 [( _
  12025.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a+ V# [8 x5 S& d! k7 U0 G! o# Q
  12026.   ;; list of numbers that define the linetype, and color is the color of the0 H9 ^  K/ t4 K" Y7 H
  12027.   ;; tile.
      a; B# g( r% X, z$ I) n4 N
  12028.   ;;# @9 Z4 v8 B# S0 j- ?7 h" Y
  12029.   (defun drawpattern (boxlength y2 pattern color / x1 x23 Y9 f, {9 K( E5 C" C2 d
  12030.                       patlist dash)
    4 [. b: w$ x3 e, _9 k$ [
  12031.     (setq x1 0 x2 0)
    7 A. {- J/ i. e* a7 |* h& b  u% `
  12032.     (setq patlist pattern)
    / w3 ]3 ~2 P  @
  12033.     (setq fx 30)! ^2 i8 z6 g8 S
  12034.     (if (= patlist "CONT")
    + y' N1 a) L. L% E/ l& b# \
  12035.       (progn
    3 X! m8 C& H* e
  12036.         (setq dash boxlength)
      s9 {7 P) z$ U; L% c" l& V4 `# S
  12037.         (vi)
    3 F* Y  ~5 _5 Q
  12038.         (setq x1 boxlength)
    1 n. S2 z; V0 Z: M' a# i$ N
  12039.       )
    # N4 _) c9 l( p7 ~3 F
  12040.       (foreach dash patlist3 o; c# I) C! E* O1 |1 w
  12041.         (if (> (abs dash) 2.5)
    9 S" N; x4 ?: c7 o
  12042.           (setq fx 2)8 C/ C: X7 r1 s  J. y. N
  12043.         )3 W  U3 ]' b$ t* `. u; c
  12044.       )
      a- X( ?% p- f( R6 B
  12045.     )) T; y8 N! h: P2 o' h7 u
  12046.     (while (< x1 boxlength)* F4 M/ z% t+ f1 y9 q9 p
  12047.       (if (setq dash (car patlist))% D1 S' u$ K! F9 R6 \
  12048.         (progn% w% Z! Q& }$ U3 i  F8 {
  12049.           (setq dash (fix (* fx dash)))
    $ q  K& L# x) I6 m4 K
  12050.           (cond
    - j+ Q" S3 z/ G! R0 b8 `
  12051.             ((= dash 0)& R3 }/ w9 q. e( M' ?6 c' z4 k; c
  12052.               (setq dash 1), n! k$ K% v# Y' ]1 N
  12053.               (vi)
    3 [' h/ a8 `. i- Q) a
  12054.             )
    # T+ F9 I; X; Q2 z
  12055.             ((> dash 0)0 l5 `8 A* W* A% }  M2 f+ u
  12056.               (vi)$ y: b$ _* u% [# j. p; D: h5 w
  12057.             )
    ; @, H. r+ q1 }
  12058.             (T
    - _) V. U* H" I6 a0 u9 C9 T; g9 ^1 c
  12059.               (if (< (abs dash) 2) (setq dash 2))
    , Y; O7 P! |3 f- ?  _, ]
  12060.               (setq x2 (+ x2 (abs dash)))
    5 I8 p% q/ B/ G5 `4 ?
  12061.             )
    : Z0 b" S0 b/ {$ D4 C0 S
  12062.           )( p. w, o6 a$ J  ]" h5 x
  12063.           (setq patlist (cdr patlist))
    + N: i5 v6 T7 N# J) ]
  12064.           (setq x1 x2)  u: U3 z& n' b! \4 H
  12065.         )8 _5 ^% c  A  Q) l' y: ?
  12066.         (setq patlist pattern)7 {6 J+ }% c- ?  l& \
  12067.       )( p/ Z9 @5 W5 z/ P
  12068.     )
    ) H$ k" G- N- J9 z+ h$ \. L
  12069.   )
    ' ^% E9 W: o* Y7 H  y8 q3 h' Q
  12070.   ;;% b' l7 t0 P9 s' p1 l+ t1 V
  12071.   ;; Draw a dash or dot in image tile
    : U& p1 [& b6 F% o+ X  K: Y
  12072.   ;;1 ~* }( s4 |2 }& w4 o' |' F
  12073.   (defun vi ()5 [' W9 ?, r4 i: T
  12074.     (setq x2 (+ x2 dash))1 C4 _6 |9 T7 F2 x5 t5 m/ f* D
  12075.     (vector_image x1 y2 x2 y2 color)
    6 w, S# |/ s4 d/ v# X, @+ d
  12076.   )
    . o* K4 c8 b1 J6 p" z+ X+ ~0 a! x
  12077. ( b) U! J! e* L' H; v1 |
  12078.   ;; This function takes a selection and returns a list of the color,
    . P% w5 E6 V1 I! e% {
  12079.   ;; linetype, layer, linetype scale, and thickness properties that
    ( B# J) O+ q9 \' h. [
  12080.   ;; are common to every entities in the selection set - (color0 X' R4 h; D' X6 Y
  12081.   ;; linetype layer thickness).  If all entities do not share the same1 Z* E( w4 Z! C/ k" k! c
  12082.   ;; property value it returns "Varies" in place of the property* T" d1 Q' Y+ w2 q6 u
  12083.   ;; value.  i.e.  ("BYLAYER" "DASHED" "Varies" 0)
    * y" t) @9 s; t
  12084.   ;; The last item in the return list is an integer flag for the
    3 b! C, r' Z% y' i& S
  12085.   ;; homegenity of the selection-set object types.
    8 Y. L4 v7 V4 u# w7 N' U( ~* p
  12086.   ;;   1 = All polylines) G& [3 {, {: s: _" u9 I# K
  12087.   ;;   2 = All text or mtext or attdef, or a combination of the three: v; {5 z/ g4 K
  12088.   ;;  -1 = Any other mix of objects
    # N  x9 q  u8 S/ n- N
  12089. 7 }" x( Q  f* ^9 n/ i' J* z- s
  12090.   (defun getprops (selset / sslen elist color ltype layer ltscale thickness
    7 k* _7 h; r* F/ h. R
  12091.                           width elevation height go ctr
    6 \8 j9 L2 n  i9 r4 d. D
  12092.                           eflag
    2 L) H# y9 ]" K, s6 a
  12093.                           etype temp
    2 `& r4 B7 V- y( j8 e
  12094.                           txt_ss     ;;;;rk 11:24 AM 1/30/971 h! _  A" ~' b
  12095.                           tmp
    . D( f; h, j* j8 e7 }
  12096.                           poly_ss   
    ' a+ h9 I4 L" I3 z" a. u
  12097.                           style/ n' e6 a; E8 n$ l- A* n
  12098.                   )
    * K0 O3 i+ C7 C3 ]7 q  A4 R$ g
  12099. 5 z% B5 d' N1 z1 m
  12100. 8 T! U1 t, C3 [$ R4 S
  12101.     (setq     sslen (sslength selset)
    / V- [" c7 C, k" S: @# t, m- u
  12102.               elist (entget (ssname selset 0))
    0 L' Y: Y, s; r' g* y
  12103.               etype (strcase (cdr (assoc 0 elist)))
    / C; O# j- m4 Z9 b+ Q, i
  12104.               color (cdr (assoc 62 elist))
    * W7 T+ f4 [8 ^, I5 h
  12105.               ltype (cdr (assoc 6 elist))
      c) Z4 Y4 V: H6 Y# A; A
  12106.               layer (cdr (assoc 8 elist))
    % u2 I3 u& n  a( l$ j7 a
  12107.           thickness (cdr (assoc 39 elist))9 _9 f+ \. L5 K0 e1 R6 f' K! T
  12108.             ltscale (cdr (assoc 48 elist))% W  O( x: O6 [3 x- H% r
  12109.     );setq
    7 `7 P, r% {* r5 R9 A

  12110. ; @  U7 p9 n$ a, s; }
  12111.     (if (not color)     (setq color 256)); |5 o) N( u5 z- r  l  C- r
  12112.     (if (not ltype)     (setq ltype "BYLAYER"))
    / m1 a6 e) Q4 }9 _/ P
  12113.     (if (not thickness) (setq thickness 0)), l  J( M0 u: x& |' x, L- L, K7 R
  12114.     (if (not ltscale)   (setq ltscale 1))
    ' R- C, c+ F( X6 J( t: W

  12115. - V- r1 ?. U- P/ \6 S. T. X& y
  12116.     (if (not width)     (setq width ""))8 r( n! a* Q2 E. O
  12117.     (if (not elevation) (setq elevation ""))4 v5 y! S. P! }1 |3 F: a. I
  12118.     (if (not height)    (setq height ""))  Y0 I" M2 L( Y8 w3 Z3 i

  12119. 3 s" E& O. H5 Q8 G" Q$ B- o% ?( q
  12120.     (setq      go T . n+ L+ q; u/ e. t
  12121.           chk-col T
    # [9 W; F' t( m7 i! `
  12122.            chk-lt T 4 y+ X+ F; u8 c0 W, z" l; F8 u
  12123.           chk-lay T
    " l  I+ T0 R9 n
  12124.           chk-lts T
    / v1 X3 N7 a& u$ G# H4 \, @
  12125.            chk-th T
    2 L* Y# P9 _/ o% O5 z
  12126.               ctr 0  _0 g) _  s, B; ]% P. N" x
  12127.     );setq! z8 h" H! C7 B4 t, h

  12128. ! A) `( x* N" s2 X, {& n4 k
  12129.     ;; Page through the selection set.  When a property+ h1 P, _5 B3 A' S. l5 I1 I
  12130.     ;; does not match, stop checking for that property.
    ' {$ I* i! J6 z( m
  12131.     ;; When the selection set is not homogenous, stop checking.3 h8 V; `) h* \9 O
  12132.     ;; If all properties vary and the set is not a type 1
    ) A6 G8 e/ q: k6 i  s0 J, E
  12133.     ;; (polyline) or type 2 (attdef/text/mtext) set, stop paging.
    ) g) I$ U4 y! Z
  12134. 4 B, }( C: @8 r3 b4 q
  12135.     ;Lets set the eflag so we know if the selection set includes any 4 h) j5 C* i+ l% _2 {6 O
  12136.     ;combination of polylines, lwpolylines, text, mtext or attdefs.
    8 ^% y; s& }, }, I

  12137. 7 ?( Q7 I( \' W7 i5 I9 o; z
  12138.     ;watch out for 3dpolyline and 3dmeshes here! @rk 10:17 AM 1/30/973 ^; p, x! `6 B: p0 j6 S
  12139.     (setq eflag 0)
    6 S, j& ]+ P% k1 Y' ~
  12140.     (if (setq poly_ss
    + p; u' Z. T6 F- J: Y& u0 @4 b
  12141.               (ssget "P" (list '(0 . "*POLYLINE")
    7 r9 u5 W/ ?# W. T2 f5 A5 Y! m
  12142.                                '(-4 . "<AND")
    3 X, p9 J/ r  h- @4 v: i4 K
  12143.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 8)  '(-4 . "NOT>")7 |. I7 w. K5 U8 C$ p" R$ p0 @
  12144.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 16) '(-4 . "NOT>")
    ) K) j( {5 z3 v/ Q; i) U/ Q
  12145.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 64) '(-4 . "NOT>")
    # [- h% V6 q5 ?) X6 @
  12146.                                '(-4 . "AND>")
      x) _* n( _, U+ J
  12147.                          );list# j$ E9 {0 S0 y5 ]$ a4 U# E
  12148.               );ssget get 2d polylines (legacy and lw). \6 p8 U/ c# n6 x- A# F
  12149.         );setq
    ) }  i" J" ~2 v2 Y( a- G
  12150.         (progn
    9 F7 G: c6 H/ Z% ~# Q
  12151.          (setq eflag (+ eflag 1))5 r) D* E2 A3 b3 G9 s
  12152.          
    3 G* f! H2 O; p( g( S8 N
  12153.          (setq tmp (entget (ssname poly_ss 0)));setq
    % Q- m' ^; V4 W2 R4 m& a, _* O, _
  12154. , h: J4 t: `  q3 ?7 _
  12155.          (if (equal "POLYLINE" (cdr (assoc 0 tmp)))
    2 s0 }9 i6 C$ F9 S( K8 O
  12156.              (setq elevation (last (cdr (assoc 10 tmp))))
    ! E0 J5 s6 m2 m. t2 [: c8 {
  12157.              (setq elevation (cdr (assoc 38 tmp)))
    8 ?( `# k% C0 w8 c
  12158.          );if
    * i4 n9 d* u8 C
  12159.          (if (not elevation)
    & L+ K' i( p7 b  T
  12160.              (setq elevation 0.0);setq
    1 F- U1 d* X% l0 `; I) p% ]
  12161.          );if" @$ o8 z2 Y9 |+ \
  12162. ) C! P+ B& w% j% ]# G  {# q9 H
  12163.          (setq tmp (ssget "P"
    ! n8 h% ?+ Y8 T* }
  12164.                           (list
      G& e* R/ z' U$ j( `/ Z3 p
  12165.                              '(-4 . "<OR")& {  u& ~% G" }/ [' |
  12166.                                '(-4 . "<AND") ! t3 \6 s9 e5 }8 U# v' g+ |
  12167.                                  '(0 . "LWPOLYLINE")2 f5 T: I# s- V& `
  12168.                                   (cons 38 elevation)/ D4 B3 A! b& _* s
  12169.                                '(-4 . "AND>")
    5 l3 Q2 c5 }6 x/ n. F8 m
  12170.                                '(-4 . "<AND")
    9 n" ?+ P! W+ `6 @$ p, c/ }
  12171.                                  '(0 . "POLYLINE")
    8 u; h& h  o% k3 |) n
  12172.                                  '(-4 . "*,*,=") 7 M6 a" _' [' k! L7 M0 s
  12173.                                   (cons 10 (list 1.0 1.0 elevation))
    ) f7 J4 C8 k& v8 e1 k
  12174.                                '(-4 . "AND>")
    " n1 J: A1 F# `
  12175.                               '(-4 . "OR>")
    4 {8 U2 B' j; B" R( f/ s) [
  12176.                          );list# W9 |& K) T6 ^1 M: d6 j
  12177.                    );ssget
    ( S2 Z% Z7 L/ e% G) z5 T' F, ~
  12178.          );setq
    1 H0 ~* Z- i* A5 \
  12179. 7 Z1 Z# z- E4 [& ~/ ~; i
  12180.          (if (and tmp ( c4 T8 E( c/ |& }
  12181.                   (equal (sslength tmp) (sslength poly_ss))0 q) b" F; ~% V9 C. z. z, O
  12182.              );and
    1 g4 }( E3 ?% D
  12183.              (setq elevation (ai_rtos elevation));setq" E7 V9 T. r: \* Y" e
  12184.              (setq elevation "")% r2 c. T5 M) r; p2 \  K1 g6 ]
  12185.          );if# j0 q7 r) B5 X- U# w7 t
  12186.           + D* Y! Q9 s9 C4 j9 t/ h
  12187.          (setq width (pl_width_getter poly_ss));setq; ~, W: v8 f+ M9 Q  p
  12188.          , h: r7 F9 _6 Q$ d
  12189.         );progn then 2d polylines and/or lwpolylines are in the HHHHHOUSE!
    + h- U8 _! B& A; A2 w/ R7 q
  12190.     );if  T0 q( `2 T1 ?# e
  12191.     (command "_.select" selset "")3 x% j- f1 Z3 j" h6 m7 M
  12192.      
    $ h. \9 p8 r( B
  12193.     (if (setq txt_ss
    ' \# [  A& ^. j+ N: Q6 F4 m4 w0 r; U
  12194.               (ssget "P" '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT")
    - ?1 S3 m* H. C
  12195.                            (0 . "ATTDEF") (-4 . "OR>"))
    * b- A3 `+ Q0 X) ?' Z! y+ H
  12196.               )  
    ! |, U2 i* Q' W3 {1 B
  12197.         );setq
    . {7 J6 u8 _, t2 r) d) [
  12198.         (progn
      ~2 @. I  j2 }
  12199.          (setq eflag (+ eflag 2))1 l- d9 K3 W. p! h" Z
  12200.          (setq height (cdr (assoc 40 (entget (ssname txt_ss 0))))
    ; V/ W+ l; [8 u5 }; }1 n# ~2 J
  12201.                   tmp (ssget "P" (list (cons 40 height))) 5 {) _4 b# e+ v$ d1 R
  12202.          );setq
    8 J6 |& `5 C% H
  12203.          (if (and tmp+ Z) n  i; J. ~, b) V; ]0 _
  12204.                   (equal (sslength txt_ss) (sslength tmp))                    
    $ o) m7 Y3 P) I7 A' y+ G
  12205.              );and
    % K  t. X; v7 q0 M
  12206.              (setq height (ai_rtos height));setq  ;@rk need to translate from float
    . Z* ~4 Q, [% M
  12207.                                                    ;to string and back again easily- a$ R+ h3 ~7 F! K6 t3 \. `
  12208.              (setq height "");setq else the height varies
    * h1 Y, h# w' \) y
  12209.          );if5 N. j9 d/ |; N) e
  12210.          (command "_.select" txt_ss "")
    + L3 X7 P8 P/ m& n) F
  12211.          (setq style (cdr (assoc 7 (entget (ssname txt_ss 0))))  o% v9 s3 m  N
  12212.                  tmp (ssget "P" (list (cons 7 style)))
    2 N0 a" [* X( U: m( o, ]2 D: S& l0 D* H
  12213.          );setq ! ?: @( m3 a4 u; t  r
  12214.          (if (not (and tmp
    6 o( g7 M6 i4 r! E% j' a
  12215.                        (equal (sslength txt_ss) (sslength tmp))                    # W$ k; d1 a" I& w% r% ?1 ^$ d+ P
  12216.                   );and* I7 |1 N$ D! e2 o  b; P! S
  12217.              );not) j$ {) r, l- l% O9 h) A
  12218.              (setq style "");setq then the style varies , G; Z6 x- i5 N! h
  12219.          );if
    : ]( e2 W, t. s- K) H. |
  12220.         );progn the text type objects are in the selection set- a3 ~6 Y& m3 M6 L
  12221.     );if6 E/ T( z2 ]" ~: g6 ^* d$ [; ^& Y* G
  12222.     (command "_.select" selset ""); v6 K( _8 W! m! j1 r$ _
  12223.     6 t+ q& {( f  j5 \$ H
  12224.     (while (and (> sslen ctr) # z& \: [; C2 N& T: F! c+ E6 i
  12225.                 go% J. g& ~) {1 w; _
  12226.            );and
    / j$ G2 y! p! u! S0 H+ u; E
  12227.       (setq elist (entget (setq en (ssname selset ctr)))): r' K  G* j& W9 H& t0 v

  12228. . [( X( L8 l7 ^; f6 k, l" f; h
  12229.       (if chk-col (match-col))
    * c7 }; J3 |% X
  12230.       (if chk-lt (match-lt))" P5 D$ ?( o& b+ E
  12231.       (if chk-lay (match-lay))
    $ q- W$ _; u1 B1 U# T8 y. y' a1 C
  12232.       (if chk-lts (match-lts))  e) \  _% y. l! ?
  12233.       (if chk-th (match-th))
    9 X7 ?: D7 C0 ~; t1 C5 d. O
  12234. ( t  I% B/ f$ Y
  12235.       ;(if chk-etype (match-etype))8 @, h3 T& q" f. B) b

  12236. : O2 v, |! ~* m# c
  12237.       (setq ctr (1+ ctr))
      w8 [5 ~" e( i& m
  12238.       (if (and (not chk-col)- b# h" H( d; |& S
  12239.                (not chk-lt)
    # S. Z1 F% X+ c
  12240.                (not chk-lay)8 o$ L: z& P! ?4 A/ ^+ M
  12241.                (not chk-lts)
    ' J; J* c- I/ M( {0 ]
  12242.                (not chk-th)
    ( y8 O6 l4 U& P' q
  12243.                ;(not chk-etype)% R$ w3 n' _6 T7 N. h
  12244.           );and
    , f; w# r- ]* b$ w' _( O
  12245.           (setq go nil)* U& h( Q+ E5 u5 Y9 z
  12246.       );if
    ; @2 I% [/ ^5 m7 V+ J5 r( W
  12247.     );while4 {( Y+ @8 s/ G: N1 D) ~$ A$ U/ Z
  12248.     ! j4 O1 D7 L/ F4 w; H
  12249.     (list color ltype layer thickness ltscale  D" i: Z  r  D9 T$ \
  12250.           width elevation height eflag
    ! e% `5 q( |' B. o/ T
  12251.           style poly_ss txt_ss
    2 y8 E7 O1 C  O1 ^' \6 [9 L9 e
  12252.     )
    " k7 M/ }. e, P% d/ ^7 n
  12253.   );defun getprops7 V: g8 W- V/ t+ ^* B9 x
  12254. / G  }! G' N6 L  H
  12255.   ;  This is a speedy little routine to tell whether the polylines in
    + [/ @  z5 d8 Q
  12256.   ;the selection set argument are of varying width or a constant value.
    1 J( Z0 c9 a" n2 m
  12257.   ;Looping through the vertex's has to be done for old polylines when % b2 i' j: D# G4 S& w( y$ ^( n) `
  12258.   ;the polyline header has width values of 0.0. Basically, in this case,
    7 P1 e0 `5 j9 |# v5 p2 r! H; T
  12259.   ;information in the polyline entity header is abmiguous. Width values 6 ?- j1 x* G2 E( V2 V. d3 {
  12260.   ;of 0.0 in the header entity could mean the polyline has a constant : c: ~( y" s3 c, ~7 j* z. x# r
  12261.   ;width of 0.0 or it could mean that the polyline has vertex's of varying # ~2 Y& `0 n0 h$ ~' w# _
  12262.   ;width.  ]) Y( X4 _* K" `3 S
  12263.   ;
    # O8 N4 p' }+ M
  12264.   ;  It's all in wrist. Err a.., I mean it's all in the 'if'( k  t: V! o4 q+ _1 a- }& h
  12265.   ;;* c, y3 [& h" D5 b5 \1 i! b" w! F
  12266.   (defun pl_width_getter ( ss / ss2 ss3 n na e1 width width_a width_b flag flag2)
      [" n$ S6 J% Y4 w  x4 ^

  12267. ! N$ X: R3 l* _  }5 w! j* d7 M
  12268.    (if ss $ x- U& t/ p+ p$ o8 \, t
  12269.        (command "_.select" ss "")7 n; K6 U3 ]: F: T( t
  12270.    );if# a3 J$ M% S" B+ y# h8 f( n9 l
  12271.    (setq width "", _0 ~+ R  b' Z# B, a
  12272.           flag nil+ l) |: |8 \2 P  W4 G
  12273.          flag2 nil
      b  b% c( ~+ q! k  c! v
  12274.    );setq! I; f+ _* i( H; M
  12275.    (if (not ) |; D  U3 C+ i7 f: P2 i, K9 U
  12276.          (and ss
    $ c- F+ v* i7 R) q. q6 B  r6 a
  12277.               (setq ss2 (ssget "p" '((0 . "LWPOLYLINE"))));setq
    , i: Q$ V6 y2 s8 v$ C7 J+ \
  12278.               (setq    na (ssname ss2 0)
    - n% A" S% `, J
  12279.                     width (cdr (assoc 43 (entget na)))5 p8 I' j+ o: [( m! g3 Y
  12280.               );setq$ Q) s( S( F' n( m
  12281.               (setq ss3 (ssget "p" (list '(0 . "LWPOLYLINE")5 K* F- f" B" D  p
  12282.                                           (cons 43 width)( M6 C* X+ T$ K% |$ B$ L0 z  w  t8 M1 R0 B
  12283.                                    );list) q0 H/ S) ~- M+ H8 w5 h
  12284.                         );ssget: v6 Q3 q0 f- [2 _3 J0 x8 t! Y5 a3 w
  12285.               );setq: n8 U2 ]3 J& L5 p
  12286.               (setq flag T) $ y: Q7 Y( U) J& ]1 Y( H
  12287.               (equal (sslength ss2) (sslength ss3))2 s/ z4 W; y4 l% M7 Y' B1 }- h
  12288.          );and
    / _4 Y1 m& m6 B
  12289.        );not
    , l6 s: Y8 v/ t* Q' G0 x
  12290.        (progn
    , r% @4 h4 M; B4 Q1 \( L
  12291.         (if flag
    / {+ |, d7 @& l" ~8 |
  12292.             (setq width nil) : H/ Y3 [( W7 q! l9 x/ A; [- R
  12293.         );if% b" V5 O  e# _: w0 w
  12294.        );progn
    - g( G4 P6 w( h+ M6 h2 J/ J  R, ^
  12295.    );if # }, b  q5 J1 ^
  12296.        - Z: R8 F8 Q! }8 p: f+ A9 o
  12297.    (if (not
    8 j- c0 l: ]9 n; [1 F- d+ d, c
  12298.         (and / C( v& k0 y( V2 c3 v2 ~' d
  12299.              ss
    5 G1 l: O; D8 i2 X5 t
  12300.              (progn (command "_.select" ss "") 7 I  E: e* c& t& Q5 E
  12301.                     (setq ss2 (ssget "p" '((0 . "POLYLINE"))));setq
    8 z$ ?* ]  [: I- a
  12302.              )
    ' X0 w( l- m! P. r* t( q
  12303.              (setq      na (ssname ss2 0)
    , T- w! ~' b1 w" J7 C/ G4 d
  12304.                         e1 (entget na): y) G$ i* q% w, R! @' _  f
  12305.                    width_a (cdr (assoc 40 e1)), ~' q$ b. h- X( ~
  12306.                    width_b (cdr (assoc 41 e1))' D4 f) ~3 X  H7 G  d) v+ |8 C
  12307.              );setq
    4 C, O' u/ p! P4 M% D& h$ [
  12308.              (equal width_a width_b)) A( }  _  [' q$ e! `, e) Q
  12309.              (setq ss3 (ssget "p" (list '(0 . "POLYLINE")5 b2 ~0 B6 i) ^: |
  12310.                                          (cons 40 width_a)
    2 n! S+ ^& N' {- l* l& ?
  12311.                                          (cons 41 width_b)" P7 n  c! R1 D8 k  z* X; U
  12312.                                   );list; k& K5 H' R+ I( C
  12313.                        );ssget4 S- A: \8 D3 n6 L7 B! M
  12314.              );setq
    - Y' M; o1 U8 U' T) |
  12315.              (setq flag2 T)
    9 d# W1 @) @( x+ J- x
  12316.              (equal (sslength ss2) (sslength ss3))
    ' N' R, }$ P' b. P: X; O7 h  S
  12317.         );and ! N3 G. P0 L# Z# M6 U; s) ~
  12318.        );not , }, b  W; a2 ?. ?" m0 A
  12319.        (progn$ j0 ]0 b9 Z8 ?9 w; M9 v: \( J
  12320.         (if flag29 K% W7 i8 j4 Y+ [
  12321.             (setq width nil);setq5 y# K+ _" R! T
  12322.         );if
    ! a, ~5 L7 f6 D! B& ?4 `" R
  12323.        );progn then: Z0 [7 H, X4 K7 M
  12324.        (progn
    5 C; {- w- |% O
  12325.         (if (or (equal width "")
    0 P9 h+ x+ |" i6 ^. A
  12326.                 (not flag)
    - R* J8 ^* n% d3 q  ]3 v
  12327.             );or
    8 A7 }( D0 l5 I4 Y9 ?& ~% i
  12328.             (setq width width_a)) B/ S$ S7 a( q4 e/ v) M; p3 v
  12329.             (progn$ M$ g9 H; D/ h$ r/ _7 q9 ]
  12330.              (if (not (equal width width_a))
    . M' |" h7 G# n5 Z" r: S( ~
  12331.                  (setq width "")) d4 c7 f! t0 D9 i
  12332.              );if  ( q# i6 _: Z1 y' D
  12333.             );progn
    % b  s  k: U: A' Y0 ]
  12334.         );if2 m: c, H  G3 }1 ^( k
  12335.        );progn
    ' ^+ K/ m! d2 z6 D. |
  12336.    );if
    5 W$ p3 H- R& _8 U6 l2 J
  12337.       / y% m+ Q. [+ _8 t5 \

  12338. , M( L8 I& `1 E, t' O/ j$ z
  12339.    ;now for the special handling for old polylines
    6 x( F* g! s( D1 V1 @6 p6 S
  12340.    (if (and width
      }9 |4 ?/ L. _
  12341.             (equal width 0.0)
    , J- ^/ a' P: B  \1 X' d3 l
  12342.             flag2! p9 m5 ]  U' d+ Y. S
  12343.        );and
    8 `* C& u, Z5 x% |& U8 x' B
  12344.        (progn
    ! y  R; Y3 [5 M! p  G  s, Z
  12345.         
    # t+ x+ p) h( z! Z+ E
  12346.         (setq n 0);setq
    2 ~( z" [" y$ M3 Q  v
  12347.         (while (and (equal width 0.0)7 P8 j  E: `$ E% j
  12348.                     (< n (sslength ss3))
    6 G7 N$ ]  W- w8 @
  12349.                );and1 A9 U# l0 ]  l) I  Y: o3 d. z8 ?
  12350.          (setq flag nil5 Q$ d& B3 q" Z& k# [  ~4 Y
  12351.                  na (ssname ss3 n)( P* `7 D7 A* \4 }+ o( ]5 @
  12352.                  na (entnext na)! Z: v( k1 W. Z: u' h5 D8 g
  12353.                  e1 (entget na)
    7 V) q5 o9 r& s( R5 F" h9 n7 h1 l
  12354.          );setq$ V" X- w  P3 d5 w, Z7 N
  12355.          (while (not flag)! }3 g5 }5 y- X5 ?
  12356.           (if (or (equal (cdr (assoc 0 e1)) "SEQEND")
    ) R, L/ C) K; [
  12357.                   (not (equal (cdr (assoc 40 e1)) 0.0))8 K- w; N/ y( q$ S
  12358.                   (not (equal (cdr (assoc 41 e1)) 0.0))( Y/ Z/ M2 P+ _1 D) K- y
  12359.               );or$ G8 ?" {# D  E+ M
  12360.               (progn" }) d9 k; J( J9 y% j) P
  12361.                (setq flag T);
    0 U+ Y' r0 E! E8 U4 X* E
  12362.                (if (not (equal (cdr (assoc 0 e1)) "SEQEND"))
    - N3 K" S. u! X3 L# O$ r
  12363.                    (setq width nil)
    ( e* r( |4 l7 I  c
  12364.                );if0 L0 u! H7 D' y3 b, G9 a. c( |6 ?2 j
  12365.               );progn then jump out of the loop
    8 C7 W) {" ]7 U7 y
  12366.               (setq na (entnext na)
    - D# [- G0 h9 ~+ G6 E
  12367.                     e1 (entget na)+ s9 A' ^9 x8 S5 K  m
  12368.               );setq , r. _- a. q7 O2 X2 A+ c
  12369.           );if
    0 w$ }+ k- `# g/ m6 W8 q
  12370.          );while2 [3 g' O/ `. s/ n1 ]; Z2 N
  12371.         (setq n (+ n 1));setq  ( L) X" T- E9 M! A
  12372.         );while , o4 u; g1 T: W7 q4 K! d8 q# K
  12373.            
    ; z7 t* D8 O/ h' ~
  12374.        );progn then it's a legacy 3 h! P& h4 V0 X  e5 W0 j( ^5 P
  12375.    );if    ;legacy polylines that may have varying widths  5 G7 R+ h+ d! r5 ?  J  B+ \
  12376. : ]9 z6 s  v" P' U0 V
  12377.    (if (not width)
    ' e2 P$ t$ k% L$ V9 _( p
  12378.        (setq width "");setq
    ' A) n- N9 X, ?- [
  12379.    );if  B, ^3 l5 O0 {
  12380.    (if (not (equal 'STR (type width)))7 p8 l& z; R( E7 \4 a
  12381.        (setq width (ai_rtos width));setq 5 h- p' A  D, m
  12382.    );if ! V& o) z( U. [. H. V3 X
  12383.     ) [" ^  j1 g! d
  12384.    width   
    4 @+ B# q6 V) m$ [8 B
  12385.   );defun pl_width_getter
    2 b) I7 r# y& g& i: p# |0 O

  12386. / T8 C8 ^3 G% \( f9 u
  12387.       M1 J2 y! `$ y( M- Y
  12388.   (defun match-col (/ ncolor)2 Q! j1 S# F- e* [! z* W+ r
  12389.     (setq ncolor (cdr (assoc 62 elist)))
    + Q/ E. t, A7 {# |' j1 S+ t+ Z2 g6 [
  12390.     (if (not ncolor) (setq ncolor 256))+ f3 {+ K5 V9 q7 i' K- \
  12391.     (if (/= color ncolor)* u4 q& R" {( \+ k6 X! e
  12392.       (progn/ I) A! {1 b4 U2 j
  12393.         (setq chk-col nil)
    8 [5 f& i1 w( [8 F* h3 N
  12394.         (setq color nil)
    2 u% B5 d7 q! C4 M& \2 l
  12395.       )$ {8 Y! M5 Y( `8 t% f4 D% u! L7 y3 U
  12396.     )
    5 d/ R. w$ W3 d+ f3 U9 t# C) F2 R
  12397.   )7 h9 |' v# S; n" W# q

  12398. : {. _& i* X/ x. a0 w' v4 Q
  12399.   (defun match-lt (/ nltype)+ k! R" [/ Z2 U+ Q' m; V0 ~' d
  12400.     (setq nltype (cdr (assoc 6 elist)))
    ! ]% X, j. S  y+ q* l) B0 K+ `
  12401.     (if (not nltype) (setq nltype "BYLAYER"))
    2 \; w8 C1 h& L+ |3 S1 H* I/ s
  12402.     (if (/= ltype nltype)
    , Z- S# w/ l, B4 }! p% n
  12403.       (progn
    6 ^8 V0 g) _  C, {
  12404.         (setq chk-lt nil)4 o) V- S3 B* X5 T. y
  12405.         (setq ltype ;|MSG0|;"Varies")0 Q1 @; f2 I8 x3 Z, F3 `/ b& G
  12406.       )6 ^# V$ `" _! Y4 T
  12407.     )
    2 E% b/ H+ V( I& Y
  12408.   )
      X) F" [/ Y+ f+ Q/ p3 `

  12409. ) _$ o+ D" |! }( b
  12410.   (defun match-lay (/ nlayer)
    - B; E! J0 g( v  t1 h% O
  12411.     (setq nlayer (cdr (assoc 8 elist)))
    , f; u+ I7 j% M! L8 S# G. h
  12412.     (if (/= layer nlayer)' Q4 Y  {; n" U# V& F
  12413.       (progn
    9 q2 U) |0 U) \2 @3 b$ z% q5 i
  12414.         (setq chk-lay nil)
    3 m! ~6 b+ O5 s$ E" \4 r+ T$ C
  12415.         (setq layer ;|MSG0|;"Varies")
    & n4 N  g) T+ @; d6 Q8 O
  12416.       )
    % h6 u9 `* i6 g, c, y
  12417.     )8 V% j/ X6 u) l: k" n% A
  12418.   )% B) o  V1 p' G6 ^- j2 p
  12419. 0 Z" W. n1 H  f
  12420.   (defun match-th (/ nthickness)& y  p- m4 G; M( u3 q
  12421.     (setq nthickness (cdr (assoc 39 elist)))
    % m& O+ @6 q7 ?6 m9 d0 ^& f
  12422.     (if (not nthickness) (setq nthickness 0)), R) U- Z0 S& l9 O" y( h3 _6 h2 L
  12423.     (if (/= thickness nthickness)$ z7 {& f5 _5 ]7 @+ G1 K
  12424.       (progn
    " Y8 X0 P$ |: q$ i( ?. b" Y  k
  12425.         (setq chk-th nil)3 F& M4 x/ w' ~8 c, W/ K' }4 I
  12426.         (setq thickness ;|MSG0|;"Varies")
    , O* P3 H! |8 N8 C4 a& k, h9 W
  12427.       )
    1 @" l+ U9 P; f/ Y- _- m; }
  12428.     )& ?# b; k+ t7 q" {
  12429.   )
    ' l5 y3 j/ i0 Z" R/ s; _3 e

  12430. : r7 ^6 E8 O# N; I. e6 _. d/ _0 v
  12431.   (defun match-lts (/ nltscale), M+ b5 j; a' t- c" I* ?: N8 F
  12432.     (setq nltscale (cdr (assoc 48 elist)))
    ! o7 A7 a; P9 k0 Q* O; g
  12433.     (if (not nltscale) (setq nltscale 1))! u6 l5 ~  M8 U6 j
  12434.     (if (/= ltscale nltscale)" f4 }; T# ?! d
  12435.       (progn$ V6 u& a9 `; W9 _
  12436.         (setq chk-lts nil)
    2 ^  ?  a  W) r$ a. ]* m7 |  c) w
  12437.         (setq ltscale ;|MSG0|;"Varies"); V: M. ^0 b$ V" B6 C" H
  12438.       )
    9 ~$ R- V% _1 e4 v' y$ _2 r9 @
  12439.     )
    4 V) }( q! \( j# ?
  12440.   )
    8 B  ?8 J" V( ~$ z% A, f
  12441. + M1 R* z8 R8 |: C8 a- W
  12442.   ;;( _0 @3 y% K/ Y! l: S- @
  12443.   ;; If an item is a member of the list, then return its index number, else
    5 o8 x) B7 `; d1 S' A0 Q
  12444.   ;; return nil.
    0 L$ w7 ^: ^; v+ C/ K2 u/ L( G
  12445.   ;;
    6 Z# f  Y6 p& v/ g  Y  C
  12446.   (defun getindex (item itemlist / m n)# @( D0 F" W& L, A. j) N7 C
  12447.     (setq n (length itemlist))
    . d: Q- j4 z0 C7 _' P2 m4 C; K) V
  12448.     (if (> (setq m (length (member item itemlist))) 0)4 a# I& Z! e0 [% C% r
  12449.         (- n m)
    2 j' V& h$ N; O+ ]# \
  12450.         nil
    2 l1 x# C$ k. q& s# ]- E
  12451.     )
    * i' r# {0 E3 A. Y; G  N. P3 x
  12452.   )
    ; A0 ]! v. Z; J2 f6 M# K2 N
  12453.   ;;
    3 v/ Q4 k) t6 ^. B3 f! C: Z
  12454.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    ' S9 U0 q) U, U+ ]2 f$ }
  12455.   ;; ltype of the layer so it can be displayed beside the linetype button.
    5 \! f; E8 \6 }, A9 N
  12456.   ;;
    1 K8 ~3 T& b7 T
  12457.   (defun bylayer_lt (/ layname layinfo ltype)
    3 k1 W9 Y, `% @9 ]9 O6 \4 c0 ^2 g3 W
  12458.     (if lay-idx( ^% I8 e7 I! j$ t+ z) ^1 |
  12459.       (progn( d. R- \- W0 ]8 Z, `
  12460.         (setq layname (nth lay-idx laynmlst))7 m# W; U; _5 _6 H5 L3 o
  12461.         (setq layinfo (tblsearch "layer" layname))- o. X$ |) d# `" |
  12462.         (setq ltype (cdr (assoc 6 layinfo)))
    ' v. w2 D4 A0 M# Z3 l
  12463.         (strcat "BYLAYER" " (" ltype ")")
    / i" g2 O3 L- j1 a* m& i
  12464.       ). B: P" D9 s& C8 A3 E2 F) m
  12465.       "BYLAYER"5 H  _3 F+ _9 [# W3 y- h, I" u
  12466.     )
    8 u# k2 G5 |% s! z% \
  12467.   )
    4 k& B, A- ^% `) _, H+ ~
  12468.   ;;
    , o6 u2 e- u0 Z' m
  12469.   ;; This function is called if the color is set "BYLAYER".  It finds the
    " }2 [2 A* z5 o' W& S
  12470.   ;; color of the layer so it can be displayed  beside the color button.% y$ t. @3 `' K1 \4 @' o4 Y- B6 q
  12471.   ;;
    " o- |  T: j" c1 A
  12472.   (defun bylayer_col (/ layname layinfo color)2 K& d! l& ?$ P; ?: ~4 K
  12473.     (if lay-idx1 U+ s) v/ b9 U. v; k  }
  12474.       (progn' h8 ]6 t- e/ O/ @
  12475.         (setq layname (nth lay-idx laynmlst))
    ; m1 K8 \" I4 U
  12476.         (setq layinfo (tblsearch "layer" layname))3 G% G1 z3 ]# v- s: g7 u
  12477.         (setq color (abs (cdr (assoc 62 layinfo))))
    . {3 r0 W) z4 n* g% z; n3 m$ y
  12478.         (setq cn color)( s4 d' l5 P5 T. Q9 e5 k+ |
  12479.         (strcat "BYLAYER" " (" (colorname color) ")")
      Z  W3 z5 s/ }6 x
  12480.       )6 l: M' o* c+ `7 L, H5 p
  12481.       (progn1 a( T5 ]8 O$ J' Q( J
  12482.         (setq layname elayer)
    + V, s8 @9 @. L4 E8 n5 U# A
  12483.         (if (and (/= elayer "")
    : C8 z; {. p: `. y
  12484.                  (/= elayer "Varies")# p) x4 Q" y7 F# O! i& r8 }
  12485.             );and/ p2 ^6 O' x9 z$ p. B' k
  12486.             (progn
    " R! S1 `1 ]9 _  q2 s6 `: U% s
  12487.              (setq layinfo (tblsearch "layer" elayer))
    ) q! R# f3 h4 |- r7 B8 r3 }6 F
  12488.              (setq color (abs (cdr (assoc 62 layinfo))))
    ( @: j! t3 {7 E; f
  12489.              (setq cn color)+ E6 ]# H4 T- k$ K3 o6 N
  12490.              (strcat "BYLAYER" " (" (colorname color) ")")* c5 X4 o+ w1 Y) u6 X6 O+ b  R
  12491.             )
    , _4 u  [, g" n3 k7 b) i8 M
  12492.             (progn6 b' e4 @  M& F! {* B
  12493.              (setq cn 0)
    3 M% {$ q( B3 s2 h4 m
  12494.              "BYLAYER"
    * B1 u4 x5 t$ d0 }" r8 K
  12495.             )
    ' M+ ?. a) `" x2 |0 L0 [4 M
  12496.         );if
    * C- e0 u: z/ b# G: p
  12497.       );progn. a; P4 w! t' L- ^
  12498.     );if3 f- a* c5 s( S5 w' v9 E4 [4 o
  12499.   )* r( R) B7 j. o( R( a# T
  12500.   ;;
    3 a) m* L$ _5 J+ P: e4 K2 \) u
  12501.   ;; If there is no error message, then close the dialogue: C1 \5 f8 {; t( [9 f3 ?( d
  12502.   ;;& i# o2 c, B. u- @, V$ ?9 Y
  12503.   ;; If there is an error message, then set focus to the tile) H# L, u" Q% M+ N
  12504.   ;; that's associated with the error message.
    - R, \6 c% z/ J$ R6 }( H
  12505.   ;;7 Q( ?' X* V8 ]1 R
  12506.   (defun test-ok ( / errtile), ^/ B  ]- n$ Z' {
  12507.     (setq errtile (get_tile "error"))% A  {& k" ?4 O; S8 }+ u; U
  12508.     (cond. \  k% [/ [2 M1 d5 @
  12509.       (  (= errtile "")- t/ C( V& ^+ l2 h
  12510.          (done_dialog 1))/ j6 o$ m4 e  R0 A
  12511.       (  (= errtile "Invalid thickness.")4 `3 v- g8 Q( y6 c5 k( H3 y
  12512.          (mode_tile "eb_thickness" 2))
    - E; A% T" d4 i/ o. `3 d; h) I
  12513.     )1 d7 P1 b# v% c- u+ s
  12514.   )
    ( Y# f6 r9 A. e3 J0 j. U
  12515.   ;;
    - J, ^0 r5 q( m2 z1 X( \! z6 D
  12516.   ;; OK in main dialogue.' w$ C, t9 L( `, R
  12517.   ;;& c& P/ h+ ^- ?! L( m& o
  12518.   (defun test-main-ok ( / flag)
    - T5 G* @, u( a* h  L; D" ~
  12519.    (setq flag T)
    , i5 x; E  w7 E7 t% v; {: w! |5 i
  12520.    (if (not (or (distof (get_tile "eb_thickness"))8 `) y0 n& t$ b# y) Z0 M8 S
  12521.                 (= "" (get_tile "eb_thickness"))
    1 M1 V6 K' h* m. w* n. @
  12522.             );or5 s' ?( B4 U( [5 i
  12523.        );not
    3 C. k8 n/ ~) k
  12524.        (progn
    ( O/ D% @7 `& k: e
  12525.         (set_tile "error" "Invalid thickness.")
    ) n8 S% x6 j4 `% P. G: m0 g; N
  12526.         (mode_tile "eb_thickness" 2)
    : A/ N- ~. {$ d+ U' b9 l
  12527.         (setq flag nil);setq3 x; D4 ~1 T, o- C: {
  12528.        );progn
      P1 k& z1 H/ u8 o
  12529.    );if
    3 A- e  R7 S1 U. ]
  12530.    (if (and flag
    # p. D& M1 z2 F/ M9 v( C4 ]: t
  12531.             (not (or (< 0 (distof (get_tile "eb_ltscale")))! ]7 v1 w+ M5 h; s5 c* V. b4 T4 \
  12532.                      (= "" (get_tile "eb_ltscale"))
    , g5 q/ N6 a+ g3 n6 a& Q
  12533.                  );or      
    & C- p* N1 A$ i# P
  12534.             );not4 ]1 q( }" I6 _, O: L1 S5 m
  12535.        );and " f7 X( _) Y; }
  12536.        (progn
    # ]2 p5 g- A8 B/ H
  12537.         (set_tile "error" "Invalid ltscale.")
    # E% N: B9 I+ n% t
  12538.         (mode_tile "eb_ltscale" 2)+ F3 w  E) Z$ a8 o, H: \! p
  12539.         (setq flag nil);
    . G" V7 U- R1 r' O
  12540.        );progn then
    ! Q9 b/ O- u) N! C9 Q9 Y
  12541.    );if
    . `' O2 H9 o# k  U
  12542.    (if (and flag
    * N- W0 K# N# B% e( K+ a; {! j
  12543.           ; Don't test the tile's value unless it's enabled.
    , K2 v7 P9 F4 f' v) I$ _8 K5 a
  12544.           ; We're not set up for the display-only value
    ( }- G5 _4 ^) v3 b' d5 _  U& H; h
  12545.           ; of "" here in the error handler.
    ! R1 A, S- O" {* R: W4 L0 L
  12546.           (= 2 (logand 2 eflag))& N" N( t' `  d
  12547.           (not (or (< 0 (distof (get_tile "text_hgt")))% s- Q0 o' ?3 ?) E9 Z& I5 k
  12548.                    (= "" (get_tile "text_hgt"))
    8 y" m7 x% Y6 s+ g
  12549.                );or' m7 c9 _! q' F9 n) P
  12550.           );not
    ( ^$ J3 C* J) O6 m$ N4 @4 H
  12551.         );and0 y# m- _  G) R  l
  12552.         (progn
    ' h0 N1 A- l. g; O; g, ^# }
  12553.          (set_tile "error" "Invalid height.")
    + N0 A7 l" E% ]9 C% c
  12554.          (mode_tile "text_hgt" 2)/ x6 P' c( b' F9 W6 Q
  12555.          (setq flag nil);
    ) F: k2 v5 ]5 h
  12556.         );progn then
    & N0 K6 n/ U* C2 T5 X7 y% ?* H
  12557.    );if
    2 u, t! |! ?6 |- \- m9 B* T4 v
  12558.    (if (and flag& D( T, B- c, P" ?! r6 t1 j
  12559.             (= 1 (logand 1 eflag))( N: z5 m' h$ l8 Q
  12560.             (not (or (<= 0 (distof (get_tile "poly_wid")))
    ! Z# ~4 }7 v0 k9 \6 U1 J9 [% E2 C
  12561.                      (= "" (get_tile "poly_wid"))
    7 W4 t5 m7 J% ~3 U
  12562.                  );or) A! B! y6 g' m
  12563.             );not
    4 J. G) U1 c6 l  R3 _
  12564.        );and2 {3 t, F; O- R* D% t6 C4 S
  12565.        (progn( S! s8 [/ e5 g$ B5 m, G- \8 c6 h
  12566.         (set_tile "error" "Invalid width.")
    ' Z) W. m: |3 q4 p% r4 }
  12567.         (mode_tile "poly_wid" 2)
    ( s9 Q+ H  D  W& [
  12568.         (setq flag nil)
    4 A9 P; J1 w& x8 l6 u7 q9 D) H2 i# R
  12569.        );progn then# i0 ?- @: ^5 i2 r
  12570.    );if * H4 a! }  W4 W6 \
  12571.    (if (and flag
    4 ]+ G- I5 k: j, w; t
  12572.             (= 1 (logand 1 eflag)); v# V+ N: z# z" t8 E/ j
  12573.             (not (or (distof (get_tile "poly_elev"))! w7 q8 [+ G, }, [$ |6 o
  12574.                      (= "" (get_tile "poly_elev"))
    # c5 g; W- u! L
  12575.                  );or
    8 P. C1 s# s- J
  12576.             );not+ ?# i2 m7 D: \: T
  12577.         );and
    - S' O+ t- G- ^" O" D  \% q
  12578.         (progn
    & h' p* w4 G# [  e% ~" o# _& n7 U% E
  12579.          (set_tile "error" "Invalid elevation.")/ a3 m6 g/ j4 W) C; @7 F
  12580.          (mode_tile "poly_elev" 2)
    * E8 v# \* r$ ^4 T& x
  12581.          (setq flag nil)
    0 i/ T5 H! N" r+ P
  12582.         );progn then
    3 g* L/ t0 Z  L
  12583.    );if  ; d+ s" c( P! m$ ^( y+ A) n
  12584.    (if flag # }' {( p8 H; i
  12585.        (done_dialog 1), [- d* X! K4 H! N% ~& E5 d
  12586.    );if$ G: A5 J% G& O" P: R) m0 H/ ~9 x1 n1 S
  12587.   );defun test-main-ok
    : y, Y* u; G: I2 ?- W& k$ o6 d, E
  12588. 2 U" c9 M) k) \: V" d1 n
  12589.   ;;
    2 G! L2 U  c' f/ K- I
  12590.   ;; A color function used by getlayer.
    + N# f$ B8 Y1 \: K! k- V
  12591.   ;;$ M3 |2 ^+ u. d! K: h8 s+ B
  12592.   (defun colorname (colnum)
    1 i1 P; R1 B0 C* r6 P
  12593.     (setq cn (abs colnum))
    9 {0 ]5 X. G: V& K, l4 Y' [
  12594.     (cond ((= cn 1) "red")
    4 S, a- \) `5 K, i) C. R2 q; B
  12595.           ((= cn 2) "yellow")
    # i5 r# _6 |9 `# ^4 f; H
  12596.           ((= cn 3) "green")
    8 \' I( ~/ ~* I5 s3 P- `* @! ]
  12597.           ((= cn 4) "cyan")
    5 Y5 ^* ^. b! }+ }
  12598.           ((= cn 5) "blue")
    ) r5 q) Z8 W/ E% C  J& A
  12599.           ((= cn 6) "magenta")8 e4 y) I9 S! ]- ~2 t: V$ _8 d
  12600.           ((= cn 7) "white")
    7 I3 v7 @* w! ]. p  i
  12601.           (T (itoa cn))* l0 V; Y+ t/ V3 ^; \
  12602.     )
    ! e* C6 O4 d$ ^5 K) T& W
  12603.   );defun* o* D9 z% |! E3 U3 \  z2 X

  12604. * x1 S0 Q1 m  A
  12605. ;;; Construct layer and ltype lists and initialize all
    * Q; `" X; v2 e
  12606. ;;; program variables:) D& n: u2 }2 ]9 Y& C! o* L2 T) Q

  12607. & {7 Q* v+ l, d' z0 {
  12608. ;  (makelaylists)                     ; layer list - laynmlst$ `: G! F8 a1 S8 U+ w% s
  12609. 8 E& H& z: s  ^  o6 O

  12610. 4 Q' t9 v% c4 K9 o
  12611.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    & N3 d# g- }- Z- N/ u2 |

  12612. # n& J! D0 Q& R/ W
  12613.   ;; Find the property values of the selection set.
    7 s* u" [1 J+ z) B9 [
  12614.   ;; (getprops ss) returns a list of properties from
    - l* [6 i& ~( S' Z1 s2 L' B
  12615.   ;; a selection set - (color ltype layer thickness HEGHT STYLE WIDTH).0 e- F' N3 w$ {2 r- m
  12616. + Z; u0 O7 B# q% w  O8 d
  12617.   (setq proplist (getprops ss));@rk interesting things happen here
    ! ?0 ~, N$ u$ \. |, L" G

  12618. 2 \* L6 F: K! Q3 N8 ~7 i
  12619.   (setq; e# V& t1 p8 p" e3 i
  12620.             ecolor (car proplist)! n1 S  c6 o/ {4 b. X% U- c2 K% ~
  12621.             eltype (nth 1 proplist): h! ^1 z9 \! E
  12622.             elayer (nth 2 proplist)
      M% M; F* z. j! ?$ E6 N) G
  12623.         ethickness (nth 3 proplist)
    7 ?9 |0 x3 j( ~
  12624.           eltscale (nth 4 proplist)
    / K' Z2 d' K1 k$ X; m1 a, F+ ^8 d
  12625.             ewidth (nth 5 proplist)
    . j5 d, z6 V0 J* Y: f" b
  12626.         eelevation (nth 6 proplist)
    " z, Q% I  m' P  z2 Z  B7 h( X
  12627.            eheight (nth 7 proplist)+ o' p1 b( X: T% P2 N0 [- p
  12628.             ;etype (nth 8 proplist);commented out and replaced with the line below. RK.& o3 q4 c. q& C# R* p0 T/ z
  12629.              eflag (nth 8 proplist)
    : P. l) A" y% }) f5 U. P
  12630.             estyle (nth 9 proplist)/ m2 B& A2 H! m/ p
  12631.            poly_ss (nth 10 proplist)
    - x" J% K5 ]  Q' J5 H$ c; }/ B
  12632.            txt_ss  (nth 11 proplist)# v+ S" ^1 U% x' W6 O4 `
  12633.   );setq
    " Y. J0 Y# O  J; g& R- {  N" ]7 |

  12634.   {1 {0 O: i8 f
  12635.   ;; Find index of linetype, and layer lists
    $ K, N: c! C$ z) A( i8 C, y3 E
  12636.   (cond7 ~! g3 k$ M. m) r2 @" J/ @
  12637.     ((= eltype "Varies") (setq lt-idx nil))
    6 Z) X8 S+ i; I' o1 J+ b7 J, {1 J
  12638.     ((= eltype "BYLAYER")- @' M: I3 u3 ~: v3 \9 Y% V
  12639.      (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    0 }! M: B3 X0 K. S  b& j" w
  12640.     ((= eltype "BYBLOCK")
    , s5 R7 U) {0 O* ?5 M% o
  12641.      (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    2 O3 ]- g; i! ]$ G2 V2 w
  12642.     (T (setq lt-idx (getindex eltype ltnmlst)))8 f0 M9 }+ V- p" e
  12643.   )% O* ~- [4 E3 M
  12644.   (if (= elayer "Varies")
    ! h+ t2 [+ i: R
  12645.       (setq lay-idx nil)
    4 J/ G" f" U* S* O' b% o
  12646.       (setq lay-idx (getindex elayer laynmlst))$ T2 j( O5 ~1 i+ J
  12647.   );if
    / d5 w$ m  t0 `+ H4 S; D
  12648.   (if (= ethickness "")3 `6 A3 q/ H) X. c" B( C
  12649.       (setq ethickness nil). \4 O# t. z! ~0 @$ v
  12650.   );if/ w/ q7 P, W% F8 F9 x
  12651.   (if (= eltscale "")7 F) a3 |. g% @: [" h
  12652.       (setq eltscale nil)% \" l4 {7 E" m0 R8 h" J4 v+ E  w
  12653.   );if
    1 y) M$ A0 B6 y: z' K
  12654. - s4 ^  c/ F% C# e1 v. f
  12655. );defun ddchprop2_init   ; end (ddchprop2_init)- F3 n$ {) M% F8 V2 O

  12656. / n6 T2 p6 Z. t) A
  12657. ;;; (ddchprop2_select)) R4 I, V+ a5 g
  12658. ;;;1 E1 o- P8 i. B6 |; L
  12659. ;;; Aquires selection set for DDCHPROP2, in one of three ways:
    * f$ p1 r0 ~: g+ C. g# R
  12660. ;;;& c" p! m' w% I1 B7 h8 o
  12661. ;;;   1 - Autoselected.2 b! q% g! u3 Y
  12662. ;;;   2 - Prompted for.+ J1 l, b$ u! j
  12663. ;;;   3 - Passed as an argument in a call to (ddchprop2 <ss> )
    3 E2 \! W9 G3 X/ m- W+ h
  12664. ;;;1 g3 i# W. d7 o- Z
  12665. ;;; The (ddchprop2_select) function also sets the value of the
    0 t7 ]. e6 l6 U& ]
  12666. ;;; global symbol AI_SELTYPE to one of the above three values to
      l3 D9 u  x( V' g  ?6 A
  12667. ;;; indicate the method thru which the entity was aquired.* L. @) \( s! C+ [

  12668. 2 h. x+ y, l  u- N7 W

  12669. : Y; |. K) U7 a+ |* V8 z" r+ Z" `
  12670. (defun ddchprop2_select ( / )
    % ]" p' @. H" X8 ^, o

  12671. * G+ {9 ^" V$ Y/ i4 n+ }' Q

  12672. * Q) y* I- z! H" ^  W9 P
  12673. ;returns only entities in ss that are in the current space.
    * S2 o; N( ]$ Z1 \" a* ^9 k
  12674. (defun ss_in_current_space ( ss / a cur_space ss2)$ H5 b% T1 H4 X% N

  12675. ; |, `2 A' g: I) B. r8 x9 W
  12676. (if ss
    9 u% M* \' s. M8 w- ?! p
  12677.      (progn
    ) X  S3 e9 N  O4 e+ e  D( b
  12678.       (if (and (equal (getvar "tilemode") 0)
    " C, Z, ?1 v+ G4 t
  12679.                (equal (getvar "cvport") 1)
    + w+ a. @/ z7 G* {0 V5 \
  12680.           );and $ }, z' v2 x( Z9 A0 Z4 x
  12681.           (setq cur_space 1);then paper space is where we are.
    . Z$ N6 P) s* z0 N; s
  12682.           (setq cur_space 0);else model space.
    ( A4 v& F) d5 j7 m: e5 N
  12683.       );if
    4 l6 a) X: n2 W3 ?7 R  g/ P) |3 R
  12684.       (command "_.select" ss "")3 c0 Q0 ]( H5 W2 C) p
  12685.       (setq ss2 (ssget "p" (list (cons 67 cur_space))));setq
    6 q( b. ?$ u5 m. i5 l
  12686.       (cond                              ;;;;;tell the user what's going on.
    0 K" l* s! S; d
  12687.        ((not ss2) (princ "\nNo objects found in current space."))
    ; N6 e8 z2 O& F6 n( M
  12688.        ((not (equal (sslength ss) (sslength ss2))). M, x2 v. W: r/ i' d
  12689.         (princ (strcat "\n" (itoa (- (sslength ss) (sslength ss2)))- J# {) ?) S1 I0 t8 |
  12690.                        " object(s) were not in current space."
    9 M% J1 S7 W% m* _  T( T
  12691.                )
    4 J+ N$ [; ~+ {( e, W( _7 o( h9 A
  12692.         )
    ! B+ R- d$ ]5 `, g! S, n* N
  12693.        ) # B/ t* a' C, t. j
  12694.       );cond   e3 E+ i* w' b0 q
  12695.      );progn then4 u, ^( F% I6 e: q
  12696. );if  . _7 m+ G! o$ X- ]
  12697. ss2
    ! m' b" n5 t8 q. c5 b# t+ g4 Z
  12698. );defun ss_in_current_space
    7 y) V) |9 y* v# h
  12699. ) {4 s, V, y1 o8 D% }1 m8 z/ e

  12700. / ]2 i0 _  y/ ?0 F
  12701. ;;;begin the work of ddchprop2_select
    5 W. ?; p6 Q3 G0 f9 G' Y
  12702. 2 f3 p- k# K: |0 i0 R& Z
  12703. ;; temporarily restore original highlight setting.: K1 m' C- ?) g
  12704. (b_set_sysvars (assoc "HIGHLIGHT" (car bonus_varlist)))  d0 B" j( n6 @
  12705. (cond
    $ M% j! p. J+ P) K0 `4 ~
  12706.    ((and ss
    / t7 \( b' [; w& [  ~! o3 n  _: D; r
  12707.          (eq (type ss) 'pickset)
    : K1 B5 A# u: O' I6 p  f& v
  12708.     )        ; selection set passed to
    $ Y0 F( f: N" `/ N* E# g
  12709.     (cond                                   ; (ddchprop2) as argument  l4 j7 L8 o- F1 X5 g' I
  12710.      ((not (zerop (sslength ss)))       ;   If not empty, then+ a; z) w$ z$ S' E; `5 [
  12711.       (setq ai_seltype 3)               ;   then return pickset.
    . f6 w5 a+ b6 W! m
  12712.       (ai_return ss)
    ( g8 a' H( w3 S
  12713.      )$ S* n  {0 z6 T3 m1 ?
  12714.     );cond close& @' z; g3 p8 f" W4 }8 D$ Y# b
  12715.    );cond #1
      C* ?" n: n' k7 U/ o/ M
  12716.    ((setq ss (ai_aselect)))                          ; Use current selection
    ' s# B. ~% W, U# J- E3 q
  12717.                                                      ; set or prompt for objects" P+ P! Z9 k) C6 H& y1 Q
  12718.    (T (princ "\nNothing selected.")
    5 T7 B% h/ ?) F0 g" u
  12719.       (ai_return nil)
    ! L. }9 F8 D. z+ P! k7 E& r
  12720.    )' f  T8 u' F: b: C0 B+ ^
  12721. );cond close
    , `) B, V- G' C; N
  12722. (b_restore_sysvars)
    2 V- B1 C5 q2 L9 m; B9 }4 c9 g1 Z- F
  12723. - ?1 p- D4 v! L& L6 X
  12724. ;(if ss1 ^4 Z3 J, a0 O) f  ]: j
  12725. ;    (setq ss (ss_remove_locked ss))
    # l7 u# q% y! G  T
  12726. ;);if$ c' j- I; ~+ g; ?: C7 }0 `: W
  12727. (if ss/ f; O, Z; H0 h# b+ c
  12728.      (setq ss (ss_in_current_space ss))
    2 H: v8 L% ^+ d9 p0 ^
  12729. );if
    ) U: s; }& o# S- G5 i

  12730. 4 }( B2 ~; p) O. j! G
  12731. ss; h: p+ K5 y9 X: L6 _/ ]: A
  12732. );defun ddchprop2_select
    * t0 V6 b' _$ J2 u9 a
  12733. 4 H/ k' X+ G" @: i, e" E) K

  12734. , U1 v/ \% O, c7 R0 a$ a$ D& [
  12735. ;;; Define command function.
    9 o; r- i4 T9 G  ?# J) x- W
  12736. (defun C:CCH ()
    3 C7 Z3 @, T7 @# k& p  U
  12737.   (ddchprop2 nil)
    ' M0 M/ h& D% K" q. F2 m
  12738.   (princ)* d' x* U% H  e$ |
  12739. );defun2 C- m* n5 x& s% b6 A5 r

  12740. $ B& d% ^2 [7 P+ w
  12741. 7 U: I/ O0 `. o+ }6 W, [7 I# B& t; S
  12742. ;;; Main program function - callable as a subroutine.% e. m) q& u% Z" a
  12743. ;;;, k( S, g# j+ u: a  F6 W
  12744. ;;; (ddchprop2 <pickset> )6 O# \4 F/ b5 c% |1 \: \9 Z
  12745. ;;;2 o! d1 h" }+ a4 g0 F$ P5 T
  12746. ;;; <pickset> is the selection set of objects to be changed.
    9 V3 c. Z" f; S5 Q8 Z; D9 }: i2 A
  12747. ;;;! k* h  @; r! o
  12748. ;;; If <pickset> is nil, then the current selection set is6 e3 b3 @) x0 _: g8 L9 A: _9 n9 C
  12749. ;;; aquired, if one exists.  Otherwise, the user is prompted- Z" R# O& Y7 w/ S; I6 ~
  12750. ;;; to select the objects to be changed.  M& n( [6 b6 F5 O, Y& b" E. m1 T
  12751. ;;;
    - n  J6 M5 Q. ^. r$ w
  12752. ;;; Before (ddchprop2) can be called as a subroutine, it must, p0 G: a2 J( X# g& P
  12753. ;;; be loaded first.  It is up to the calling application to# S# R: }  d' {- W8 P1 D. B3 B
  12754. ;;; first determine this, and load it if necessary.
    8 \8 _4 ^. o% n/ [% T
  12755. % [* {2 D' Z& Q  `2 D4 q
  12756. (defun ddchprop2 (ss  /
    : F) g% V. @, c! u" L/ B2 o

  12757. 2 ^8 L# w" M0 T7 K" F
  12758.                   a
    & p3 M8 L" P, G- E/ @! F
  12759.                   add-mdash8 e- A9 m5 `8 n& b) q' b- ]
  12760.                   assoclist
    : Y' x2 x3 Z2 J9 d1 O& ^
  12761.                   bit-70# s; R# ^: G. a% L& e( a  g$ t
  12762.                   boxlength
    1 g# C  L% T3 W" A
  12763.                   bylayer-lt
    3 Z, x! T1 N: C; n+ i
  12764.                   bylayer_col
      {7 j- w2 x$ ~2 t4 p
  12765.                   bylayer_lt
      n" [: a  B8 ~' u9 O* h
  12766.                   call_chp29 Q* n' B; \) V
  12767.                   chk-col
    ! c) Z4 B2 p% s3 Y( S6 i
  12768.                   ;chk-etype        ;var removed by rk 2 \2 d2 G0 e  m0 B+ c
  12769.                   chk-lay   
    $ C0 _6 ?/ c5 Y9 I6 h( J
  12770.                   chk-lt& t* C, \! [5 z# h; I
  12771.                   chk-lts           ;var added by rk
    , _$ b0 Z$ K1 j2 X9 f
  12772.                   chk-th
    0 s' u  L+ H8 H1 V
  12773.                   cmd4 Y9 w% q8 H! W# H1 g) ]1 c
  12774.                   cmdecho
    - H, y/ P6 W6 W, V5 u4 T8 e+ P( k
  12775.                   cn
    4 H, K) W0 }# |
  12776.                   cnum
    . `/ p0 p' g# G* g% I% u
  12777.                   col-idx
    : ]' }, x. }- G9 a: z) A6 p7 q
  12778.                   col_def! T( {* d% H" [' d. D
  12779.                   col_tile
      V: L* j% b" W1 _
  12780.                   colname
    0 T/ Z6 E- U# e
  12781.                   colnum: J: I  }# T2 A
  12782.                   color' B0 `: d2 k% I* z" |5 H
  12783.                   colorname
    ' i' [& R4 B" d) z# U" e# B
  12784.                   cvpname) y. {7 W( P7 ~; M7 B
  12785.                   dash6 q' l! @' p$ U  q. c$ F0 a: r
  12786.                   dashdata% v* @' R- ^; q( j! p3 |
  12787.                   dashlist7 u  I' a( P3 J" s, C& w0 b3 }/ ~
  12788.                   dashsize
    . ]; e  A) A& @: [1 R
  12789.                   dcl_id& k2 [! w' @! P' h0 {6 W6 R) X
  12790.                   ddchprop-err
    " c9 c$ @/ Y# q
  12791.                   drawpattern: S4 a" j4 t1 F
  12792.                   ecolor
    # w! J! A" {% J0 l
  12793.                   eelevation
    , ^# Z9 y! d+ X2 [
  12794.                   eflag
    ' g& g7 y2 v# [
  12795.                   eheight0 O8 S; b7 {  [% ^$ v
  12796.                   elayer
    ; R0 Y5 _& k/ }1 Z! _
  12797.                   elevation
    5 u" j/ ]/ \( P# d' p4 B
  12798.                   elist
    1 F, U0 C9 p+ }0 b) b4 ?. d
  12799.                   eltscale
    5 q9 g: q4 w+ F. ]2 @
  12800.                   eltype- I% D7 z" S3 x
  12801.                   en" H( M! g/ F7 s" q( r
  12802.                   ename
    $ }+ q/ x# Z- h0 s0 O
  12803.                   ESTYLE             ;var added by rk9 L$ u$ w- F" d5 S. d+ n
  12804.                   ethickness
    - X% \$ S, J: G1 H4 N9 m
  12805.                   ;etype             ;var removed by rk
    / C5 m) C9 T* ?( B
  12806.                   ewidth
    . r/ j5 c( \; W' X
  12807.                   fchk
    6 r( s7 T2 L2 _7 e* {
  12808.                   frozth
    $ D9 t7 [. A8 t2 z' y( c3 U* i
  12809.                   fx' M7 l: C9 W, x! H6 d9 x
  12810.                   getcolor4 ~+ U9 l/ q4 ?3 Y
  12811.                   GETELEVATION      ;function added by rk
    4 k0 p5 q& k; F  Y! a! l
  12812.                   GETHEIGHT         ;function added by rk
    ; V) v' F! u4 X
  12813.                   getindex
    # g/ I$ F( A6 H: j; X
  12814.                   getlayer4 @* P3 X7 v% T$ ]  y0 `) K
  12815.                   ;get_locked_layers ;function added and then removed by rk + ^" D; H7 n$ Q; k4 K
  12816.                   getltype2 b" k4 _6 F$ r, I* g; O
  12817.                   getprops3 M2 J: J* g# y! w
  12818.                   getscale          ;function added by rk
    1 z: x* T$ u1 P: z' b. i* K
  12819.                   GETSTYLE          ;function added by rk
    + @0 G: h" ~! s6 X5 R  n" a
  12820.                   getthickness$ `% t3 ]! X. e, R
  12821.                   GETWIDTH          ;function added by rk
    ! w: R5 M9 z' a. j/ \! H9 }1 d7 Y
  12822.                   globals
    ( d/ N% f' {! J0 V. l% F) h
  12823.                   HAIR_STYLE_LIST   ;var added by rk
    8 J8 n$ p! i& [! I5 T
  12824.                   height
    / J# ~  t( M7 u, S
  12825.                   index
    7 o! u9 }! m  m# J( e! \9 N0 ~4 A5 g
  12826.                   item
    " S5 c: q/ y* p' n7 w+ b! m% |
  12827.                   item1
    / N+ V  Y- f2 r# K4 z4 e+ }
  12828.                   item2
    4 \1 ]* J2 c( _
  12829.                   itemlist
    6 Q# m" m) m  R* W9 C: J( h! {8 ^0 \
  12830.                   lay-idx
    : J" [3 W) j# H" a
  12831.                   layedit_act  e$ N9 l4 i# |8 g3 Q3 W  I% D
  12832.                   layer9 G* e8 C8 g  \7 ^+ M5 n& h
  12833.                   layinfo/ k0 N% Y7 w* m% s6 w$ j. H
  12834.                   laylist
    0 G  y! b4 a1 V: _; U
  12835.                   laylist_act+ k1 X$ J5 k' Y% O% s
  12836.                   layname
    4 W/ |1 p% o. S. h$ h
  12837.                   laynmlst" ?1 y! l0 k9 C' i& B
  12838.                   layvalue
    $ o5 [; M1 t7 t& w# q
  12839.                   linetype
    9 V" U) I8 M7 _$ m* E# `; M
  12840.                   list19 U# b) D3 l9 j  a7 [
  12841.                   longlist
    9 I0 C7 A- S/ k: u7 t4 A1 g
  12842.                   lt-idx4 [0 g4 y" A, j) f" A! q
  12843.                   ltabstr
    2 j8 ~. ?: Z' J+ o7 T5 x. }& |8 d$ r0 S
  12844.                   ltedit_act
    7 K2 c7 n  v4 L. H& E7 e/ c6 Y! u6 c
  12845.                   ltidx
    $ x. l' p) K; j2 [" M! v
  12846.                   ltlist+ o& q$ v* H3 p) }
  12847.                   ltlist1
    2 ]! x( `2 [7 l1 @: {/ W0 A
  12848.                   ltlist_act/ q, R9 I0 U9 \4 `
  12849.                   ltname. w4 t/ k$ k" z- C/ ?
  12850.                   ltnmlst
    1 N0 N4 }" H6 a/ f, S7 s
  12851.                   ltvalue
    ) m! A; G/ @4 O, r8 \- p2 T
  12852.                   ltype
    / i" U: E- b0 g4 y, S6 q
  12853.                   m/ Q+ w! D$ E+ d! Y/ `
  12854.                   makelaylists
    , L, Z" f+ B1 m
  12855.                   makeltlists
    0 ^, N: ]2 m0 z  }, Y- u7 O( }9 m
  12856.                   match-col
    . y: h. o5 O* ?0 ~
  12857.                   ;match-etype          ;function removed by rk4 x, i8 M2 d( h# g
  12858.                   match-in; o3 Y1 V* I7 n5 l
  12859.                   match-lay
    4 J4 q( ^8 P7 ], j+ @) j: l2 A1 ~, d
  12860.                   match-lt
    9 `4 K0 `( v' T4 \* C0 p7 x  k; [7 N
  12861.                   match-lts
    9 \/ t& P( W1 s% i
  12862.                   match-th
    . {- V- x$ J0 J3 P5 n" J/ M
  12863.                   match_col
    2 \. {% s3 X! O8 q
  12864.                   mdashlist5 g) q' m* M3 Q* B
  12865.                   ;MPOPLST               ;function added and then move to ac_bonus.lsp by rk
    & R- q; y- V# s* @
  12866.                   n
    % x" L1 t8 |$ r' Q
  12867.                   name7 d! ~- n; w/ Q3 Y5 a% N- q0 z
  12868.                   ncolor
    2 ?% ?- x0 {5 T/ ^5 z2 T: s
  12869.                   nlayer0 j- t' j, |4 P, \4 X! p
  12870.                   nltype/ ^3 Q5 a8 F( ?% z2 S
  12871.                   nthickness
    3 f7 U, n) [- s: `- W+ ~
  12872.                   off. m* f* D9 E, T# z& }
  12873.                   old-idx. L# c: m  x. T2 g" }0 l
  12874.                   olderr
    8 {3 k/ U) A8 H, ]+ s
  12875.                   on$ K2 w8 ]- _( N& W* _% H
  12876.                   onoff* F! s& X$ \. R4 a
  12877.                   patlist
    4 N$ O8 D6 X# n  q/ @
  12878.                   pattern
    ! Z( Q9 T7 Z' r; Q. O/ ^/ i
  12879.                   PL_WIDTH_GETTER       ;function added by rk+ K8 x0 |. [, ~2 Q/ d! c0 Q
  12880.                   POLY_SS               ;var added by rk$ a7 S3 x0 ]: j; X7 J
  12881.                   ;POSITION              ;function added by rk and then moved to ac_bonus.lsp8 ^3 q5 D2 T$ ?: ^
  12882.                   proplist3 d2 z' n) _$ q1 R+ }
  12883.                   reset-lay
    . z3 Y3 b' m# i5 Z) z
  12884.                   reset-lt
    ) ^: L; P* m! r1 \) p2 g
  12885.                   s% r3 h* K# A* X/ S/ c
  12886.                   selset
    6 O- s% k- e8 o3 u) l+ N7 o% e2 K
  12887.                   set_col_tile. B% t! ]# s* @: z# D5 g# i% G% W
  12888.                   sortlist
    ; V7 _  c/ W: `3 T
  12889.                   ss% J# D% t) T0 S0 z  V9 V: j' H
  12890.                   ss_in_current_space  ;function add by rk.
    7 `* O1 R6 l5 D
  12891.                   ss-index
    # n4 x' {# O" Q1 Y: ~* q
  12892.                   ss-length
    7 `/ A3 O$ e# W  K6 t4 V7 f
  12893.                   ;ss_remove_locked     ;function added and then removed by rk.
    & }: i% U8 ]0 p+ r1 G
  12894.                   sslen
    4 ?6 D- ^$ {9 a2 _+ J# u* b
  12895.                   temp_color
    0 R8 s/ v2 `8 k+ N; A1 E  P3 |" |
  12896.                   templist
    / s6 |% ~# C$ T+ v# p2 e, U- _$ A: w
  12897.                   test-main-ok4 D3 z" c7 j# Y: l% ?
  12898.                   test-ok  N' v) ~4 p8 h$ C6 y4 @" }- u
  12899.                   testidx2 s0 i- }' H, f4 v* r
  12900.                   testlay
    4 u$ U+ ^9 @7 B  z' D" n- S; W
  12901.                   th-value
    " b/ n/ b  _2 O( m6 n7 C
  12902.                   thickness
    1 P  l& r4 p0 b0 x4 h' K1 e- x" q+ L
  12903.                   tile5 ^8 _, d9 L1 t$ N6 y
  12904.                   tile_rect1 K6 z' w1 J- A, b" r8 W
  12905.                   tilemode6 `  c3 R* s/ Q. l. b4 s# y
  12906.                   ;TNLIST           ;function removed and moved to ac_bonus.lsp by rk
    - i; J& j! z+ Z5 B" \9 x( M0 s+ B& v
  12907.                   TXT_SS            ;var added by rk  |" ^" h5 p% ~5 X9 Y
  12908.                   ;undo_init        ;removed by rk.
    # l9 u: z3 L. {5 a) s
  12909.                   vi
    - K4 a. j/ N5 z+ |  F' T+ I) R
  12910.                   vpf
    + ?& R) ~5 b, y" c9 r
  12911.                   vpldata
    1 {7 L" a+ b/ O; k6 L
  12912.                   vpn0 e) a! H& H7 s; }3 T6 B
  12913.                   which_tiles
    * y# Y% d5 j9 q' b# e5 T
  12914.                   width  T9 I$ ?. l: `2 D: [6 M
  12915.                   x
    - O# X% l5 X; G5 }, a
  12916.                   x1
      V9 o1 V0 S6 q; w) e7 U; D6 n
  12917.                   x2
    1 J7 S. R1 b  P% u, \3 L: O5 p# m9 Q5 t
  12918.                   xdlist
    - `! {% ~  o& `( D; j. H& ^+ W
  12919.                   y6 k; z' q; R3 |0 D# j
  12920.                   y1+ v5 k# R+ K; K' a& Z! h/ ^! ~0 i& w
  12921.                   y26 b: B3 P( C0 U5 h9 I; |7 Z- e) I
  12922.                 )( {. ?4 o$ N, n) |7 E

  12923. % l5 ?0 Q! O# P2 f, g% W0 P: r7 J
  12924.   (if (and (not init_bonus_error)
    ; J9 S* S. \! _/ `1 J2 s
  12925.            (equal -1 (load "ac_bonus.lsp"  -1))
    4 [: @9 Q. y7 B+ |
  12926.       );and- G* n1 x# W/ e* U. f  g3 H8 N
  12927.       (progn (alert "Error:\n     Cannot find AC_BONUS.LSP.")(exit))
    9 N9 ?6 H) e6 u* d8 {( G9 r2 c
  12928.   );if  F. c+ I1 C+ j1 Y
  12929.   (init_bonus_error (list
    . d9 N/ h  v" r3 B# m4 o  d
  12930.                      (list   "cmdecho" 0 ) \+ Z7 a2 ^1 a2 J
  12931.                            "highlight" 0
    4 Z! X- t: @+ I1 O; P5 M# C
  12932.                            "regenmode" 12 {" O: F# q+ Y
  12933.                              "ucsicon" 0
    & D( t$ b6 C# O
  12934.                      ) % L8 |0 X/ D; `  l
  12935.                      T     ;flag. True means use undo for error clean up.                    
    + [5 s2 j; d# Z& @, F5 n6 H3 ]
  12936.                     );list  / `" |: |0 J7 s2 T4 O' e
  12937.   );init_bonus_error" _* Z4 y, b* w1 `

  12938. ( c# k! [% D8 W
  12939.   (cond
    . e/ P1 k# Q1 w2 W: b2 z
  12940.      (  (not (ai_notrans)))                       ; Not transparent?/ j' o2 w% N- C' K
  12941.      (  (not (ai_acadapp)))                       ; ACADAPP.EXP xloaded?. ]# I+ a* ]+ y: _
  12942.      (  (not (setq dcl_id (ai_dcl "exchprop")))) ; is .DCL file loaded?; \6 w4 P6 z' B6 ~: L
  12943.      (  (not (setq ss (ddchprop2_select))))       ; objects to modify?
    6 A( x: P3 @  Q. o
  12944.      (t ; ], u8 k# r, b$ I# f) j2 J
  12945.         ;(ai_undo_push)
    5 W) a( G& Z% H/ }4 u, S8 Z
  12946.         (ddchprop2_init)                          ; Everything's cool,; [8 [# w# v' R7 x5 t7 v
  12947.         (call_chp2)                               ; so proceed!
    ! D4 D- n1 X: n: G0 I
  12948.         ;(ai_undo_pop)
    0 l2 K! y9 R0 s8 [# V
  12949.      )
    $ @# a$ c4 i/ n* z, `" X# u
  12950.   );cond close9 l' E( x( D4 y/ |( w  P

  12951. ) D* P! b: Y9 K$ f
  12952.   (restore_old_error)
    , q9 P- Z$ P6 v/ E9 a- J
  12953. 2 j! C2 ^6 L! a# a
  12954. (princ)& G2 P( |# M1 w8 p. D- {
  12955. );defun ddchprop2
    ( ]! _: p( B! I9 M5 E/ z

  12956. & q; c6 [9 n0 P% z; K' E( G$ E! |
  12957. ;;;----------------------------------------------------------------------------; s  h  X7 m) N
  12958. * m2 w# G( y! s  \( ^3 y5 j
  12959. (princ "   EXCHPROP loaded.")
    ' V+ k' [! v% C- l
  12960. (princ)+ T4 r+ l- c; J6 \. U0 c, F2 G

  12961. 5 J/ M; e: i4 x# k( r" B/ {! r
  12962. ;;;----------------------------------------------------------------------------
    ; g6 Y1 {2 t0 C0 i+ O% t0 I
  12963. ;;;---------------------------------DDCOLOR_LSP--------------------------------) @/ m% i' ^1 j9 C5 {) m
  12964. ;;;----------------------------------------------------------------------------) v$ @: {4 V+ C6 {4 Y7 D7 H
  12965. + q7 m7 B) E7 U8 b& N) `
  12966. ; Next available MSG number is    24 ; e$ M5 B) i) |
  12967. ; MODULE_ID DDCOLOR_LSP_* T; {: \. |; y- ^, U6 a
  12968. ;;;7 w0 d' H0 K' {7 N& g: ~
  12969. ;;;    ddcolor.lsp1 [0 k; p- s. L0 c1 p$ H
  12970. ;;;    5 `% @+ l/ y0 v# U
  12971. ;;;    Copyright 1990, 1992, 1994, 1996 by Autodesk, Inc.- X  v' W( ^1 }
  12972. ;;;0 q9 {5 F* T. Z* Q/ \" y
  12973. ;;;    Permission to use, copy, modify, and distribute this software
    ( T3 [# x% X2 p3 ?
  12974. ;;;    for any purpose and without fee is hereby granted, provided7 e- y3 S8 q/ N5 _5 i
  12975. ;;;    that the above copyright notice appears in all copies and
    * Y% D. u7 R" \, a6 M
  12976. ;;;    that both that copyright notice and the limited warranty and
    6 p6 d" C, K! S
  12977. ;;;    restricted rights notice below appear in all supporting
    6 }1 @# F* H, s3 @+ u
  12978. ;;;    documentation./ y5 O4 N5 S; b: v( }0 b
  12979. ;;;
    4 a$ {% g7 w0 g3 b
  12980. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    # w8 ]1 @% K! x6 s% f) v/ l
  12981. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF$ L9 C3 o1 g# Q+ Q, X
  12982. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    8 P# l" b3 X( n% y1 F
  12983. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE9 ^3 ?1 f. n- x9 R
  12984. ;;;    UNINTERRUPTED OR ERROR FREE.
    ; T; }, f& }$ J- @
  12985. ;;;5 m! U, S5 T3 E' S/ S) X
  12986. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to- q4 s# f5 z) x7 b2 `. W
  12987. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer* \" b5 Y% z3 m8 A; E
  12988. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) 8 ?- `3 {1 ~" j
  12989. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    8 v: v1 e3 Q  [+ R
  12990. ;;;
    / b, }/ u! w/ e
  12991. ;;;.
    8 X0 C# _' e) C4 X9 H0 I3 V7 H
  12992. ;;;
    % ?7 A# Y. [% Y$ q5 t3 H% f
  12993. ;;;----------------------------------------------------------------------------
    + j+ x) Q+ @/ N; ~& i- ^/ Y, m: i. I- e. D
  12994. ;;;    DESCRIPTION! {' g' h9 M. A. g1 Z* e; ~4 ]# ]
  12995. ;;;     ! g) V& I* i* _5 M0 P% C
  12996. ;;;    Chromatic Pallete style color selection dialog.9 S0 n& F5 \7 b: H8 X6 |; \8 ~
  12997. ;;;   
    ; l& u4 [% A* g! ]8 i4 r
  12998. ;;;    Globals:
    / f% r# h! T) P" @4 a0 u
  12999. ;;;    0 D( V9 w- k! n- Q( p
  13000. ;;;          chroma_color - Integer color index.  The last value selected
    : b0 I" m2 z8 O( h* J( F. G& W
  13001. ;;;              by the user in chroma dialog.  It is not cleared or reset& a9 o. m0 W3 h* D: U
  13002. ;;;              by a cancel.  Only used for communication between callback
    , r- h* y+ u) h0 `
  13003. ;;;              functions and the (chroma) funciton.  o) E% D# t& i$ ^% j
  13004. ;;;   
    . \# f& V1 O# z
  13005. ;;;    Depends on the definitions for the dialog provided in chroma.dcl.5 U2 p) \5 ~% ?" |- W
  13006. ;;;   
    & \/ j1 V, U; B
  13007. ;;;( u  D+ u$ K; r) ]
  13008. ;;; C:DDCOLOR -- Dialogue front end to the CECOLOR sysvar.  Uses the chroma 9 }: N. ~$ A; y* b" K1 d
  13009. ;;; pallete style color selector.
    % I9 Q* D9 V) Z0 X3 g4 V) c+ M! H
  13010. ;;;: h/ P5 |: t) q
  13011. ;;; ===========================================================================
    % U8 T) P0 l7 k+ P
  13012. ;;; ===================== load-time error checking ============================
    ; p3 |, e: o! b4 v, `
  13013. ;;;& W: K9 G/ y8 m! U

  13014. + a6 Z; h* I5 F0 s
  13015.   (defun ai_abort (app msg)) ~. L  a; c: U- w6 C
  13016.      (defun *error* (s)
    ' z. Z4 U( ~7 J
  13017.         (if old_error (setq *error* old_error))4 l( p0 O! f: t" u
  13018.         (princ)
    3 j# `/ f2 T5 _: l( R
  13019.      )" p1 S8 Z  h# F& N
  13020.      (if msg
    & N8 o- h; i3 Q- f: c/ t& L
  13021.        (alert (strcat " Application error: "
    - e2 w/ Z2 U7 J' O! T, J: y# ~6 i
  13022.                       app
    $ P  ~+ S3 I% u1 Z) ^/ l
  13023.                       " \n\n  "3 Q, _" L% C9 l( K1 `
  13024.                       msg
    # p2 I) x- T. h9 J
  13025.                       "  \n"
    + i5 D& x. I# m- T3 z# |
  13026.               )
    ! p& p. `6 k" q" Z, n5 b) _
  13027.        )
    8 x9 V7 u7 @; }1 C& K
  13028.      )
    . u# `! |. H2 @: C% v+ F' ^9 G
  13029.      (exit)+ e6 L0 o. |( ^+ {
  13030.   )  n: N3 A& U; `& Y5 P: Z* Y
  13031. 5 M' T: Q) o% {: m5 e9 G( j$ c+ z
  13032. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    ( ^! m, Q6 {# I
  13033. ;;; and then try to load it./ Z8 X- D9 k6 z; m* g5 H/ d
  13034. ;;;
    # W/ f4 y9 A5 ?% A" ^
  13035. ;;; If it can't be found or it can't be loaded, then abort the, k1 E3 c1 L8 i  \
  13036. ;;; loading of this file immediately, preserving the (autoload)
    * }6 D- A0 T& x+ {$ B& {: Q! Y" w( W
  13037. ;;; stub function.  q! Q1 u& ^+ d8 A% J8 x; a9 N
  13038. 0 C+ _" M1 _, g
  13039.   (cond
    % Z3 q; G3 u" Z
  13040.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    5 q4 B3 \  D7 H% V5 ?

  13041. ; c, @  M) b0 V+ I
  13042.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    + V4 Z( ?; P1 u3 {
  13043.         (ai_abort "DDCOLOR"
      i8 K7 ?8 g' r7 K1 @* O, [
  13044.                   (strcat "Can't locate file AI_UTILS.LSP."& w- u$ v% |: C, P4 _. M# b- Y
  13045.                           "\n Check support directory.")))
    5 M3 ]8 @# {; J# B% H
  13046. $ `: U7 i5 {5 t6 \% y* O9 C5 Z7 r
  13047.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it, C7 L% p% |) j: B& V
  13048.         (ai_abort "DDCOLOR" "Can't load file AI_UTILS.LSP"))7 Y3 O4 ?6 r( a
  13049.   ); p$ g' b. B4 O$ T' U
  13050. 0 L/ m/ g9 [: G7 b, @  ^
  13051.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    & u: H% d* j6 _3 a9 i+ a
  13052.       (ai_abort "DDCOLOR" nil)         ; a Nil <msg> supresses
    # s9 N( [0 E2 Q; z6 J) M
  13053.   )                                    ; ai_abort's alert box dialog.
    ' ?, C7 n  z$ F/ A
  13054. 3 G% v6 \) g" {  O0 u: I' D9 L
  13055. ;;; ==================== end load-time operations ===========================# h8 G3 p' |( \

  13056. 1 ^+ H- Z7 k. w& a2 y
  13057. (defun c:ccc (/ co_oce clrx co_err co_oer lay_clr)
    $ A! d) c$ p( j: A# o8 k; f

  13058. ( B! R/ H& O" E
  13059.   ;; Main Color function, called by setup code.
    6 a) z4 g4 A5 F: ^
  13060.   (defun ddcolor_main()1 A6 y2 U5 h1 A
  13061. . V) x: M8 O' Q1 i5 T; [' l2 Q
  13062.     (graphscr)
    $ n9 `% c$ [, a- i5 j+ ~( g4 ]
  13063.   
    # V% @( h. G  ~' ?3 o1 W
  13064.     ;; Get the color of the current layer, for possible BYLAYER color swatch.
    # g5 ?" z1 V$ h- a/ C
  13065.     (setq lay_clr (cdr (assoc 62 (tblsearch "layer" (getvar "clayer"))))). b4 U3 B# p; P) y5 `
  13066. 5 E& \, S; ^$ P& [
  13067.     ;; Call the dialog here...
    4 W, h' X. Z6 q1 z. V  [
  13068.     (setq clr (acad_colordlg (cstoci (getvar "cecolor")) T lay_clr))5 \4 T0 ^* ?$ Y/ e
  13069. 7 s( I/ z2 Q8 f5 r1 }
  13070.     (if clr7 z! Y) M. V1 X0 @6 r4 o7 i
  13071.       (setvar "CECOLOR" (citocs clr)))
    - l0 _/ O" P# Z7 ~$ G+ Z( q
  13072.   )% y3 W9 ^5 ]2 L$ I  R' p
  13073. ' ?* M5 v3 b9 o, G' L" n% m
  13074.   ;;;
    1 [( V  `2 M8 ]9 Q5 i
  13075.   ;;; CSTOCI -- Color string to color index7 `5 U' P: T$ V6 F
  13076.   ;;;   Convert an arbitrary case string into a color index.
    . G, Z3 v, R$ c! n3 n
  13077.   ;;;   Returns nil if string is not a valid color.6 M7 e6 c' I+ r( {" @
  13078.   ;;;
    $ [8 K0 n2 X' z- {! o
  13079.   (defun cstoci (str)7 e( K1 a6 h% k; R
  13080.     (setq str (strcase str))& e' p7 I8 [! t$ M
  13081.     (cond
    & `" h  D7 V7 t7 R" P3 ?) f  r
  13082.      ((= str "RED")        1)- J1 O$ A3 `) u, T, H
  13083.      ((= str "YELLOW")     2)- Y5 |) Q2 ]' s/ n$ H1 ~; H$ S& ?
  13084.      ((= str "GREEN")      3)
    $ h/ U- e$ N3 f' G) c( q
  13085.      ((= str "CYAN")       4)
    # ~* j1 \! x6 Q' U
  13086.      ((= str "BLUE")       5)' X( u% @8 r. N7 A
  13087.      ((= str "MAGENTA")    6)
    - J7 |7 ^- U+ b  _
  13088.      ((= str "WHITE")      7)
    % o$ l! l* E$ r3 O
  13089.      ((= str "BYLAYER")  256)
    6 p) \7 |) Z- K& F1 ?
  13090.      ((= str "BYBLOCK")    0)+ C7 R" w+ l: B! |
  13091.      ((= str "BY LAYER") 256)
    4 @; H  T2 ~, t" ?. B
  13092.      ((= str "BY BLOCK")   0)( X& Y9 c2 K5 q3 ~! M. V
  13093.      ((and (< 0 (atoi str)) (> 256 (atoi str))) (atoi str)). A+ ~% Q1 i8 p" i1 R9 J/ U
  13094.      (nil))
    3 F4 h7 m9 y! L( q6 C
  13095.   )
    / O/ _7 r1 N- y" r; m5 a

  13096. / d  a. ^$ I3 E- m% r' v- S
  13097.   }* M5 [, {" Z# N! N4 f$ f
  13098.   ;;;) L* _# e# q, y7 d2 Z
  13099.   ;;; CITOCS -- Convert color index into standard color name.- D3 x: E2 j; s* D# p
  13100.   ;;;    Will return the standard and logical color names as text! I! l& R% g" w) K! e+ Z
  13101.   ;;;    strings.  Returns nil for out-of-range color indicies.5 T% K4 y; D# [* G# |2 O- F8 R5 a
  13102.   ;;;4 R1 ^/ c& e1 }
  13103.   (defun citocs(i)
    . i! m9 G9 c- j8 N8 P0 O8 S
  13104.     (cond; R4 A8 O: {  X+ N4 a
  13105.      ((= i 0)   "BYBLOCK")
    0 v% x  y& R* t0 \; Y; A; c
  13106.      ((= i 1)   "red")
    2 S3 e! C5 d7 O5 y9 @" c% v6 A
  13107.      ((= i 2)   "yellow")& I# V8 \4 Y) c$ a5 ~4 Z: \7 e, p
  13108.      ((= i 3)   "green")" k, D( k8 ~6 Q3 H! O/ x6 ?3 r2 n
  13109.      ((= i 4)   "cyan")
    $ [) I/ V4 E1 x- T1 i! j
  13110.      ((= i 5)   "blue")
    / k; o, `# M& C; I6 }
  13111.      ((= i 6)   "magenta")9 ^" t/ m1 [1 b1 o" i
  13112.      ((= i 7)   "white")1 c' l6 s, l! @' u# T
  13113.      ((= i 256) "BYLAYER")+ r5 a/ d9 N# A. Z" w
  13114.      ((and (< 0 i) (> 256 i)) (itoa i))
    9 R8 g: a8 i* N- R: Y
  13115.      (nil))
    & c' w9 a7 `  u7 M  J2 l0 d$ `) h0 W
  13116.   )
    ; P7 z* ~" r9 d3 a0 E; d

  13117.   c/ R& y2 h$ i8 r6 W
  13118.   ;; Start of ddcolor) X' H4 F4 o6 z4 I. K( p* ^! |; {
  13119.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho% A! \: r- a) _# [; @
  13120.         old_error  *error*            ; save current error function* ~5 [$ s: V' F: b+ I; Y
  13121.         *error* ai_error              ; new error function) L0 U4 x  q: W0 V
  13122.   ), S4 ?2 l' ]0 ]& O  L

  13123. 4 D& o6 K7 a3 D- d
  13124.   (setvar "cmdecho" 0)7 \5 ~" y- _& F0 j: [+ Z% I* D, r
  13125. . {( C* e# S0 U4 v9 Y0 @5 M
  13126.   (cond- d9 P) t% c" ?
  13127.      (  (not (ai_trans)))                        ; transparent OK; F4 _4 q2 G: x4 ^5 z6 V
  13128.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?1 A# I7 o; i+ R+ ?

  13129. 6 ~0 X7 ^+ Z& b- [& ~" G% s
  13130.      (t (if (and (/= 1 (logand 1 (getvar "cmdactive")))# \2 w* U3 B2 ]  l3 r. b
  13131.                  (/= 8 (logand 8 (getvar "cmdactive"))). [$ s$ S# v) I4 M
  13132.             )4 B# I. m: p, C6 _8 @
  13133.          (ai_undo_push)! o$ P9 K: ?$ ~7 ~3 ~
  13134.         )) G* ^" v7 `- f3 p' o, k5 T" R
  13135. ! y* Z  A: g6 Y4 J( r: R
  13136.         (ddcolor_main)                          ; proceed!* O1 V2 b7 n0 R" H1 Y/ \2 V% o

  13137. 3 o( ?0 B& R& W% `; u$ Z
  13138.         (if (and (/= 1 (logand 1 (getvar "cmdactive")))
    7 Y/ A) I. s4 f7 ?5 f6 W' m
  13139.                  (/= 8 (logand 8 (getvar "cmdactive")))
    5 S& Z3 P  W; q# A# H% C% R8 p
  13140.             )3 Y% [0 s% T5 |9 V2 x8 H- ?" E6 @" [
  13141.          (ai_undo_pop)3 X4 c- [3 C! B( c' F9 k
  13142.         )4 z2 `+ m6 l8 K7 r5 V4 d
  13143.      )
    # n- {  V+ Y, d5 w1 x- Q
  13144.   )
    , K8 L' C) F7 e1 X: _$ U2 z- D5 T7 a
  13145. $ R" R4 w2 V0 d" }/ y( X
  13146.   (setq *error* old_error)
    7 A& [0 g$ Y+ ~
  13147.   (setvar "cmdecho" old_cmd)$ \% Q5 m, S/ `5 e* b
  13148.   (princ)9 c3 l, y9 L7 e% o) G
  13149. - s/ o( a; d% G# |0 P; c: Y" U
  13150. )' _7 r) Z1 u" x9 t8 c. x' H6 j
  13151. ' U; q/ y: v; p8 o8 Q
  13152. ;;;----------------------------------------------------------------------------
    - R1 d9 d! H8 x4 @8 ~

  13153. 6 L: o# `; Q5 e/ J
  13154. (princ "  DDCOLOR loaded.  ")# D1 z! s3 S3 A: B3 T
  13155. (princ)1 z* U2 H* r! @9 z- J
  13156. # }9 u3 |8 {$ v( {& ]3 b
  13157. ;;;--------------------------------------------------------------------------;
    ; K; n" J7 k' Z- X8 l4 A7 _6 ]& u
  13158. ;;;---------------Chon NHANH Nhieu Doi Tuong GIONG THUOC TINH----------------;
    # L$ D) v" Q4 J. G! A) e
  13159. ;;;--------------------------------------------------------------------------;4 m, s' t% w, w5 U6 `' \. M
  13160. ;;;   ssx.lsp6 k1 L( }% ?7 U- @" y4 ?
  13161. ;;;   Copyright (C) 1990 by Autodesk, Inc.
    7 F; h1 Z0 [+ H
  13162. ;;;   Copyright (C) 1991 by Control Systems, Inc.; `- T0 N$ l( Z1 u: m/ K/ [0 J  t
  13163. ;;;; ~. v& Y5 b- M5 P2 N
  13164. ;;;   Permission to use, copy, modify, and distribute this software and its; D1 I" v; g0 o' M6 {  `8 s2 ~
  13165. ;;;   documentation for any purpose and without fee is hereby granted.4 w& _8 E% {/ d$ \0 D
  13166. ;;;: V+ z& S2 v$ f
  13167. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
    $ ^: B% f. S) p8 @* _2 F& h5 ~
  13168. ;;;   ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF1 A7 V8 ?9 v; d8 j  K. V; ^
  13169. ;;;   MERCHANTABILITY ARE HEREBY DISCLAIMED.7 \, a0 J- V- r- n* |* j9 H
  13170. ;;;6 k( ^. y" ]6 v( {/ e- D: `
  13171. ;;;   Larry Knott                        Version 2.0    7/18/88
    0 V9 ^: Y/ a, [
  13172. ;;;   Carl Bethea & Jan S. Yoder         Version 3.0
    , n3 M6 j* l/ `- {% J4 L/ O% Q
  13173. ;;;   Enhancements to (ssx).* V  z, ^- i, o# K; w5 t9 ?
  13174. ;;;   15 March 1990 0 ?/ c% Y9 Z$ r+ @$ ]4 a  H  f, e* d
  13175. ;;;: m- G$ u% x; r, [% z+ Q
  13176. ;;;   ARTIST Software, Inc               Version 4.0   December 1991
    # x" ]3 H, u  f7 E3 t
  13177. ;;;   Modified for FLEXICON usage. If the variable FLEXVAR = 1,3 d8 d, R  a! n7 r; h! b' u
  13178. ;;;   use Flexicon menus
    " j" g5 P9 u' M1 G9 Q
  13179. ;;;
    ( D$ \4 w; @  W1 M! U( U
  13180. ;;;--------------------------------------------------------------------------;
    - a1 T( j: ?8 k" T1 S
  13181. ;;; DESCRIPTION* x1 Z3 u1 a$ I# D9 z# E
  13182. ;;;                              SSX.LSP                                 
    * i# J; `* {3 `: h+ C
  13183. ;;;                                                                          
    ; g% y& i  R8 Z9 e& V! x, o+ J! _
  13184. ;;;   "(SSX)" -  Easy SSGET filter routine.                                    ' A8 `- b7 h' x
  13185. ;;;                                                                            ; Y4 l% c$ y& U- S4 s
  13186. ;;;   Creates a selection set.  Either type "SSX" at the "Command:" prompt   
    ) s  U- G1 j- A3 E2 ?% V5 x2 k* c
  13187. ;;;   to create a "previous" selection set or type "(SSX)" in response to % ?5 [* a" W; a1 ~5 c
  13188. ;;;   any "Select objects:" prompt.  You may use the functions "(A)" to add 3 }# B/ U6 N" B# k- V1 ]- F
  13189. ;;;   entities and "(R)" to remove entities from a selection set during ; n, |1 b- r1 B: V- {
  13190. ;;;   object selection.  More than one filter criteria can be used at a & R% s+ \$ X, ?& I: a
  13191. ;;;   time.         - V; A/ C8 O: L& T: X
  13192. ;;;                                                                          
    5 X  Q0 U* i- O( d
  13193. ;;;   SSX returns a selection set either exactly like a selected" F  S) F  x5 S) B2 M" v* G
  13194. ;;;   entity or, by adjusting the filter list, similar to it.0 B* D  X: i/ n+ r! _  B4 \0 Z
  13195. ;;;8 @& w% v) Q9 W& P$ q) @
  13196. ;;;   The initial prompt is this:6 w- g( n- X; O& H  ?8 i3 V
  13197. ;;;   
    4 a8 `0 g2 {' I& z$ D6 h
  13198. ;;;     Command: ssx
    . h/ q4 \  O6 S4 f* i; @2 Q
  13199. ;;;     Select object/<None>: (RETURN)! Z' x$ G9 h. Y6 @
  13200. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector: 2 c) L0 m' s; H1 v
  13201. ;;;   2 ~1 D) W, ~& F' p- Y3 k
  13202. ;;;   Pressing RETURN at the initial prompt gives you a null selection
    7 V/ N6 D3 |5 r$ y; J6 W' s
  13203. ;;;   mechanism just as (ssx) did in Release 10, but you may select an
    + z; o! W# V. k9 c( M3 m
  13204. ;;;   entity if you desire.  If you do so, then the list of valid types
    7 I# _- X) F- {4 y6 ~& Y; `
  13205. ;;;   allowed by (ssget "x") are presented on the command line.
    5 a* |8 z3 n. c
  13206. ;;;   / p7 E9 K0 K0 L+ m) M
  13207. ;;;     Select object/<None>:  (a LINE selected)
    ) U& \: x9 T& K8 |* v
  13208. ;;;     Filter: ((0 . "LINE") (8 . "0") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0)) 6 U) z( f( Z8 o0 V& M7 o! l% G
  13209. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector: % P6 h8 h% }3 B  _; v+ h
  13210. ;;;   
    : W5 X1 s8 Q! \& F; S" {9 D
  13211. ;;;   At this point any of these filters may be removed by selecting the 6 h$ z0 i3 K7 o- d" R% }* ~
  13212. ;;;   option keyword, then pressing RETURN.
      {& Q2 B( w) ^/ g+ ^) p
  13213. ;;;   
    / y7 @  [6 q; X. Q/ m/ A5 @+ h
  13214. ;;;     >>Layer name to add/<RETURN to remove>: (RETURN)
    3 J0 m! _0 x+ p) p
  13215. ;;;         7 y: w/ H, M2 {: {+ @
  13216. ;;;     Filter: ((0 . "LINE") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))4 ?1 [% M: T) b& U
  13217. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector: . n% c$ g* S9 q2 J- r# A- s6 i
  13218. ;;;     u" h$ |# q! l% n, E
  13219. ;;;   If an item exists in the filter list and you elect to add a new item,   p' W* U& O8 |
  13220. ;;;   the old value is overwritten by the new value, as you can have only " f' C5 {( j. I' {; @7 A
  13221. ;;;   one of each type in a single (ssget "x") call.7 S6 e5 L2 q+ p  H9 R, n
  13222. ;;;+ U# Z# x# m7 B$ n( J: C# }/ k
  13223. ;;;--------------------------------------------------------------------------;  s0 J! K5 D+ F7 o! t7 `/ ~* p
  13224. ;;;! V$ B& R) o0 n: j/ N
  13225. ;;; Find the dotted pairs that are valid filters for ssget( ], D5 D& x- h) M* q6 U6 u
  13226. ;;; in entity named "ent".
    $ y) S# B; I0 t6 L( c5 [
  13227. ;;;
    ) q* i- g- Z* q& W( R1 F
  13228. ;;; ssx_fe == SSX_Find_Entity  W. X1 \) A" T1 e
  13229. ;;;. y$ m2 s5 k" Z% k# }
  13230. (defun ssx_fe (/ x data fltr ent)1 V( }# M; t) P/ m( G
  13231.   (if (and (= flexvar 1)(/= t2 "Pick"))8 T( F6 w. w# V
  13232.    (setq ent nil)
    ) @( W& ]# d9 h/ s/ Q
  13233.    (setq ent (car (entsel "\nSelect object/<None>: ")))
    3 D) m; ^% v2 A. x! a6 z
  13234.   )
    # I9 g8 [$ u7 L# A8 f* ], e2 }0 z
  13235.   (if ent
    ' m5 W; F  o, L7 Q7 x6 L
  13236.     (progn
    ; V$ f  C  f8 M' s" a& {
  13237.       (setq data (entget ent))/ [! k6 m' F0 H7 g1 a
  13238.       (foreach x '(0 2 6 7 8 39 62 66 210) ; do not include 38
    , O3 @/ n$ z: Z% s
  13239.         (if (assoc x data)
    8 Z$ \7 b1 y2 d& W
  13240.           (setq fltr 9 a7 @. `1 E: z$ h; |
  13241.             (cons (assoc x data) fltr)  b: g) e7 K. s+ i. r, d5 X" T
  13242.           )
    ; s# h6 U# k9 J) t& f
  13243.         )! q0 }) }/ T! Z# M. e/ g5 q
  13244.       )    * t$ p0 k8 R9 @8 a# Q8 E
  13245.       (reverse fltr)
    - X" M2 Q) s% ?8 ~1 c+ m  k% _
  13246.     )0 V3 B- B' R) Y$ H
  13247.   ) - T5 I0 r' `3 x
  13248. )
    # I8 G! d+ q  i+ @' {  ~7 H/ H
  13249. ;;;* F" z2 \5 _" p: g
  13250. ;;; Remove "element" from "alist".9 Y- M) A% v# n2 c3 ?3 c
  13251. ;;;
    ' i; [; S5 E9 ^" q
  13252. ;;; ssx_re == SSX_Remove_Element4 ^' n6 k' t. L
  13253. ;;;5 }) T2 O2 @; v. b
  13254. (defun ssx_re (element alist)  r) K2 I- v- Y, T6 i3 `% Z6 ]" {7 a
  13255.   (append
    5 _, ~. \( m2 ]  i
  13256.     (reverse (cdr (member element (reverse alist))))
    * q) |# k# u$ O$ t' d9 f
  13257.     (cdr (member element alist))   
    2 H, A7 T2 S! H9 l* e
  13258.   )
    4 v4 P4 y# o  d* P1 g" H! |: M
  13259. )9 a( F' R1 P7 @5 M7 M4 B$ }4 a  p
  13260. ;;;
    ; ~6 i: e% M$ B# L, `
  13261. ;;; INTERNAL ERROR HANDLER
      w8 g; k$ }7 m1 ]
  13262. ;;;
    . X; R. }+ [2 ^+ B1 b) G
  13263. (defun ssx_er (s)                     ; If an error (such as CTRL-C) occurs+ \$ S& X) Y6 `" G+ G4 J1 G7 k5 R
  13264.                                       ; while this command is active...
    / \) S- a0 \2 {8 W
  13265.   (if (/= s "Function cancelled")
    - ^' v% O, }" ]! W4 W+ e
  13266.     (princ (strcat "\nError: " s))
    # `. V8 h  ?- K& H# U$ R
  13267.   )2 d; B$ d* R8 C) j- ^$ e
  13268.   (if olderr (setq *error* olderr))   ; Restore old *error* handler, o! h" H- P0 u  z
  13269.   (setq flexvar 0)# @; X' a1 Q( x) [) G  q8 x& h
  13270.   (princ)5 X. h: j3 H  Y; p9 \. X9 l$ Z' K8 q1 J
  13271. )
    7 Z, e+ f3 A& I! }/ y/ N. \$ O
  13272. ;;;) j* _3 y7 g1 Z2 h8 ]* |# V3 w
  13273. ;;; Flexicon call routine
    " R. Y, F' K# R; d5 q, v
  13274. ;;;3 Q8 ?7 a5 F$ `! M+ O
  13275. (defun flexmnu (a)  f7 m3 T/ G3 Z# g
  13276. (if (= flexvar 1)2 Q0 N9 s6 P! T) K+ W6 `0 [6 Z0 e: W
  13277.   (command "FLEXICON" (strcat "FLEX" a))9 t9 u7 l4 u# F! Q4 q8 m
  13278. )3 K( }- ~$ `+ Q2 Y! g; R
  13279. )# h- }7 c7 S- J# e* n( j) H  Q% Y

  13280. ' d8 I0 C) D1 ], S- q' p- [
  13281. ;;;   ! f5 Q# F; g' L! b. G: d3 q
  13282. ;;; Get the filtered sel-set.0 n5 N3 h: o7 K3 c; h
  13283. ;;;
      o: H! L; D( ]. D; ?
  13284. ;;;* H9 a4 [( a4 h, X% o7 @3 D' a6 W
  13285. (defun ssx (/ olderr)
    ; }  s! B- i: C' G
  13286.   (gc)                                ; close any sel-sets            
    : \0 e% n% A' w0 D
  13287.   (setq olderr *error*
    6 s$ }6 B" O+ q7 S9 J% V
  13288.         *error* ssx_er
      z% }& t/ }! w* O- s  j
  13289.   )9 l5 ?5 F& v8 T* ^
  13290.   (setq fltr (ssx_fe)) 6 q3 P& l* W, G7 Y/ b& L- Z
  13291.   (ssx_gf fltr)
    . L2 y6 p3 l! V$ Z- O
  13292.   (if (= flexvar 1)
    $ a( ^/ O8 K  l) k/ N- M
  13293.    (progn
    - a2 J( Q! W* x  G  m& Q
  13294.     (prompt "\n \n \nNow select the required EDIT command and (P)revious.")
    + E: u' O+ W9 c% d
  13295.     (flexmnu "EDIT")- W  m! t; |+ ^" k$ ?
  13296.    )
    % g- x+ U- ^! c9 \
  13297.    (command "p")& J4 Q2 D2 c4 c) ]7 x" r8 k
  13298.   )
    " i: j* e* @8 g; f" Q/ d
  13299.   (princ)) Y5 m9 z$ M9 q! g5 j. b
  13300. )8 X8 Y" ^. B2 G! E8 `
  13301. ;;;8 H) R, h  k( e5 N' ^; Y% i5 {& u
  13302. ;;; Build the filter list up by picking, selecting an item to add,
    & y. D% w% J% O& C4 K% p4 q
  13303. ;;; or remove an item from the list by selecting it and pressing RETURN.
    % g( B# z4 G, V4 [6 j4 e
  13304. ;;;
    ! ?# I2 N) i' f8 v
  13305. ;;; ssx_gf == SSX_Get_Filters
    0 W+ u9 Y0 J2 `! d9 G8 }2 Z
  13306. ;;;
    ; `; G0 o& Y- M8 S* G
  13307. (defun ssx_gf (f1 / t1 t2 t3 f1 f2)  \6 c1 R- e8 r: X- y$ B% L
  13308.   (while
    " _( _8 s) h! T
  13309.     (progn* ]- @6 @3 O7 F& N; P
  13310.       (flexmnu "SSX")/ V- B) ]9 R, Y/ ~1 p' m( [
  13311.       (cond (f1 (prompt "\nFilter: ") (prin1 f1)))
    , j3 |1 ^0 k4 l& m$ J) ?
  13312.       (initget
    0 w4 m* {% C- h5 P) ^
  13313.         "Block Color Entity Flag LAyer LType Pick Style Thickness Vector")" j( d& e2 v7 B
  13314.       (setq t1 (getkword (strcat
    5 w) o5 D. C, B# u+ W: q* \
  13315.         "\n>>Block name/Color/Entity/Flag/"
    ! s. {1 ~' |' S. m% _3 n+ u
  13316.         "LAyer/LType/Pick/Style/Thickness/Vector: "))) 8 I0 K; E& d! |6 b8 z1 q
  13317.     )
    % J# |  l. F. R; \- |$ H
  13318.     (setq t2
    4 F2 h+ u; Z# H- d% j3 g6 x
  13319.       (cond- W1 {9 j7 U3 n+ N& ~$ g
  13320.         ((eq t1 "Block")      2)   ((eq t1 "Color")     62)
    ' k( m+ t3 i6 }" I& r
  13321.         ((eq t1 "Entity")     0)   ((eq t1 "LAyer")      8)
    5 e. e- q) @. C; S
  13322.         ((eq t1 "LType")      6)   ((eq t1 "Style")      7)
    % N, Y3 ^+ n* A6 R. n( V, ^8 D
  13323.         ((eq t1 "Thickness") 39)   ((eq t1 "Flag" )     66)( G/ Y4 \6 t% R& N* Q6 [& o# i8 f. N) A
  13324.         ((eq t1 "Vector")   210)
    4 c3 L# M* `% l* a7 c
  13325.         (T t1)
    6 f% X1 t9 |& d& Y7 z
  13326.       )
    5 C" [4 S% h+ k5 ]% J3 J, n
  13327.     )5 ?% I4 X' K7 u. \) v8 Z
  13328.     (setq t30 V* I2 t: ]9 K0 S
  13329.       (cond) U* J; m) s: w$ I4 }3 l
  13330.         ((= t2  2)# Q- }. ^5 |8 `+ v- P* P) Q' V6 j2 W. ]
  13331.          (if (= flexvar gtads 1)5 m3 I4 z) [& |0 f& m0 j$ w
  13332.           (progn
    8 V; e0 Z" `1 D0 ~- ^0 c# r3 g
  13333.            (prompt "\n>>Block name to add/<RETURN to remove>: ")
    + k9 L# f) x$ ~" _
  13334.            (gttable "BLOCK")6 H; _5 r/ S3 L7 _  @
  13335.           )
    ( s- q; y5 Q+ R7 m! I! a% |
  13336.           (getstring "\n>>Block name to add/<RETURN to remove>: ")
    8 \: F8 i" Y- I( o- ?# S
  13337.          )4 H5 C$ k( F7 c% X: Z2 a
  13338.         )
    # ]# R( H# O. r: q! X( U& k. o  I
  13339.         ((= t2 62)  (initget 4 "?")
    $ p/ K+ q. Z* [
  13340.           (cond5 {  C8 a$ R( g# K" r( B7 H( @/ ^
  13341.             ((or (eq (setq t3 (getint * A9 P1 M/ f+ m
  13342.               "\n>>Color number to add/?/<RETURN to remove>: ")) "?") 6 t( z6 F0 v+ B0 z4 u! t% |5 t
  13343.               (> t3 256)). P6 o( L4 q- l7 D% Q. O
  13344.               (ssx_pc)                ; Print color values.
    0 T" G8 o4 |' R) ?
  13345.               nil
    # b7 ^. V) u  V. s8 y
  13346.             )
    . g* h5 I7 V7 _6 P- i& G5 N
  13347.             (T7 C# V* J9 `' p9 A
  13348.               t3                      ; Return t3.
    ! O3 A5 }9 ]- X, `# |
  13349.             )
    0 Y$ l) E# Y1 ~0 k- J4 S" Y2 ^
  13350.           )
    " |, \0 ]! b% m6 v7 F
  13351.         )
    8 G* F+ z3 N# ^
  13352.         ((= t2  0) (getstring "\n>>Entity type to add/<RETURN to remove>: "))
    & D+ H  e8 y2 t
  13353.         ((= t2  8)$ R4 W' m6 d8 L& S
  13354.          (if (= flexvar gtads 1)
    $ J2 ]3 a$ J* N" D
  13355.           (progn& U0 r9 N, r* @) I6 k1 a( B
  13356.            (prompt "\n>>Layer name to add/<RETURN to remove>: ")6 n/ q; {) y' d- p
  13357.            (gttable "LAYER")
    ; |; t5 a" h6 M$ @; ?. ?$ A
  13358.           )
    6 D6 c3 G4 K8 \# ~6 F
  13359.           (getstring "\n>>Layer name to add/<RETURN to remove>: "): @/ t3 L" t  A, c
  13360.          )
    9 ?2 D, M" p" n7 x& t0 d
  13361.         )' f) u- Q2 h0 u# B+ N* X
  13362.         ((= t2  6) , ^4 e0 a9 `1 s- o* F" K/ h% ~
  13363.          (if (= flexvar gtads 1)
    , c3 G+ o5 O3 P6 v6 g
  13364.           (progn4 d2 Q4 e5 D" o# q* K
  13365.            (prompt "\n>>Linetype name to add/<RETURN to remove>: ")
    0 `$ x% W+ Y; L* D
  13366.            (gttable "LTYPE")
    ! ?, T7 `5 c# D0 A. n, E  K
  13367.           )' D7 V$ c' h2 b, S2 N) B$ d7 b
  13368.          (getstring "\n>>Linetype name to add/<RETURN to remove>: ")
    1 [% o, [! K4 }% |- r% c
  13369.          )
    8 u6 N& n0 t& x  D" y: ?8 m
  13370.         )( ]/ A$ `+ e1 k0 `$ l; n
  13371.         ((= t2  7)
    1 K1 L; G" T; P+ M; x
  13372.          (if (= flexvar gtads 1)$ t! w. r+ r9 W+ C: A" B  P
  13373.           (progn
    - C% a2 W# _0 _- c( m
  13374.            (prompt "\n>>Text style name to add/<RETURN to remove>: ")
    * y. _0 x0 l2 `
  13375.            (gttable "STYLE")5 ?4 z$ q1 N9 l0 A) K7 W
  13376.           )
    # c# \. J) O$ ^$ e* v( y
  13377.           (getstring "\n>>Text style name to add/<RETURN to remove>: ")
    9 V* ^! S* v# b6 G6 ]
  13378.          )
    6 n& {/ L. T$ F$ i% G  R& }
  13379.         )
    2 c! `8 u3 A: ^4 z5 s0 @4 v
  13380.         ((= t2 39)
    * a* a( ?- E! d  c( t" N
  13381.            (prompt "\n>>Thickness to add/<RETURN to remove>: ")
    4 ^8 v3 H! i* N! r
  13382.            (if(= flexvar gtads 1)(gtfnum"Thickness to add:")(getreal))- E: u) e1 v4 r! r6 g  i
  13383.         ); O* K3 L$ d3 v& q8 _
  13384.         ((= t2 66)  (if (assoc 66 f1) nil 1))$ ?. i/ f! a' }5 `
  13385.         ((= t2 210)
    5 U1 B  ]5 d3 a  C: X9 r$ R
  13386.           (getpoint  "\n>>Extrusion Vector to add/<RETURN to remove>: ")
    & n! V" G- N) p+ `5 L3 [
  13387.         ); s6 n7 T- A; K. P& h1 T5 b
  13388.         (T          nil)
    0 ]  G7 ]& g  P% O9 f
  13389.       ); N" H2 j" F& @( S! ^& A( `  w  D
  13390.     )
    # R8 m! W4 V" T% a2 J8 d9 ]: Y
  13391.     (cond. U: x5 H7 k! J% {' @1 \
  13392.       ((= t2 "Pick") (setq f1 (ssx_fe) t2 nil)) ; get entity
    5 o' P% |) v) h; ?: w& n' E
  13393.       ((and f1 (assoc t2 f1))         ; already in the list
    ' H1 ^! ~1 g! n. M7 ]
  13394.         (if (and t3 (/= t3 ""))
    ( |, A5 d! Q2 ~; {0 ?
  13395.           ;; Replace with a new value...             5 F2 D) v' w3 ]  l) r) v
  13396.           (setq f1 (subst (cons t2 t3) (assoc t2 f1) f1))
    & ^- Y1 I$ d; ~
  13397.           ;; Remove it from filter list...
    7 X+ _) v" m0 G0 Q9 Z' `1 m- d
  13398.           (setq f1 (ssx_re (assoc t2 f1) f1)) % m" g! [) \% h* F  |- r, q3 ~
  13399.         )  - D  v; a! D* Q6 h
  13400.       ); [) M7 G7 }) l+ b5 _! A
  13401.       ((and t3 (/= t3 ""))
    9 s) F" \' p4 k* {2 |
  13402.         (setq f1 (cons (cons t2 t3) f1))9 p' z* |% D6 m% |
  13403.       )5 ~0 i% [5 }0 n7 J# Y5 i
  13404.       (T nil)$ T, {* S4 L8 @
  13405.     )& E' y4 V0 t; @
  13406.   )
    , ^+ Q7 z# C4 V6 J; S* [; s5 d& T
  13407.   (if f1 (setq f2 (ssget "x" f1)))7 t" H) i- m2 t
  13408.   (setq *error* olderr)
    2 z- J$ Y; F: G( J: _* k5 n
  13409.   (if (and f1 f2) " g: v7 c+ H& M0 i! d& Z  k, J6 n4 m
  13410.     (progn6 K1 U1 Y8 @, ?
  13411.       (princ (strcat "\n" (itoa (sslength f2)) " found. "))7 C& [  q# _/ G4 n; `1 c, c7 i
  13412.       f2 8 E+ B. m1 M( B! b
  13413.     )( @7 V# ~4 {( P, @/ \2 ^; ]
  13414.     (progn (princ "\n0 found.") (prin1))
    ( W& l( b' }  _2 f% ?2 A# W
  13415.   )
    - B+ w7 [, v9 c5 Y5 E8 C; n0 s
  13416. )
    * b5 ~! y9 p2 r
  13417. ;;;
    . J/ ~8 i3 w1 `
  13418. ;;; Print the standard color assignments.  p3 ?5 o! N  u# H6 \
  13419. ;;;
    # R2 F) g8 ?" h* v
  13420. ;;;% a% _( ?2 p3 s- ?5 }
  13421. (defun ssx_pc ()# h1 T  {$ }# J
  13422.   (if textpage (textpage) (textscr))
    % s+ T5 I3 A0 a' o* M8 q
  13423.   (princ "\n                                                     ")
    ! t8 r/ `0 y$ d6 A
  13424.   (princ "\n                 Color number   |   Standard meaning ")0 q7 s4 Y0 j" [, S7 K/ `) ^
  13425.   (princ "\n                ________________|____________________")
    % t2 ?8 V1 M0 Z/ J6 G
  13426.   (princ "\n                                |                    ")( A% N' c6 [5 a7 C" y1 i5 P' r4 ^
  13427.   (princ "\n                       0        |      <BYBLOCK>     ")
    * I2 O  b; e1 h- A
  13428.   (princ "\n                       1        |      Red           ")
    5 Q& a6 e: \( G$ X: l# ^) }1 I
  13429.   (princ "\n                       2        |      Yellow        ")* G7 C! F7 b/ ~
  13430.   (princ "\n                       3        |      Green         "): y$ l3 O& z; [$ F3 d8 Y2 U9 [
  13431.   (princ "\n                       4        |      Cyan          ")
    6 D5 X; M. `3 {5 Y! U
  13432.   (princ "\n                       5        |      Blue          "), }, `2 ~# P0 R9 @0 H& x) L
  13433.   (princ "\n                       6        |      Magenta       ")
    $ f" o8 [; h- |/ {, F# g
  13434.   (princ "\n                       7        |      White         ")
    * M  h* w: W6 ?3 S. Z/ X
  13435.   (princ "\n                    8...255     |      -Varies-      ")
    ) G( P6 k1 l: W. G% l. C
  13436.   (princ "\n                      256       |      <BYLAYER>     ")
    $ T0 ]" Z6 h) ?; B* m4 w- p* ]
  13437.   (princ "\n                                               \n\n\n")7 q/ Z6 h# F% y7 I
  13438. ), P) y% ~/ c7 y" q+ o
  13439. ;;;6 Q+ R. K9 i3 Z# m
  13440. ;;; C: function definition.& L4 x- y$ p& h1 n: a% {1 K; S; w7 q
  13441. ;;;' B# }, g9 }, p8 ]( W- Y- o# R# W3 m
  13442. (defun c:ssx () (ssx)(princ))$ {( a* ^* Q: i% x4 U- U3 l* V
  13443. (princ "\n\tType \"ssx\" at a Command: prompt or ")
    ) K7 l( x- h' D* o7 A3 o' u/ H0 M% H
  13444. (princ "\n\t(ssx) at any object selection prompt. ")6 e* f5 |1 n, @& _  q
  13445. (princ)
    5 X3 a2 ^9 T5 _. F/ ^7 ^

  13446. 7 P8 H# M5 V9 ?
  13447. ;;;--------------------------------------------------------------------------;
    # e& c/ i' }* Q( K6 C5 |
  13448. ;;;--------------------------------------------------------------------------;* g" V& A' p3 Z1 g3 T( P& d
  13449. ;;;--------------------------------------------------------------------------;
    + F+ J5 x  h* I, j5 M/ D2 i8 g, g
  13450. (defun S::STARTUP ()  M1 ?* F5 u- x: {% z. }! u
  13451. (setvar "cmdecho" 0)+ h) e9 ~5 q( ]/ \( I& J- o
  13452. (setvar "cmdecho" 1)
    6 k" z* l. E0 N& V% i# Y7 G
  13453. (setvar "LTSCALE" 10)7 j! K* w, P% _% Y! m! e; k

  13454. 5 O1 o2 q2 w4 D8 u% f6 ~% w) @5 }
  13455. ;(command "_load" "chenKH.fas")
    . L6 M+ P3 Y8 R, Q. Q+ y8 D# p! i
  13456. ;(command "_load" "ctcot.fas"). o) @& X2 v4 b
  13457. ;(command "_load" "damdoc.fas")  j0 k$ Y4 n$ \. }
  13458. ;(command "_load" "ghichu.fas")
    & o; v+ U7 D2 y2 ]  L- X6 n& p' W
  13459. ;(command "_load" "hamtutao.lsp")) {1 ?6 ]; }- _* {) o7 e
  13460. ;(command "_load" "KHOITAO.fas")
    - ~; N# m6 d! u4 C! h
  13461. ;(command "_load" "KHthep.fas")
    & g* I/ y: F. J
  13462. ;(command "_load" "mbmong.dcl")
    ( h* F9 Q$ x  \3 Q3 p% n. a
  13463. ;(command "_load" "mbmong.fas")
    , x0 G1 P* |$ g2 ^" i( a! ]
  13464. ;(command "_load" "mccot.fas")
    8 ?- n# l* R/ |3 `& H  I5 m, K
  13465. ;(command "_load" "mcdam.fas"): Z; d& F& C& u  L; V
  13466. ;(command "_load" "mcmong1.dcl")1 j/ G) C# @2 m
  13467. ;(command "_load" "mcmong1.fas")/ ?$ q' W* u7 E# |/ i% |
  13468. ;(command "_load" "mcmong2.dcl")
    4 K2 Z5 Y) ~/ ?4 A/ I3 O; D
  13469. ;(command "_load" "mcmong2.fas")
    & ]! Q& }# E% b7 ~: K& u' n
  13470. ;(command "_load" "mcmong3.dcl"), e6 L1 p2 P7 ~# `, V- |/ H6 [
  13471. ;(command "_load" "mcmong3.fas")8 l% e" y0 o3 t+ p- N
  13472. ;(command "_load" "mcsan.fas")
    5 Z7 I# ]/ N/ ]# E1 ?% E2 l& |# b
  13473. ;(command "_load" "thepdai.fas")) I& B  q# i( X# J( s4 @- I
  13474. ;(command "_load" "thepdoc.fas")3 A9 L% F- k, i) C2 r* N
  13475. ;(command "_load" "thepmb.fas")% p& |0 A( o0 \+ X
  13476. ;(command "_load" "thepphbo.fas")4 f* U' I; F% E5 Q. N1 g' @: `3 D% t6 Z, S
  13477. (command "_script" "thongso.scr")
    ! T' ?& Y; j6 Q& z6 o
  13478. ;(command "_load" "thongso1.dcl")  }( |# _  M& O  [: c# p' U* P
  13479. ;(command "_load" "thongso1.fas")
    $ s6 p% Y- S4 V/ m
  13480. ;(command "_load" "thongso2.dcl")
    9 ]# Z& f2 e* k; P
  13481. ;(command "_load" "thongso2.fas")/ |0 a% U. z' ?
  13482. ;(command "_load" "tietdien.fas")
    " Q" \" a2 f) S
  13483. ;(command "_load" "vehan.fas")
    9 d8 d# ]9 ~( `5 b1 W1 q
  13484. (command "_load" "phamDuy782006_TKT.lsp")
    : [# T% i  c1 l1 L! G) z" Z+ k
  13485. (command "_load" "phamduy782006ganhtd.lsp")
    ' a) u: X* B6 C: J( y
  13486. (command "_load" "phamduy782006ganhtds.lsp")3 C9 G2 V& X" D$ f* u, M
  13487. (command "_load" "phamduy782006htd.dcl")
    " S$ u6 |* f6 i
  13488. (princ)
    # C- l  o2 ~$ E+ s- I7 G
  13489. )
    ( E. ^/ B3 z# x7 r; D
  13490. 0 K: G4 J+ x" H4 L2 L% t' e% L
  13491. ;; Silent load.' H/ @* \4 z  D. g0 m
  13492. (princ)  I: p  ~& m$ z. A" |! X

  13493. # \" G$ b. }& h

  13494. 1 ~% M. Y- p; V$ P8 g! M: ]  m
  13495. ;; Silent load for the Express Tools., b- P7 Y. I& _% `9 f7 v
  13496. ;; Altering this line will affect Express Tools functionality
    1 a# |) q& U3 Z$ B7 Y2 ^
  13497. (load "acettest.fas" (princ))
    # e( H- i1 Z3 `0 ?  B
  13498. �32
Sao chép mã

4 C* l! N+ x5 j! j. ^00st Cách Thêm Menu & Lisp Vẽ & Fonts Chữ mở Gõ Chữ Administrator để Gõ
/ d, L7 Z- O) O! E: p$ h8 C% Q

2025-04-21 Plot.jpg (70.6 KB, Lượt tải về: 323)

2025-04-21 Plot.jpg

2025-04-21 Text Style.jpg (42.87 KB, Lượt tải về: 305)

2025-04-21 Text Style.jpg

2025-04-21 Layer.jpg (26.81 KB, Lượt tải về: 310)

2025-04-21 Layer.jpg

2025-04-21 AutoCAD Message.jpg (8.58 KB, Lượt tải về: 303)

2025-04-21 AutoCAD Message.jpg

Screenshot_20220406-091212_Facebook.jpg (306.88 KB, Lượt tải về: 295)

Screenshot_20220406-091212_Facebook.jpg

00st Cách Thêm Menu &amp; Lisp Vẽ &amp; Fonts Chữ mở Gõ Chữ Administrator để G.jpg (249.66 KB, Lượt tải về: 321)

00st Cách Thêm Menu &amp; Lisp Vẽ &amp; Fonts Chữ mở Gõ Chữ Administrator để G.jpg

Untitled-1 Da Xong Trump Putin 0 Hoi Xong Chua copy.jpg (299.44 KB, Lượt tải về: 298)

Untitled-1 Da Xong Trump Putin 0 Hoi Xong Chua copy.jpg

RUN-2000.zip

1.11 MB, Lượt tải về: 5, Tải điểm: Thưởng -2 điểm

Zip






Chào mừng ghé thăm Thư viện xây dựng: Tiêu chuẩn xây dựng- Văn bản- File mẫu- Sơ đồ- Quy trình- Phần mềm xây dựng (https://xaydung360.vn/thuvien/) Powered by Discuz! X3.2