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. ********************************************************************************: w4 X; ]8 x; {2 W5 g4 C0 M7 I. x
  2. *             ACADLISP FOR AUTOCAD R.14 -> AUTOCAD R.2012                      *% Q# o: m( D$ r. o% Z7 _
  3. *         Tran Ngoc Thang DHXD-HaNoi41 from years 1999 -> 2015                 *
    3 o3 s) Q% o9 v. [
  4. *                         Suu tam & Soan                                       *
    / B1 x  C; _7 W' Y' q3 v! D
  5. ********************************************************************************0 F" X" X, \9 _: E, @
  6. ( f2 b* B% [0 i, G5 D! o5 Q$ k! J6 `
  7. ; Next available MSG number is  104
    , K: C1 K/ y8 j0 H" v, a. f0 D
  8. ; MODULE_ID ACAD2000doc_LSP_
    ) H4 w/ y; D) r5 `& E7 [
  9. ;;;    ACAD2000DOC.LSP Version 1.0 for AutoCAD 2000; j( P2 X% L9 Y$ J* E6 F
  10. ;;;
    # u! f! }8 Z7 G7 X8 s) V" R( b
  11. ;;;    Copyright (C) 1994 - 1999 by Autodesk, Inc.
    ) C9 ?, E3 R. [- J
  12. ;;;& E. I; D: L" h  {" N8 N
  13. ;;;    Permission to use, copy, modify, and distribute this software
    / Y# B. n3 u. w
  14. ;;;    for any purpose and without fee is hereby granted, provided' O! r5 y4 u) ^! h% X% n
  15. ;;;    that the above copyright notice appears in all copies and
    ' X5 \( \9 m( G; E  Y% F! j
  16. ;;;    that both that copyright notice and the limited warranty and
    ) y8 f4 u7 G2 u. l4 X
  17. ;;;    restricted rights notice below appear in all supporting) W/ K  U; F1 r% I, I8 j" ?+ M
  18. ;;;    documentation.  G3 t  U; B  o0 e, M3 |5 O4 f
  19. ;;;
    ' N0 B. L/ D" }1 W0 L
  20. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.. j8 F# l# M2 y5 f* h/ u1 ]6 Z
  21. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF6 _; r8 e% @* B$ h' W
  22. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    % L) s* [" u" f# S% M: d  J, M
  23. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    ; \* W  m8 a8 [( |) I: S" y
  24. ;;;    UNINTERRUPTED OR ERROR FREE.) n4 m& }) y* U1 z) x+ C
  25. ;;;
    . X1 t- M; v& @
  26. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    - m# T+ {- a2 f5 H
  27. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    + M  [# d8 Y1 T3 D% O
  28. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) 7 w; s+ U) l: ^6 V, Z
  29. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    0 k0 T5 g* z5 {  E7 \( r; c/ [- j5 u
  30. ;;;
    ' n; e$ b$ v- Q
  31. ;;;.
    7 g3 r0 m( }+ b
  32. ;;;& T, }( \5 h: a9 P$ D
  33. ;;;    Note:
    & ^4 {+ K1 j6 V; Z9 x6 W; m5 c/ J3 W
  34. ;;;            This file is loaded automatically by AutoCAD every time
    + S- i5 ?$ _* [' F
  35. ;;;            a drawing is opened.  It establishes an autoloader and4 e* V6 O% V- D/ u1 i
  36. ;;;            other utility functions.: M, U3 N# o( G( T  [- C, d
  37. ;;;
    , @9 A0 q+ c2 X4 z- u4 F6 c$ j
  38. ;;;    Globalization Note:   
    * T. [0 c+ @# y5 T$ o8 `  [
  39. ;;;            We do not support autoloading applications by the native
    3 J( M* F& Y  V; B) V8 h0 e
  40. ;;;            language command call (e.g. with the leading underscore
      X+ @7 {, C+ ~1 g7 f( z$ @* V
  41. ;;;            mechanism.)& g8 N9 Y* H* m& n

  42. & s# X2 ~2 H- V- v2 T

  43. + u4 K4 O% X  m- I1 \
  44. ;;;===== Raster Image Support for Clipboard Paste Special =====1 B2 f- `1 a- E/ S# @* l" L7 g
  45. ;;5 c0 [8 T6 d; g7 m% E
  46. ;; IMAGEFILE$ ]; M; N! d2 A5 B" ]6 o
  47. ;;5 q8 R5 V3 l. J, ]% i( h  U
  48. ;; Allow the IMAGE command to accept an image file name without
      F! W' _7 u1 Y/ J) G  c- E6 T7 h/ Y; w
  49. ;; presenting the file dialog, even if filedia is on.
    5 l6 V5 l" R# o6 a+ [; }
  50. ;; Example: (imagefile "c:/images/house.bmp")
      J, M9 C: p( X5 }
  51. ;;
    6 Z( p. z& d4 C* d7 G
  52. (defun imagefile (filename / filedia-save cmdecho-save); f/ N  l1 n# W$ t' [
  53.   (setq filedia-save (getvar "FILEDIA"))3 c! {: P8 G! V+ L+ G2 n2 d& B
  54.   (setq cmdecho-save (getvar "CMDECHO")); K3 ~. }4 i& V! p& b
  55.   (setvar "FILEDIA" 0)
    . q2 G4 \% i/ B) [6 q
  56.   (setvar "CMDECHO" 0)
    0 p* r  m, Z) {5 T' ~8 |! a
  57.   (command "_.-image" "_attach" filename)
    8 s1 ]  R# e  l1 s) z1 {! z; _
  58.   (setvar "FILEDIA" filedia-save)
    ! o0 w) _- M4 d/ C7 ^
  59.   (setvar "CMDECHO" cmdecho-save)# Q) l# N  `. L0 Q* `+ I* W, s
  60.   (princ)
    & L$ Z2 U* Y5 y, c4 h7 a
  61. )  Q1 y8 J# c9 N7 |

  62. 0 ^0 g  k: i7 O9 q* A+ X% V- ?
  63. (defun c:zx () (command "zoom" ".5x"))2 `+ R, R3 _3 _
  64. (defun c:zz () (command "zoom" "p"))
    - T' T# v8 ~, n+ `. G. z
  65. (defun c:za () (command "zoom" "a"))
    - @& {& _* ?/ K7 t6 g
  66. (defun c:zd () (command "zoom" "d"))" s/ }) i3 k( j) {
  67. (defun c:ze () (command "zoom" "e"))
    % u9 s- d' x( g
  68. (defun c:zr () (command "zoom" "" ""))
    # d# k, F0 G% x" L+ Z+ Q; H
  69. (defun c:vv () (command "ucs" "v"))
    + _; P* z' n, t
  70. (defun c:co () (ssget) (command "copy" "p" "" "m"))
    " V9 f8 V8 }, d; P
  71. (defun c:c () (command "circle"))4 Y( _" V) E2 I5 }) N; {
  72. (defun c:rt () (command "rotate"))
    1 U* Y0 g' [+ l9 h
  73. (defun c:3q () (ssget) (command "_rotate3d" "ANGDIR" "value" pause (princ)))
    / J3 x" E% x% U$ G, }6 l
  74. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))
    $ ^! i) r4 }: J5 S& S
  75. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))
    . [/ `" p9 e( ]4 x
  76. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))
    % y3 g: U+ h3 D$ ]0 d
  77. (defun c:r5 () (ssget) (command "rotate" "p" "" pause "5"))$ w2 l; J( G. c) Z" d  ^! R/ Q
  78. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))' L- D5 ]" N5 O8 c" g! h+ l
  79. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))
    0 |0 V  w! l& J9 a  [3 L, \$ G
  80. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))0 x8 z7 D  L' H! U5 w1 A( V2 i8 F
  81. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))* j: C, ^/ d5 n" C- j
  82. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))4 P8 ]2 M' B2 J+ J5 d
  83. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    ! d. z$ d2 v) K0 O  ?' q
  84. (defun c:md () (ssget) (command "mirror" "p" "" pause pause "y"))
    1 y' Y$ i$ ?% S* i1 A
  85. (defun c:fd () (command "find" "p" "" )(princ))(princ)5 N/ h6 P8 j3 x) ?
  86. / S. N* I2 `% }) ^; d2 J& Y
  87. (defun c:romantdim () (command "-style" "ROMANT-DIM" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)
    - K5 A& H( y2 j7 W8 F$ k
  88. (defun c:romantext () (command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)# B# N* k* u" w
  89. (defun c:vnhelvthuong () (command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1""0""n""n""n"))(princ)
    3 B! r8 `( x; {( Y
  90. (defun c:vnhelvhoa () (command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500""1""0""n""n""n"))(princ)) G) @7 u/ `! b9 B8 C2 C
  91. (defun c:truc () (command "-style" "TRUC" "impact" "0""1""0""n""n""n"))
    4 x2 Y0 F1 e' C7 S8 n
  92. (defun c:chu () (command "-style" "VERDANA" "verdana" "200""1""0""n""n"))
    3 C- |# P2 e0 J7 m) c+ M# j
  93. (defun c:cot () (command "-style" "COTES" "verdana" """1""0""n""n"))
    * T+ P/ r2 B: J/ f
  94. ) m5 S7 g( E- H' j  Y
  95. (defun c:an () (command "-style" ".AVANT" ".vnavant" "200""1""0""n""n"))0 s9 E1 }% D9 g& ?- w$ u. h) y
  96. (defun c:ah () (command "-style" ".AVANTH" ".vnavanth" "200""1""0""n""n"))
    2 Y. a7 Q) g% X. s
  97. (defun c:ha () (command "-style" ".ARIALH" ".vnarialh" "200""1""0""n""n"))
    % ]( C6 D" _+ k
  98. (defun c:na () (command "-style" ".ARIALNARROWH" ".vnarial narrowh""1200""1""0""n""n"))
    & t# G7 g3 Y" w; j$ q) R9 b
  99. (defun c:vn () (command "-style" ".VNTIME" ".vntime" "200""1""0""n""n")). \- k& s  _; _( y7 _
  100. (defun c:vh () (command "-style" ".VNTIMEH" ".vntimeh" "200""1""0""n""n"))
    . q* f0 q/ d1 S

  101. 6 f0 r% c+ u3 Y( s2 c* N% M9 R
  102. (defun c:ps () (command "PSOUT" "CorelDraw-import-Photoshop" "W"))(princ);export the current view of a drawing as an EPS file
    5 V7 Q' o9 a3 U; E8 e7 {5 k. `

  103. # r  D1 Y. k7 @5 s
  104. ;free lisp by cadviet,cd2k44
    ; ]$ |0 g6 _  E6 h
  105. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830- p. R7 h' P% h% Z# ^
  106. (defun c:FTEXT (/ ent tstyle )
    # V, ]9 t3 A5 z& F8 y* l+ R
  107. (command "undo" "be")
    5 F, V) u. d& t" Y/ f
  108. (setq ent (entsel "\n Pick text :"))
    1 a7 X6 {4 k& S0 a( n( [
  109. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    , h6 i" \, o) v3 b. N% o. \7 a' X
  110. (command "STYLE" TSTYLE "romant.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    0 C9 y5 G2 \& m3 y
  111. (setvar "TEXTSTYLE" Tstyle)5 q. M. K( d0 j) a) s1 {/ Z
  112. (command "undo" "end")& c  I+ W, x$ P" X4 \# q
  113. )5 L( X' H- u# S9 ?; N* s
  114. ;Cam on cadviet nhieu 27-11-2023 04h15p36s (thanks cadviet)
    % P7 ^9 W. n1 y- ^: U

  115. + t) z& }7 y3 }3 J
  116. ;free lisp by cadviet,cd2k44+ J6 d5 a: C2 m" O: R
  117. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830+ Y8 q: d7 N; m, h( z: C; R
  118. (defun c:Fvnh (/ ent tstyle )
    # n+ l( Z3 y3 i8 z" s3 T
  119. (command "undo" "be"). n( Q  n. }; o8 n
  120. (setq ent (entsel "\n Pick text :"))! z8 K7 I+ o9 C- Z- d/ U  T
  121. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))+ y+ {% d% M1 ?. y) Q
  122. (command "STYLE" TSTYLE "vnhelvh.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    8 E& `6 ]4 m9 c4 u# O7 X
  123. (setvar "TEXTSTYLE" Tstyle)
    1 h  d2 W; H) t" p6 T7 j
  124. (command "undo" "end")
    $ G6 q1 I/ W6 S, g) C# E" H' Y
  125. )- B- Y  R4 j. M7 g

  126. + i3 ], A: O( x3 P% [
  127. ;free lisp by cadviet,cd2k44
    6 O" A0 E% c  D4 w# |
  128. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830( W& R0 q: ?  Z: S
  129. (defun c:Chbg (/ ent tstyle )
    6 o8 K* @+ u" {: L/ a; {4 n. Y
  130. (command "undo" "be")- Q, @' Y0 j- O. B: a
  131. (setq ent (entsel "\n Pick text :"))( F! b% d6 ]: m& y; P
  132. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    % d# K0 ^7 U$ W" }7 |5 ~9 I
  133. (command "STYLE" TSTYLE "chhbg.shx,vnh.shx" "0" "1" "0" "N" "N" "n")7 `. ^) I# _% Q. z
  134. (setvar "TEXTSTYLE" Tstyle)8 J* H. z0 k% ]/ z3 [: J
  135. (command "undo" "end")
    9 S/ _+ r; t" q6 O2 L; u( v2 j# I$ u
  136. )0 d- u$ {- U% \6 `

  137. ) c$ Z0 o3 W" J( Y; c+ n
  138. ;free lisp by cadviet,cd2k44
    3 V! m0 w+ x7 O# u3 w8 U
  139. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830- _: y. Z" O+ s- K
  140. (defun c:Chsm (/ ent tstyle )
    9 P. U: q" h5 U& x5 s2 W' E: x; Y
  141. (command "undo" "be")
    % g0 `( O! f# Q9 J- E
  142. (setq ent (entsel "\n Pick text :"))3 O8 _3 F0 F# k  R
  143. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))+ ?+ Y( V0 c. j5 \  v8 o
  144. (command "STYLE" TSTYLE "chhsml.shx,vnh.shx" "0" "1" "0" "N" "N" "n")+ H. B# z+ v; M: b7 S, s- \
  145. (setvar "TEXTSTYLE" Tstyle)
    ( R3 D- e6 y. B& X2 d1 x! _
  146. (command "undo" "end")& U/ x$ m+ U# b3 [( ]2 x
  147. )( \! i% L0 Y0 x" n: w. a

  148. 6 w& K$ {2 `3 P- O) M
  149. ;free lisp by cadviet,cd2k44
    6 ~, p5 ]& H& s3 M
  150. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    1 [/ p* Y3 T1 o8 r! t+ ?- D- F
  151. (defun c:Fttf (/ ent tstyle )
    0 I& C* T$ W* ~: V
  152. (command "undo" "be")" ?/ c$ Z: _; G' G/ p& ~1 d
  153. (setq ent (entsel "\n Pick text :"))3 f  R  _( {0 T- n6 R  U
  154. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))2 |' P- c3 S9 g& V) ~
  155. (command "STYLE" TSTYLE "verdana.ttf" "0" "1" "0" "N" "N" "n"), L4 V, ]6 C. N5 A) R
  156. (setvar "TEXTSTYLE" Tstyle)+ N* ~" `- j( i% P" C
  157. (command "undo" "end")3 T' `$ N* N" n( c+ P
  158. )& J$ }6 q, t* V2 h$ J

  159. 4 I6 X1 b1 s+ U& |  ~6 x
  160. ;;; ============================================. F" x' w& D  E2 g6 O
  161. ;;;
    0 D0 A4 V7 u: |* c
  162. ;;;   LISP Creater Tao Duong Dan AUTOCAD2000
    2 h; c2 R- F( o( ~
  163. ;;;
    ( O$ J, ^( W- c! L, f
  164. ;;; ============================================
    * b8 H6 Q8 Q! k! J& G: ]

  165. 1 e, L2 X" V; z0 ~) \6 B8 f
  166. ;;; ============================================
    ' o1 L' n# h9 S0 r7 h
  167. ;;;% c( [3 B! ?4 ?1 y. q* ~$ k  g7 H% `
  168. ;;;          CREATING FROM AUTOCAD20009 F! L$ n7 ^! y
  169. ;;;, }' a- K) c3 v- V8 k  z. V
  170. ;;; ============================================
    ) C" t& O6 Q; |/ \2 D* j+ t

  171. " i7 `6 I7 ~+ i' p7 `
  172. (setvar "INSUNITS"4)5 K* s* g1 I( k, M
  173. (setvar "ANGBASE"0)
    8 {% ?) n: b( e% e. Q( `' @6 I
  174. (setvar "ANGDIR"0)0 P8 H( H# G) v% Q% R
  175. (setvar "AUNITS"0)+ t& I2 m3 p. d  K
  176. (setvar "AUPREC"8)
    ! a: X3 b3 ]. l0 \
  177. (setvar "LUNITS"2)$ p6 j% o; ~, t. O5 w- j
  178. (setvar "LUPREC"8)( z4 W2 K, F; V; c; f/ z; i
  179. (setvar "ACADLSPASDOC"1)
    6 Y3 c. N0 G( A9 [
  180. (setvar "pickbox"5)
    3 s" j. W" P  P! c
  181. (setvar "blipmode"0)
    3 x5 v; ?" \1 y* o) t# f; g
  182. (setvar "mirrtext"0)
    ; B9 H) ]" c6 I9 d# w
  183. (setvar "cursorsize"100)& F8 [/ ]) Q: B8 ?9 K; R/ L$ o  M
  184. (setvar "ZOOMFACTOR"75)( i) \/ Y; ^1 B8 l, \0 h" p2 L
  185. (setvar "LTSCALE" 10): P2 e* }* J; J2 E& W# p3 [
  186. (setvar "lwunits"1)
    , U; g* H- Y) B
  187. (setvar "DIMBLK" "Closed"). i$ x: E8 l+ y
  188. (setvar "DIMGAP"0.0693)
    2 A/ D5 h& I; M0 o2 B' _, s
  189. (setvar "DIMASZ"0.20), j1 C% m" [/ z9 C( X; {4 b" a/ U
  190. (setvar "DIMCEN"0.2)$ g2 \- z) A/ [  v2 E/ Q/ K( G0 I
  191. (setvar "DIMDLI"0.1)
    $ E! H0 v" C: T( D; J* S
  192. (setvar "DIMEXE"0.0693)
    6 C: M7 Q0 {% F, w9 ]. o
  193. (setvar "DIMEXO"0.25)
    ( Y. l7 e$ `" H( l$ j
  194. (setvar "DIMDEC"0)- O" c1 F0 }5 u. ]
  195. (setvar "DIMTIX" 1)
    & ~: J6 k8 Z$ `& K& i  D
  196. (setvar "DIMTXT" 0.099)
    & x& J" m( ?4 x/ e$ h
  197. (setvar "DIMCLRT" 7)
    ( h+ D, X0 H" I- p
  198. (setvar "DIMTVP" 1)- s7 I5 |% F. A) M
  199. (setvar "DIMJUST" 0)
    ' l  |2 o% V- z: }
  200. (setvar "DIMTIH" 0)9 R! L9 b8 G; f' n9 }; v6 E0 W6 {
  201. (setvar "DIMTOFL" 1)
      G! z9 U' o- x" C5 X
  202. (setvar "DIMSCALE" 1111.1111)
    + y8 X5 K5 O, S: C1 }' J

  203. 5 Q& }( d8 o& p+ i6 i( x
  204. , I8 Y) k0 Z  S$ q

  205. 8 V: g9 n0 t8 w# H
  206. (defun c:zp ()  (command "'.zoom" "p"))  ?( J  }  _$ }6 H  c2 Z
  207. (defun c:zz ()  (command "'.zoom" "p"))
    & C9 V9 ]! e' X8 \
  208. (defun c:ze ()  (command "'.zoom" "e"))& m# |( L6 e* ~( j
  209. (defun c:za ()  (command "'.zoom" "a"))- R9 i9 V, p2 \( ^, |1 v4 A
  210. (defun c:zd ()  (command "'.zoom" "d"))/ j3 j+ k5 K+ y( Y" R& M1 ^; R
  211. (DEFUN C:ZZZ () (COMMAND "ZOOM" ".25X"))
    + G& u7 W. B3 i4 Z* h# |
  212. (DEFUN C:ZX  () (COMMAND "ZOOM" "2X"))( }  X0 ]5 }; m
  213. (defun c:de () (command "ddedit")(princ)). J. s4 B$ r! s( m: }
  214. (defun c:dda () (command "Dimaligned"))' ], @" U8 ]* z+ u0 H$ p
  215. (defun c:ddb () (command "Dimabaseline"))
    6 H( g% l4 R4 v9 D4 D
  216. (defun c:ddc () (command "Dimcontinue"))
      q+ y0 I4 U) J# e- b
  217. (defun c:dde () (command "Dimtedit"))
    3 C$ z) t* e9 G  N( X- z" M
  218. (defun c:ddf () (command "Ddattdef"))& R3 d2 x( J4 e, s9 _3 w0 L% Y
  219. (defun c:ddi () (command "Dimdiameter"))
    " P1 G: R0 p3 T' S6 C
  220. (defun c:ddl () (command "Dimlinear"))8 _) l: O  F8 {( ~, b. D
  221. (defun c:ddn () (command "Dimangular"))
    ; r* Q- {" o0 T$ i6 B' `* C3 _
  222. (defun c:ddo () (command "Dimordinate"))
    ' s9 J: @7 w. r3 g" n! Z
  223. (defun c:ddr () (command "Dimradius"))/ t. k4 `, B0 z3 A$ W: m* r
  224. (defun c:dds () (command "Dimstyle"))1 a# C/ X7 o  i
  225. % k, j' s) i0 J' _" m; F- J
  226. (defun c:DU () (command "dim1" "up" "select" "exit" pause ))(princ): e1 w3 Z! ~* K" K8 e
  227. (defun c:DH () (command "Dim1" "home" "select" "exit" pause))(princ): U+ H. ]  d0 W- r0 U+ v
  228. (defun c:UU () (command "dim1""update""all"))1 R8 g* _% ^1 i  p: s6 I
  229. (defun c:ded() (command "dim1""tedit")); d9 [: U( L, y5 m* v' I- g
  230. (defun c:da () (command "dim1""ali"))
    / b# t+ j: \1 E+ Z7 x
  231. (defun c:dll() (command "dim1""l"))2 b  j3 q7 ?7 M6 V+ Q6 L
  232. (defun c:dan() (command "dim1""an")): v1 ~: d, `4 K
  233. (defun c:d1 () (command "dim1""ra"))/ D9 d3 p0 G% l* u% r3 o" Q
  234. (defun c:n  () (command "dim1""new"))' V" p4 I( V6 n/ h, o7 a
  235. / E; f' M" O% R3 _
  236. (DEFUN C:PE  () (COMMAND "PEDIT"))+ y$ t0 M% M! v; S# o6 E1 T- C3 X
  237. (DEFUN C:PL  () (COMMAND "PLINE"))$ t$ q; l" a5 k; D  U7 P
  238. (defun c:dd () (command "dist")(princ))2 o+ d6 U3 u- m1 E. L
  239. (defun c:w () (command "pedit" pause "w" "au")(princ))* J3 E4 g; j2 I( }) N) j! _' w
  240. (defun c:pg  () (command "polygon" "polygon"))
    # U7 P! |2 X$ H, ^# z
  241. (defun c:el  () (command "ellipse"))
    ! G$ D) d5 u1 C9 }( B
  242. (defun c:xe  () (command "explode"))
    3 I  E; c5 A" w2 [
  243. (defun c:eex  () (command "extrude"))4 n, m' \2 ?) j: t! {5 `
  244. (defun c:xg  () (command "xline""a"))2 k' e9 D, y& Z* y: _" B
  245. (defun c:xh  () (command "xline""h"))' Y6 T  [  `) e5 H4 L: l: @. m! l
  246. (defun c:xv  () (command "xline""v")); n0 V( A/ r/ ~# E7 Y
  247. 6 O4 O& u. T" n, X/ P6 Z5 x5 o
  248. (defun c:oc () (command "osnap""cen"))3 w. I6 a( \/ l( n$ M5 t5 b8 |
  249. (defun c:od () (command "osnap""nod"))
    - I. G3 x! p0 i) T
  250. (defun c:oe () (command "osnap""end")). P: A3 X5 Y' @) C; F; T
  251. (defun c:oi () (command "osnap""int"))
    ' K7 S5 W. [$ \7 e8 E5 G
  252. (defun c:or () (command "osnap""per"))% B. E8 H- I* |# ~: \: s8 `
  253. (defun c:on () (command "osnap""none"))
    1 P6 A: Z2 D( k7 E
  254. (defun c:oq () (command "osnap""qua")): h+ `, p6 ~4 Q) t
  255. (defun c:om () (command "osnap""mid"))$ A" e3 ~& ^( a
  256. (defun c:ot () (command "osnap""tan"))
    + @5 [+ M  e, ?9 d/ L2 D$ z
  257. (defun c:oin () (command "osnap""ins"))
    : A/ M6 ?$ `, g
  258. (defun c:oa () (command "osnap""nea")), Y) |$ s9 e# t1 d' r' c! o6 c* D
  259. (defun c:ol () (command "osnap" "End,Mid,Cen,Node,Nea,Int,Perp,Qua")(princ))
    9 s9 \- T: j& z/ O
  260. ;(defun c:du () (command "dim1" "up" "s" "pick" "other"))# {) j; V5 z9 V! M& c0 T
  261. ;(defun c:nn () (command "new" "y" ))7 j: |0 x0 N) C( t. ?: i1 z
  262. & f$ D" B* l8 \  b4 c# X. ?7 e( q
  263. (defun c:/ () (command "limits"))' f/ ?  Z4 _! H7 [
  264. (defun c:`1 () (command "region"))
    # u! Q; j$ r6 P* F
  265. (defun c:`2 () (command "subtract"))) B1 d' f! ?. j1 N4 _8 W
  266. (defun c:`3 () (command "union"))
    $ V5 `* s+ X" x
  267. (defun c:`4 () (command "intersect"))
    8 o% S* a$ q' h" a
  268. (defun c:`c () (command "cal"))8 ]  g2 x2 r+ _+ J) b; Y
  269. (defun c:`g () (command "Polygon"))0 ~- w# S7 ^7 N2 |" Q
  270. : i1 ]5 j$ A9 m$ h0 X+ J, b1 A
  271. (defun c:lmi() (command "LIMMAX" pause "" "zoom" "all" )(princ))
    & U9 o* v; @7 @
  272. (defun c:drt () (command "DRAWORDERCTL" pause "Integer" "" "" )(princ))
    8 [. P+ e3 ]7 c9 C. b; h  C) F
  273. (defun c:ip () (ssget) (command "print,_plot" ))(princ)
    7 U. R; d) a# o4 q* z( F: @2 {8 b

  274. ; r$ ^+ O- W& }
  275. (defun c:ddm () (command "ddlmodes" pause)): X' a* p# C, @' d: S# L5 M

  276. 6 D- \4 p: M1 r) |. O. h  ^
  277. (defun c:sha () (command "shade" pause))
    ' o8 C$ F. Q! K' u, p

  278. + e* o# u6 W; U5 J' l
  279. (defun c:sr1 () (command "surftab1" "p" "" pause))6 U# r# e/ P# ~+ V  ^- p
  280. (defun c:sr2 () (command "surftab2" "p" "" pause))
    . A$ I- t4 E$ l+ H

  281. 6 G6 n' a, b$ ?2 q
  282. (defun c:ad () (command "audit""y"))
    4 T9 }* C( e" O) ]
  283. (defun c:q () (command "quit"))/ e: ~& F  Z" T

  284. 7 |% J  D, ^7 l2 _
  285. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))2 p7 S0 R/ F# S5 e0 v( \  x
  286. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))
    8 `5 G- {! @# _; y, {
  287. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))
    % s0 q0 m7 ~  z0 {
  288. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))+ {/ f" `" ]+ \% T. O. f$ |0 `
  289. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))( @1 D* P/ E3 ]/ h9 I) W4 Q
  290. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60")). l7 `' n& \( M
  291. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))
      @, m- x. a7 G5 v" e
  292. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    0 h& k% Y: W7 y# k
  293. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))" P" ]& w/ @- u1 x2 x% U' b5 R
  294. ! {) O* k- G5 [/ ~# w8 e* ]
  295. (defun c:u3 () (command "ucs""3"))
    9 b) E. c! M3 U
  296. (defun c:ue () (command "ucs""o""end"))
    9 m9 H& A8 i" J; e% A4 S  Z
  297. (defun c:ui () (command "ucs""o""int"))
    ) X' R" C2 g5 N& }1 n9 _. v
  298. (defun c:um () (command "ucs""o""mid"))
    : ~5 L# l& g- {9 q4 n
  299. (defun c:uc () (command "ucs""o""cen"))7 F. G- W( s/ T% K( Y. i6 \3 b/ Y
  300. (defun c:uq () (command "ucs""o""qua"))' X& J4 `* U. X! L6 A" x" w8 ~
  301. (defun c:3s () (command "ucs""3"))3 P0 }# |; d- K6 J+ j; Z
  302. (defun c:sx () (command "ucs""s"))' f+ z6 c) M; T( J
  303. (defun c:sf () (command "ucs""o"))
    8 o4 Y, ]4 y* u7 r. p- H$ e/ L6 O
  304. (defun c:sz () (command "ucs""p"))/ O  b& Z2 A! |
  305. (defun c:sr () (command "ucs""r"))
    ' ~  b9 \2 B  G$ U  P& t. E
  306. (defun c:sw () (command "ucs""w"))
    # ~: F0 w- I% a* t
  307. (defun c:fv () (command "ucs""v"))8 M9 B' I, N/ {4 }$ b
  308. (defun c:ux () (command "ucs""x"))  ~6 U7 s6 \2 H' l  j4 r1 n
  309. (defun c:uux () (command "ucs""x""90"))2 m1 I* u# X0 F$ A8 b9 w. r. w
  310. (defun c:xxu () (command "ucs""x""-90"))- _& E" V7 L7 n1 k* Z
  311. (defun c:uy () (command "ucs""y"))8 w( M9 `- B4 D/ e- r& _( W
  312. (defun c:uuy () (command "ucs""y""90")). z7 y9 B7 f6 [1 A7 N
  313. (defun c:yyu () (command "ucs""y""-90"))6 Q# o* ?& N4 S: d
  314. (defun c:uz () (command "ucs""z"))& d2 }$ N5 Q7 i' b4 D* \
  315. (defun c:uuz () (command "ucs""z""90"))7 u1 n) B) k. _# S, D
  316. (defun c:zzu () (command "ucs""z""-90"))& |4 w, {4 \  d$ V
  317. (defun c:uci () (command "ucsicon" "Properties" ))(princ)/ y8 x3 _6 \& n. n
  318. (defun c:ucm () (command "ucsman" ))(princ)
    $ p% c4 m; E$ n5 U
  319. $ t* l# k  r% c- C8 o& u5 w$ L8 Z
  320. (defun c:sa () (command "vpoint""_non""-1,-1,1")): F# H5 [; @! u' H. n4 W. s) H
  321. (defun c:sd () (command "vpoint""_non""1,-1,1"))0 y& e! X3 T4 R) F& @- A% i
  322. (defun c:se () (command "vpoint""_non""1,1,1"))
    - Q+ R1 y  `7 ^) {0 P
  323. (defun c:sq () (command "vpoint""_non""-1,1,1"))
    7 x: N4 T; ?% Y, o8 ~3 T% C
  324. (defun c:vc () (command "plan"""))
    # I5 J' e* @: _$ g
  325. (defun c:vd () (command "dview""all"))
    * [) a) ?5 M! R' A& ?+ k: {$ |

  326. ' {3 c. ~5 S; c! F; E
  327. (defun c:TT0 () (command "tilemode""0"))
    " w3 t# A' \' @* V5 e
  328. (defun c:TT1 () (command "tilemode""1"))4 P- |# v; A9 E) Z3 C7 x7 L7 [

  329. ) q4 u2 y6 v) D
  330. (defun c:vt () (command "vpoint""_non""0,0,1"))
    ' Z' l+ ?/ K9 o2 D
  331. (defun c:vb () (command "vpoint""_non""0,0,-1")); B1 B" ]9 }3 _" T7 R
  332. (defun c:vl () (command "vpoint""_non""-1,0,0"))
      Z+ f7 p6 U; [/ d0 H
  333. (defun c:vr () (command "vpoint""_non""1,0,0"))
    2 G3 a$ l4 u+ ~1 R8 o
  334. (defun c:vf () (command "vpoint""_non""0,-1,0"))
    & u6 Y# s! \3 d1 a6 x
  335. (defun c:vk () (command "vpoint""_non""0,1,0"))! m* n9 H2 ]/ W3 S" O

  336. ! l6 X+ P& {/ i4 [" S
  337. (DEFUN C:MM  () (COMMAND "MIRROR"))
    % Y: E2 d5 i# C$ }$ C
  338. (DEFUN C:MP  () (COMMAND "MOVE" "P"))& r$ r6 u4 u4 t. h, d+ W

  339. ! B8 i/ f# {1 K5 S& O& a
  340. (defun c:mee (/ a)$ }  d! M, K) T8 c  L4 J+ k/ \$ P
  341.   (setq a (ssget))(command "move"a"""end"pause"end"))
    - [: A  S/ i  G* T* _8 z' d! ^
  342. (defun c:mc (/ a)
    - `7 ?* x% I) O; Q7 X  h
  343.   (setq a (ssget))(command "move"a"""cen"pause"cen"))
    ; ^3 p7 W+ l) U
  344. (defun c:cc (/ a)
    ) F( w1 j0 I; l1 L9 Y
  345.   (setq a (ssget))(command "copy"a"""m"))5 O3 h. O6 c6 x' K: }
  346. (defun c:ce (/ a)9 R0 ^/ Z+ a! A1 z' @! R$ y
  347.   (setq a (ssget))(command "copy"a"""m""end"pause"end"))
    0 x4 o6 ?  p) v5 g3 a) o0 j2 V
  348. (defun c:cn (/ a)4 [& q+ Y( @; ?9 w$ x4 K3 R* f# Q. K& x
  349.   (setq a (ssget))(command "copy"a"""m""cen"pause"cen"))6 f  @0 D, x2 a; q* i5 F8 j2 k
  350. (defun c:tl ()(command "trim""l"""))
    : e' P5 ]5 W6 C
  351. (defun c:tf (/ a)' V0 T: \! i* s9 F" B
  352. (setq a (ssget))(command "trim"a"""f"))
    + `$ A  M0 @; ^  i" z$ b) N" X
  353. (defun c:el ()(command "extend""l"""))
    ' ?5 D, M/ J; Y1 N3 Z6 _4 @
  354. (defun c:ef (/ a)9 \7 `3 @# a; I8 K% y  Y
  355.   (setq a (ssget))(command "extend"a"""f"))& j, J, V! q& q' d
  356. " J/ T9 Q$ q3 u
  357. 6 T7 H" R* Y" }: N
  358. (DEFUN C:110   ()(princ "\nChon doi tuong can offset ra 110.......") (COMMAND "offset" "110"))
    ; i4 B8 n9 T4 G& w! K5 c( @* Q
  359. (DEFUN C:220   ()(princ "\nChon doi tuong can offset ra 220.......")(COMMAND "offset" "220"))" T$ P- m) E: m& {* Z4 Y- s
  360. (DEFUN C:330   ()(princ "\nChon doi tuong can offset ra 330.......")(COMMAND "offset" "330"))  @6 W  H; f4 n
  361. (DEFUN C:400   ()(princ "\nChon doi tuong can offset ra 400.......")(COMMAND "offset" "400"))
    $ v7 J" i, r# ]! ]* Y. H9 @* [+ a; K
  362. (DEFUN C:55   ()(princ "\nChon doi tuong can offset ra 55.......") (COMMAND "offset" "55"))
    9 L: U6 g8 [) m% ]
  363. (DEFUN C:600   ()(princ "\nChon doi tuong can offset ra 600.......") (COMMAND "offset" "600"))
    ; s# W" |6 s. H. @, P% S' {" y
  364. (DEFUN C:700   ()(princ "\nChon doi tuong can offset ra 700.......") (COMMAND "offset" "700"))
    " _9 U8 q: D: M" H
  365. (DEFUN C:800   ()(princ "\nChon doi tuong can offset ra 800.......") (COMMAND "offset" "800"))8 L, M8 P1 @0 T3 V- J
  366. (DEFUN C:900   ()(princ "\nChon doi tuong can offset ra 900.......") (COMMAND "offset" "900"))
    4 `* {! T  _% _0 {3 \4 X
  367. (DEFUN C:1200   ()(princ "\nChon doi tuong can offset ra 1200.......") (COMMAND "offset" "1200"))
    : V9 z" {/ o; G6 `  L: Y9 @
  368. (DEFUN C:1500   ()(princ "\nChon doi tuong can offset ra 1500.......") (COMMAND "offset" "1500")), a6 i+ i, @8 e7 e: |0 J1 g4 _
  369. (DEFUN C:1800   ()(princ "\nChon doi tuong can offset ra 1800.......") (COMMAND "offset" "1800"))
    $ \* D; w5 }0 Y" @
  370. (DEFUN C:2400   ()(princ "\nChon doi tuong can offset ra 2400.......") (COMMAND "offset" "2400"))9 Q& I, S5 k- @6 t
  371. (DEFUN C:3000   ()(princ "\nChon doi tuong can offset ra 3000.......") (COMMAND "offset" "3000"))/ y0 [5 p0 Z3 r, W. L
  372. (DEFUN C:3600   ()(princ "\nChon doi tuong can offset ra 3600.......") (COMMAND "offset" "3600"))
    6 c% R: ]% R7 T8 X3 p
  373. (DEFUN C:4200   ()(princ "\nChon doi tuong can offset ra 4200.......") (COMMAND "offset" "4200"))
    7 d# `$ m3 P6 m$ h/ M
  374. (DEFUN C:5000   ()(princ "\nChon doi tuong can offset ra 5000.......") (COMMAND "offset" "5000"))3 ]. R5 g  G0 w

  375. 5 ]; N! O/ J  V% s
  376. (defun c:mla () (command "-mledit""av")): O& T5 i8 v  t& `* Z3 w
  377. (defun c:mlc () (command "-mledit""mc"))
    - J+ `  {. M( O0 i# T! d3 u7 ~
  378. (defun c:mld () (command "-mledit""dv"))+ `) g& X) O5 Q0 {
  379. (defun c:mle () (command "mline""end"pause"end"))! S2 B0 Y2 I$ ?
  380. (defun c:mli () (command "-mledit""ca""int"pause"int"))3 Q) a! L) R- G0 @
  381. (defun c:mlj () (command "-mledit""cj"))
    3 j$ U! I6 Y" _
  382. (defun c:mlt () (command "-mledit""mt"))' w. l. d# t: a3 |% y4 a
  383. (defun c:mlk () (command "-mledit""ca""end"pause"end")), z# {5 z) n" \# N: x
  384. (defun c:mlw () (command "-mledit""wa"))
    7 k( v6 D9 F; D5 P$ u: P; R

  385. 8 T! y2 ]% p* `/ r: {$ W
  386. (DEFUN C:DCA () (COMMAND "DVIEW" "all" "" "CA"))
    ( p9 j% H8 u2 h8 L8 c! s7 |' Z
  387. (DEFUN C:DPA () (COMMAND "DVIEW" "all" "" "PA"))
    / {# L7 }- i3 S- r7 X
  388. (DEFUN C:DPO () (COMMAND "DVIEW" "all" "" "PO"))
    , X6 c8 `+ F2 Q/ J0 ?% M+ P
  389. (DEFUN C:DDD () (COMMAND "DVIEW" "all" "" "D"))
    $ S0 o" n6 H/ z
  390. (DEFUN C:DZ  () (COMMAND "DVIEW" "all" "" "Z"))
    % \* H% B" Q1 M/ i: I5 N+ V- O
  391. 6 f, D" Y$ J6 y
  392. (defun c:p0 () (command "pline""""w""0""0"))& k# M' ?$ R6 o7 N" o- \) }$ R
  393. (defun c:ot  () (command "offset""t"))9 A' r+ [: d9 w, k
  394. (defun c:t  () (command "mtext"pause"j""bl""h"pause))
    8 N4 ?' @) e+ c& x. m! x
  395. (defun c:uo () (command "ucs""ob"pause)): J0 ^: U$ P9 i" T8 f" N/ A0 j
  396. (defun c:f0 () (command "fillet""r""0"))
    ( ?1 M7 n5 u7 M; N* D& S
  397. (defun c:fr () (command "fillet""r")): Z, r  Q  {: @! W9 l! a8 v& [

  398. % m7 l9 Y& A0 \( F6 Y8 j2 ?' W& {) O
  399. ;CHAMFER
    3 x% @# |- h' }" V2 i: S
  400. (defun c:cf () (command "chamfer"))1 @7 P4 [; j& u. P! t0 a" T
  401. (defun c:cfd () (command "chamfer" "d"))
    9 ^. O  c0 t$ z; u- U& ~2 S
  402. (defun c:cf0 () (command "chamfer" "d" "0" ""))
    8 ?" y2 ^( F3 J
  403. ! C4 k( C( d& k7 D
  404. ;FILLET# R1 B& c3 e& x7 D- S) r
  405. (defun c:f () (command "fillet"))* R! @7 c8 K% G& H3 |/ W
  406. (defun c:fr () (command "fillet" "r"))
    : S' ]8 e( N# l" j& z$ v& U
  407. (defun c:f0 () (command "fillet" "r" "0"))9 i. A+ M: n% w& R2 W: }8 I+ r
  408. 6 ^7 q! |9 I: {$ }. k$ I& ^
  409. (defun c:OO  () (command "oops"))+ n0 q! p& w$ |% @: M6 a
  410. (defun c:dln  () (command "dimlinear"))2 T- [, V# ~0 W, V/ _; c- I
  411. (defun c:dan  () (command "dimaligned"))
    3 G, G/ T" E( O* j0 u/ R5 v  _: B9 H
  412. (defun c:ddc  () (command "dimcontinue"))0 v# C7 ]: Q  V8 I

  413. , V# O& W; k" D' H8 A3 Q
  414. (defun c:sc () (command "scale" "auto"))  i6 M) _* _9 s2 p5 i1 w. I! L
  415. (DEFUN C:XO  () (COMMAND "snapang")). A; ^- O3 v/ \. ^' A. k, H
  416. (defun c:cc (/ a)2 G+ T/ }+ z/ X, i8 A; I2 y8 |
  417.   (setq a (ssget))(command "copy"a"""m"))
    ; ~9 \9 R1 ~' x/ A

  418. . L  _# ?$ p/ g2 [  @" j+ B1 y- x
  419. (defun c:PJ (/ a)
      G6 R5 C6 ?2 P3 T1 q
  420.   (setq a (ssget))(command "pedit"a"""j""all""y"))
    ) P) K- {6 V' P7 s9 O! j
  421. (defun c:JJ (/ a)' ]0 F+ M6 O* {& L! k
  422.   (setq a (ssget))(command "pedit"a"""j""y"))
    4 e2 E8 h) X- Q  S
  423. (defun c:TN (/ a)
    $ m# H; d2 R5 M
  424.   (setq a (ssget))(command "change"a"""p""T"))2 m! \+ z8 }9 |& U; D. e2 |; M) i
  425. " D) `6 g0 t/ M- O+ E. w2 s2 Y
  426. ' z: ]- d! E6 m. D' G
  427. ;=======================Tran Ngoc Thang - Tu nam 2000 - Hoc nam cuoi KTS . DHXD=========================- ]/ `6 t- [  |" X% B

  428. * W$ a" w1 u+ V7 P- R+ T
  429. (defun C:IB ()(setvar"cmdecho"1)9 k3 Q0 P# f- W/ e) y; t: x3 B
  430.   (setq pt(cadr(entsel"\nSelect Block:")))1 u2 _9 |$ P& B8 M1 S
  431.   (setq e1(ssget pt)) / i/ X# L6 Z- b3 ~
  432.   (setq e2 (entget (ssname e1 0)))# r' x) v+ N7 a4 h, Y  L: t
  433.   (setq blname (cdr(assoc 2 e2)))
    # h+ V9 h* z+ u5 R0 D
  434.   (setq oer *error* *error* err2)(command ".insert" blname))
    4 Z* J6 ~' c) `* T  K2 S
  435. / O2 j+ z& C& R/ z* f
  436. (defun c:II ()
    ! t4 m# C  ]) `3 Z) n: q5 w$ l! ?4 L- J
  437.     (setvar "cmdecho" 0)$ F1 q- l% a6 j  j- D
  438.     (setq olderr *error* *error* myerror)
    : S- ^& Q* }* z. G# @
  439.     (prompt "\nSelect objects: ")
    / j, `$ G# C3 C  K% C% x
  440.     (command "select" "au" pause). Z# [+ O4 r0 `1 k2 ^
  441.     (setq sstxt (ssget "p")9 p4 c& N6 |8 K( V6 [. \5 d: Z
  442.           sslen (sslength sstxt)# B' s: l9 {  [* n
  443.           ctr 09 h$ s. v% @, V% T' b
  444.     )
    4 Q  Y3 n- A9 g9 q
  445.     (command ".undo" "mark"), `6 |! T+ Y1 P- e
  446.     (while (< ctr sslen)2 ^  P1 h; |; ]3 R2 e% I1 C
  447.            (setq listxt (entget (ssname sstxt ctr))* A& }: c  T' u2 a3 X$ C
  448.                  txttxt (cdr (assoc 1 listxt))
    , P/ V; a4 q* X; j+ ?. }  z
  449.                  enttxt (cdr (assoc 0 listxt))3 h! G4 S" F6 X% c: @" O
  450.            )
    ( f* O/ w# ^7 A; Z
  451.            (if (= enttxt "TEXT")7 S) J  E- w0 a* e/ v
  452.                (progn5 m, z# F* m8 i3 r3 d! D
  453.                    (setq testxt (substr txttxt 1 3))' }5 }$ r! b, t5 D" D4 a3 x. y* H
  454.                    (if (or (= testxt "%%C") (= testxt "%%C"))
    - v9 p. `5 o# y' @$ ^7 z
  455.                        (setq newtxt (substr txttxt 4))& Y3 k1 M3 }, @2 j
  456.                        (setq newtxt (strcat "%%C" txttxt))
    6 o+ w9 Z2 H1 S6 A
  457.                    )
    + v) ^5 d2 M( a+ }6 H" ?
  458.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    % M% n5 ?0 |0 k1 |! a. |
  459.                    (entmod listxt)
    : ]& V0 w  D! R# \
  460.                 ): ~, O$ h7 \+ p0 J1 s/ c
  461.             )
    2 H; `# e  M- |% o
  462.             (setq ctr (1+ ctr))
    6 c4 o1 y9 \/ N
  463.     )! }+ {. j- F) q% ~* l; ?, g9 j' [
  464.     (setq *error* olderr)  U! L( m/ l& d8 }! W
  465.     (setvar "cmdecho" 1). E  H! \, }# u+ u
  466.     (princ). T  H. U8 W! _6 N! h( i
  467. )( J# R0 Q$ m: I; w' a

  468. ! @1 n* M8 X, i8 Z- \6 M2 H
  469. (defun c:DG ()
    ( ?* w: F! R4 G, ]
  470.     (setvar "cmdecho" 0)
    5 |, _8 o: c0 F) q9 O
  471.     (setq olderr *error* *error* myerror)
    # P  A. g/ S4 |1 ~
  472.     (prompt "\nSelect objects: ")
    * _- {3 _( r, B+ `! e. I' o
  473.     (command "select" "au" pause)
    5 \* D$ J/ {: |. s5 R3 Q
  474.     (setq sstxt (ssget "p")
    4 B2 N* e5 M6 O6 h
  475.           sslen (sslength sstxt)8 m/ F0 E9 I( V8 M; [# x2 y
  476.           ctr 0
    2 f" g" T! L# t. ~$ W2 K9 p1 @( M
  477.     )
    & m2 A7 v4 T2 F' h8 j8 Q: Q  F
  478.     (command ".undo" "mark")7 P, l  E: ~3 q5 Q+ r" _
  479.     (while (< ctr sslen)
    . Z$ a9 v8 N6 `& r% }/ \( y/ [! t
  480.            (setq listxt (entget (ssname sstxt ctr))# P* R. R1 H9 X. \  Q9 p
  481.                  txttxt (cdr (assoc 1 listxt))* Y2 t0 u3 e4 Z6 ?& g
  482.                  enttxt (cdr (assoc 0 listxt))
    ) i/ Y2 F- G/ X5 u  T' T
  483.            )
    ( l7 p# S) v6 K! }7 ^
  484.            (if (= enttxt "TEXT")
    9 x! X0 V+ e/ y- Z* b9 [: \
  485.                (progn
    / Y  |; M( M+ _. F5 j/ n/ {
  486.                    (setq testxt (substr txttxt 1 3))
    3 U& L9 A4 s1 j
  487.                    (if (or (= testxt "%%d") (= testxt "%%d"))
    - t# \: w8 \8 ?' m' o& }, |7 w
  488.                        (setq newtxt (substr txttxt 4)). U, t/ K8 w5 H
  489.                        (setq newtxt (strcat txttxt "%%dC" ))
    6 z2 N5 G2 i  k
  490.                    )( s# q( q% g' y4 G
  491.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt)); C, W$ `& ~, h; I! c, W5 ~0 a" h& C
  492.                    (entmod listxt)
    : U( g$ _8 P' _
  493.                 )
    + Q, j6 K, Y; u9 `
  494.             )
    6 ~4 T& n% x, v5 B; a
  495.             (setq ctr (1+ ctr))
    0 `9 w. _4 j7 Q
  496.     )
    , {2 b# E, |% X4 }9 x
  497.     (setq *error* olderr)
    # R1 E3 ^9 ~2 _) c" M* Y- |" H  o
  498.     (setvar "cmdecho" 1)
    7 N  y5 w+ H: w( X/ ?' N
  499.     (princ)2 W* e! _* w: P
  500. )
    ) W: i0 t+ R" O9 f5 X: T' [
  501. ! j; x+ T' t5 t
  502. (defun c:PI ()6 z! r- M; R8 r4 h6 y1 O6 G
  503.     (setvar "cmdecho" 0)
    3 S- g, E' J( Y7 |+ h8 U* F
  504.     (setq olderr *error* *error* myerror)
    + z$ P, c6 _, G9 T
  505.     (prompt "\nSelect objects: ")( J( y3 C: n7 P9 M
  506.     (command "select" "au" pause)
    0 _0 K- T8 ]# N
  507.     (setq sstxt (ssget "p"), y2 L9 s% m! S3 U5 x4 F  P9 _
  508.           sslen (sslength sstxt)5 q. c0 H- o/ }5 H- t# x
  509.           ctr 06 R* X1 T; o6 E9 B  R
  510.     ): I9 \6 U( z6 q; j0 v- g. K' _; ^
  511.     (command ".undo" "mark")6 m' g) Y* P" f
  512.     (while (< ctr sslen)% h/ z* [" L) J3 u/ u
  513.            (setq listxt (entget (ssname sstxt ctr))
    7 p& L/ X8 F% e
  514.                  txttxt (cdr (assoc 1 listxt))
    4 T+ c- a, Y( f8 l
  515.                  enttxt (cdr (assoc 0 listxt))
    / ~$ o# X" S3 C' b- P' K% ^
  516.            )
    4 F* F( v( J2 T' ~/ }" H
  517.            (if (= enttxt "TEXT")* ]! E1 b7 J$ H6 K  b7 E
  518.                (progn6 j3 o: `" M$ z: o
  519.                    (setq testxt (substr txttxt 1 3))
    ( p' T+ ^0 [4 v: A! ?0 a
  520.                    (if (or (= testxt "%%p") (= testxt "%%p"))( x- ^6 x: M' C% c+ l# A
  521.                        (setq newtxt (substr txttxt 4))" c: @4 E3 o1 d0 m
  522.                        (setq newtxt (strcat "%%p" txttxt))( R$ ]- _  _: K2 _; j
  523.                    )/ A" l( o# o4 L
  524.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))4 i$ D. f# k5 M) W( g( J
  525.                    (entmod listxt)
    * ~" u: G, P/ S/ C$ }: z
  526.                 )
    / ]& l% K6 |) W( P' s6 f+ I8 s
  527.             )
    + T$ @2 }  _% h# E" G$ N0 q6 _
  528.             (setq ctr (1+ ctr))
    " \6 \. d- Q8 N1 k/ `* C
  529.     )
    ' Z" q" r: {5 c! [5 ]
  530.     (setq *error* olderr)+ F" k5 t" H5 M6 c
  531.     (setvar "cmdecho" 1)
    1 r: I! D: _, ?; R( `( K
  532.     (princ)
    2 U1 ^7 x. G% u, o5 c; b
  533. ). q4 d- R* W4 d

  534. & M( P! s5 {' n
  535. (Defun c:CB (/ a). R) C* @/ T/ ?9 Q5 }2 I
  536.    (setq olderr *error* *error* myerror)3 }) M2 V$ g1 R. N5 z% j
  537.    (setq ocmd (getvar "cmdecho"))
    8 p0 I9 Y' K2 `" e9 C
  538.    (setq oblp (getvar "blipmode"))
    $ M, w: g- _! i9 W
  539.    (setvar "cmdecho" 0)
    & p' C  x+ \$ `% D
  540.    (setq a (ssget))
    $ y- |7 M$ q7 b1 e2 N
  541.    (command "CHPROP" a "" "C" "bylayer" "")
    & p$ f! f& h( h, u- |7 ?( `
  542.    (setvar "cmdecho" ocmd)
    * u. w5 a1 p2 F8 m+ H
  543.    (setvar "blipmode" oblp)  O$ w" C- j( k  F
  544.    (setq *error* olderr)5 ~5 c: \" B9 Y7 x- r7 s  l0 w
  545.    (princ)
    3 b! t+ E5 Y( r1 T1 h
  546. )% J! `/ _+ o0 I
  547. ; a7 m& |( w/ L  J$ {+ ?/ ~4 ~5 h5 k
  548. (defun c:LCC (/ co43 obj23 la23)
    7 g" d" u0 ], m" V4 S. t4 q
  549.    (setvar "cmdecho" 0)
    & \7 S& e! h7 r, D# @. P4 c% u! U
  550.    (setq co43 (getstring "\nNew color : "))( X* A" W/ @# e
  551.    (setq obj23 (car (entsel "\nPick object on desired layer: ")))
    $ V1 R7 W% t% y. I- _+ B9 e
  552.    (if obj23 (progn$ ^6 V! T5 @1 j
  553.              (setq obj23 (entget obj23))
    6 ?% y% ], `; g2 g
  554.              (setq la23 (cdr (assoc 8 obj23)))
    ; R5 P) Q  o/ W( M7 l
  555.              (command "layer" "c" co43 la23 "")
    , `( A3 o* Y/ P+ f  P  f9 i
  556.           )- t3 \7 w8 y1 f* O, J8 p4 ?  L
  557.     )
    / v2 F( B0 g8 c! A' S2 r
  558.    (prompt (strcat  "\nLayer has changed..." la23))# G# g9 z5 X0 Z3 v
  559.    (setvar "cmdecho" 1)
    : I8 x) B; Q# S' {. b: J7 u: n2 h
  560.    (princ)* e) Z2 T' a. p
  561. )  + L/ e3 ]) Z  V2 K: b' N
  562. , J+ w8 d  C8 C, t3 I- r  w
  563. (Defun c:RP (/ a)
    1 u1 Y3 ]% x& \" O0 x0 z
  564.    (setq olderr *error* *error* myerror)4 y4 T* `) c4 a" J; G) M* _% g
  565.    (setq ocmd (getvar "cmdecho"))( B* G% B; f2 S% Q# |$ [( b$ e- b+ t. ?
  566.    (setq oblp (getvar "blipmode"))
    ) ?# K0 |. L% H
  567.    (setvar "cmdecho" 0). I5 \3 ^) U+ ]
  568.    (prompt (strcat "\nUSE: Delete object(s) belonging to"
    * d  I; k5 k" K
  569.                    " the layer of the entity picked...!"))* ?9 ^' H0 f" ?- J" j
  570.    (setq a (entsel "\nPick the entity with the desired layer to delete: "))
      J) l4 {4 z6 o% S( }" W6 x, ~' `6 g
  571.    (if (/= a nil)
    ! D7 y2 ?2 R3 m8 M6 Z$ A
  572.       (progn (setq a (cdr (assoc 8 (entget (car a )))))
      n: h. t9 B% n0 f
  573.       (command "Erase" (ssget "x" (cons (cons 8 (eval a)) tempword)) ""))
    ( o8 Z  I# l$ d- H, C$ x! s
  574.       (prompt "\nNo entity selected!"))
    : L1 V% Q: g4 R1 C& K6 D3 v
  575.    (setvar "cmdecho" ocmd)
    % e. x8 A4 `: r1 B4 B
  576.    (setvar "blipmode" oblp)9 d: j8 U/ m7 j9 n- l
  577.    (setq *error* olderr)1 H9 ]+ v) h, J
  578.    (princ)
    + B$ R7 a2 j) n
  579. )! Z1 R8 M% I6 d9 ~# G

  580. 8 k$ O, ~! ?" q8 o2 L
  581. (DEFUN C:WL(/ SSET NET SSL M)4 Q; G/ Y# Q! ~7 e
  582.    (PRINC "\nSelect lines :")1 q9 a3 y; {( y- l
  583.    (SETQ SSET (SSGET))
    # F3 C) g/ i+ w% Q9 v3 [7 }
  584.    (IF (/= NIL SSET) (PROGN/ v& r1 z. p; x( E# b+ ?9 g
  585.    (SETQ SSL (SSLENGTH SSET))
    ( d3 M  s0 [. l' \, {4 V
  586.    (INITGET 4)
    8 G! a' W/ k$ C
  587.    (SETQ NET (GETREAL "New width : "))* i* V& O; w- k) _# ^) H! |. E3 q
  588.    (IF (/= NIL NET)8 Y4 s+ a" _" ?0 W' T& g- y
  589.     (WHILE (> SSL 0)
    9 T4 A+ O+ L3 R8 G" Z: |! c1 F
  590.       (SETQ M (SSNAME SSET (SETQ SSL (- SSL 1)) ))0 `. y& w4 O5 f7 q3 w
  591.       (IF (= (CDR (ASSOC '0 (ENTGET M))) "LINE") / s0 T1 |$ v) N  Q; q( X; r9 N4 U
  592.           (COMMAND "PEDIT" M "Y" "W" NET "")
    * p" U) o* o1 i7 P; ~0 t
  593.       ) ) z& e/ k- [" N/ m, Y- z. `
  594.     ) + o0 V( G2 a0 }) z) D
  595.    )))
    3 b) I: x6 D0 W$ d- L! c7 l6 T, z
  596.    (PRINC)
    " ]/ F5 v0 D' F  h
  597. )
    , w9 P, v) T5 ]1 @. i: }0 d

  598. , w* U2 X% @: k) Z
  599. (defun C:MML ()
    & V2 t  d; m3 @% G6 F* g2 }
  600.   (princ "\nSelect objects to move to another Layer.")* g! k+ k6 R3 P8 |
  601.   (setq ss (ssget))' t2 X  I; }8 C1 T# x3 k( R% R: o
  602.   (SETQ UL1(GETSTRING "\nLayer to move entities to : "))( k/ O1 m- I0 C! ?
  603.   (setq counter 0)
    . J  t/ A6 b( |8 U
  604.   (prompt "Moving to layer.....")(princ ul1)
    2 g3 e6 ~* x/ q+ L. k  g
  605.   (setq e (ssname ss counter))9 ?3 `5 m+ x) y. }* O
  606.   (setq l (cdr (assoc 8 (entget e))))
    0 [6 v5 ~# r$ w( R# C+ |
  607.   (setq S (ssget "X" (list (cons 8 l))))
    + M4 @2 v* m& |4 O; e* @
  608.   (command "CHANGE" ss "" "P" "LA" UL1 "")
    # H, V5 l! R* V# |+ _
  609.   (setq counter (+ counter 1)), `5 `4 p% t& v; S1 S& y2 b1 N
  610. (princ)5 l! H% k) W4 ]
  611. ) ' y: h( v: Q& N4 p0 G. }! h
  612. 4 E* R; L1 g* b; F
  613. ;;; ================================ GHI CHU ============================# ]0 _( Z: F2 e; ^6 `5 Q) A
  614. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    2 I6 E( ~2 M1 I8 c5 e; u/ l
  615. ;;; =======================Thuong Dung Font Romant.vnh===================9 H1 a% F9 W6 p+ A' z

  616. % S+ A* B; C' M0 x* i
  617. (defun c:RS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)! o: X3 j5 Y" N
  618.   (setq oer *error* *error* err2)
    - V5 D) @# ~; i* ], {9 k# `3 Q7 `
  619.   (PROMPT "\n(UNICODE-Verdana)(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. (M)aster Bedroom. ")
    9 C" p' P: P; e) K, g) U! M% M5 z# d! ?
  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)."))
    $ T# Y3 P* ^- H2 U7 }$ o' t' P
  621.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nha`  Bê´p")); n' p" W* Q; R
  622.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Pho`ng Vê? Sinh"))
    * P! }7 o* O  j
  623.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Pho`ng  Ho?p"))
    $ |( `: ?  ?: u# Z
  624.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Pho`ng La`m Viê?c"))
    ' g; ^+ ?0 l' G
  625.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Pho`ng Ngu?"))
    , H& d/ q( R0 Z, Q2 Z
  626.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Pho`ng Bê´p + An"))
    . H, k9 r4 s% H( q* v  U. N
  627.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nha`  Kho"))  c) s. h. l" Q
  628.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Pho`ng Ðê? Ðô`"))
    9 _( y1 }; F! h" ]8 r" V
  629. 2 }9 }- r5 p) n: F6 z( D; ]! E
  630.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))7 s; f% v: L9 \+ u+ S& V
  631.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))
    0 d- w6 H5 J1 f
  632.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))
    $ j. w( W( S$ ]- O; c; |; M: B
  633.   (IF(OR(= cpt "OW")(= cpt "ow"))(SETQ CPT ' "Phßng Lµm ViÖc"))- W; v' e8 m* R; b5 {
  634.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))1 I0 c" ~1 ]4 q  L( \. X+ g
  635.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))
    . h9 b  j9 T  H4 r
  636.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))* P( @/ k, F/ \# t7 n: c4 l/ P9 i
  637.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))
    % ?& W6 i) g( Q+ x

  638. 2 `0 Y' m8 k) u0 m2 A! D
  639.   (IF(OR(= Cpt "oK")(= cpt "ok"))(SETQ CPT '"NHA/F BE/M/SP"))" c- S( t6 e/ [7 f
  640.   (IF(OR(= cpt "oB")(= cpt "ob"))(SETQ CPT '"PHO/F/NG TA/W/SM"))2 u" \$ i( r8 ]1 b* v7 V9 {( T
  641.   (IF(OR(= cpt "oC")(= cpt "oc"))(SETQ CPT '"PHO/FNG HO/JP"))7 a* n6 g/ v+ c% ^2 f
  642.   (IF(OR(= cpt "oww")(= cpt "oww"))(SETQ CPT '"P.LA/FM VI/E/M/JC"))
    ; l7 i; H* S0 \% c7 X9 a- C4 O  @
  643.   (IF(OR(= cpt "oM")(= cpt "om"))(SETQ CPT '"PHO/FNG NGU/R"))" B4 Q- i7 _9 I2 S* E; p
  644.   (IF(OR(= cpt "oD")(= cpt "od"))(SETQ CPT '"PHO/FNG A/WN"))' v8 i2 a5 }& u  O. J5 x1 V
  645.   (IF(OR(= cpt "oS")(= cpt "os"))(SETQ CPT '"NHA/F KHO"))0 ^8 S$ U' H2 M: Z, U
  646.   (IF(OR(= cpt "oL")(= cpt "ol"))(SETQ CPT '"PHO/FNG /DO/M/F"))
    4 X# G+ n/ h( S& S+ n5 V/ n
  647. (setq pta (getpoint
      t* D( z: u& T5 e% P) c
  648.     "\nPick first corner. : "))) O: d8 G+ f  W1 |4 K
  649.   (setq ptb (getcorner pta
    & u# U1 ?) {5 S3 e  j5 [* j
  650.     "\nPick second corner. : "))7 l0 v9 x1 h4 v* c. T- s" P
  651.   (setq ptc (list (car ptb)(cadr pta)))
    5 t& N" r1 z, b( C6 c
  652.   (setq ptd (list (car pta)(cadr ptb)))9 b, p* ?$ s: n) A3 P
  653.   (setq ang (angle pta ptb))# ]1 n5 O- g: F/ m9 [
  654.   (setq d1 (/(distance pta ptb) 2))
    / O; L* p. o2 a+ W
  655.   (setq cp (polar pta (- ang (dtr 0)) d1))
    - v3 P7 Y1 P8 x7 N; o  b; H
  656.   (setq X (distance pta ptc))
    ' E* X# E6 P7 ^5 J& Z) ^$ o
  657.   (setq Y (distance pta ptd))8 h; x( ?+ J$ U/ m8 {/ S# V
  658.   (setq X1 (rtos x 2 1))3 g* K! T- }" ^+ p/ i* R
  659.   (setq Y1 (rtos y 2 1))( e  A/ L" o& u8 s
  660.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))
    5 L& D1 v$ s  p
  661.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))
    / K& n$ Z" L7 m9 J6 @
  662.   (defun dtr (angg)
    ' O. o0 z) X8 @. A7 V! O$ @
  663.   (* pi (/ angg 180.0)))
    % @/ ]5 h9 _' r
  664. 7 n4 r* v4 Y) E& m- j& M
  665. (defun c:WS (/ pta ptb rmsz pl1)% j: @" L. @1 i# `* n
  666.   (setq oer *error* *error* err2)
    0 j% M, N  d  }: d' y
  667.   (PROMPT "\n (RomanT.TXT)floorp(L)an.(E)levation.(S)ection.(M)planFoundation.(C)Found.(K).(P).")
    $ T+ Y( j1 u9 D) D" p2 }
  668.   (SETQ Cpt(GETSTRING "\n (VnHELVH.Vnh)(LL)floorplan.(EE)elevation.(SS)section.(BM)planFoundation.(CM)foundation.(KC)Structure.(PP)perspective."))$ g' Y, k4 g: ]# l. ]
  669. # u5 c# V7 V/ F3 s$ I
  670.   (IF(OR(= Cpt "LL")(= cpt "ll"))(SETQ CPT ' "MÆt B»ng TÇng 1 : TØ LÖ - 1:100")). y% h7 C, g1 z9 ?5 l) H
  671.   (IF(OR(= cpt "EE")(= cpt "ee"))(SETQ CPT ' "MÆt §øng Trôc ?-? : TØ LÖ - 1:100"))
      s  v7 E; R1 v" M# x6 `4 p
  672.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "MÆt C¾t A-A : TØ LÖ - 1:100"))
    - {- L  k0 ?7 J( g5 q' ]
  673.   (IF(OR(= cpt "BM")(= cpt "bm"))(SETQ CPT ' "MÆt B»ng Mãng : TØ LÖ - 1 : 100"))+ _. N) j1 Y" k
  674.   (IF(OR(= cpt "CM")(= cpt "cm"))(SETQ CPT ' "MÆt C¾t Mãng : TØ LÖ - 1 : 100"))
    2 j5 o7 n! @$ V6 |/ G
  675.   (IF(OR(= cpt "KC")(= cpt "kc"))(SETQ CPT ' "KÕt CÊu Khung Däc Nhµ : TØ LÖ - 1 : 100"))
    $ B+ ~# V, j$ o7 I
  676.   (IF(OR(= cpt "PP")(= cpt "pp"))(SETQ CPT ' "Phèi C¶nh Mét Gãc Nh×n")): E( x& A3 r3 A5 M  F4 C
  677. ' _, t9 \& `( d$ z9 `- N
  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"))
    - n+ }7 }2 v: `& P3 i
  679.   (IF(OR(= cpt "E")(= cpt "e"))(SETQ CPT '"MA/W/JT /D/}/SNG TRU/JC ?-? : TI/R LE/M/J - 1:100"))
    9 e6 Y5 ~) O, M
  680.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT '"MA/W/JT CA/W/ST A-A TI/R : LE/M/J - 1:100"))- ?4 A. v# f  @" s
  681.   (IF(OR(= Cpt "M")(= cpt "m"))(SETQ CPT '"MA/W/JT BA/W/FNG MO/SNG : TI/R LE/M/J - 1:100"))
    1 l( N. i2 s/ {& i/ R! i/ z) B
  682.   (IF(OR(= Cpt "C")(= cpt "c"))(SETQ CPT '"MA/W/JT CA/W/ST MO/SNG : TI/R LE/M/J - 1:100"))
    + f5 @0 {7 }" A& E1 d+ m/ T- V
  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"))
    / n9 f9 V5 |" ^6 U
  684.   (IF(OR(= cpt "P")(= cpt "p"))(SETQ CPT '"PHO/M/SI CA/R/NH MO/M/JT GO/SC NHI/FN"))' V! t, k' |0 R: K: W$ @
  685. (setq pta (getpoint
    5 u3 E. A, f4 W7 c$ j
  686.     "\nPick first corner. : "))8 I( K* ]) `4 N
  687.   (setq ptb (getcorner pta
    7 j3 t5 X2 M# S& Z
  688.     "\nPick second corner. : "))
    . Q- \  J( U9 u* h& Q
  689.   (setq ptc (list (car ptb)(cadr pta)))
    , n" l" U' A2 |& v$ j! [- F6 M3 H
  690.   (setq ptd (list (car pta)(cadr ptb)))
    7 B5 b) Q! y9 X9 v
  691.   (setq ang (angle pta ptb))1 V0 F. u% Q; A( b4 G( W
  692.   (setq d1 (/(distance pta ptb) 2))5 E# f. S; P- b, l+ C" g
  693.   (setq cp (polar pta (- ang (dtr 0)) d1))
    - O9 ~2 A9 e2 I0 }
  694.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz)). P4 l# s7 e# N
  695.   (defun dtr (angg)
    & v, D) h6 L+ L' o6 P; C
  696.   (* pi (/ angg 180.0)))
    6 q2 Y: i4 g  i9 }1 j( C
  697. 8 z& ?/ Y+ P% ~+ A0 h
  698. ;;; ================================ GHI CHU ============================
    3 t: r' j% Y% C6 e
  699. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    / S3 S, o$ }1 }5 P! H
  700. ;;; =======================Thuong Dung Font Romant.vnh===================5 a' l' A! l; H/ l6 o# r
  701. , k2 J1 Y  j. h6 a- M) I& ~4 c
  702. (defun c:RRS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)' S5 t% g# K, ]  H; @, D5 P
  703.   (setq oer *error* *error* err2)+ E' G$ }+ x2 e* a' X
  704.   (PROMPT "\n(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. ")
    9 w- _" v  R4 J1 ~. r
  705.   (SETQ Cpt(GETSTRING "\n(M)aster Bedroom. (DD). (SS). (LL). (CC). (OO). (KK). (BB). (MM). "))
    7 w9 Q6 f" O; D) }1 `5 B) q
  706.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nhà B?p"))5 R; k3 K( B* K1 M6 _  F
  707.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Phòng T?m"))
    . B/ p0 ^' V; f# w* T4 E
  708.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Nhà H?p"))
    4 \6 O& }  ?+ H9 B. T6 A' V3 }9 f
  709.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Phòng Làm Vi?c"))
    7 b8 ?* u& u8 ?- D
  710.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Phòng Ng?"))1 u4 {% w  r, N5 D
  711.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Phòng B?p-An"))* t" k4 g+ I% C" x
  712.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nhà Kho"))# N, N; x- X) x; X" N. O* p9 |
  713.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Phòng d? Ð?"))* I; X8 ?. b  q) U$ R. }
  714.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))
    , ~) @7 P: ~% `% n
  715.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))# l( N% o3 }% \1 s% f7 }' B4 I
  716.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))- u9 X; ]. N4 Y- {+ x: B! ~5 `
  717.   (IF(OR(= cpt "OO")(= cpt "oo"))(SETQ CPT ' "Phßng Lµm ViÖc"))
    ) T' t, }2 O8 @
  718.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))
    $ e# @' M% E3 m) \* e
  719.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))1 y" Y' p5 v3 c3 c
  720.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho")); n+ i! z7 o4 ]# O' A0 ]
  721.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å")) * V: p# l. S  u) z* q/ K
  722. (setq pta (getpoint
    ; |8 d5 v. }7 L
  723.     "\nPick first corner. : "))0 E7 @# B! }$ V0 D9 {. n+ P8 Y
  724.   (setq ptb (getcorner pta
    ( ]. Z; _$ D5 |7 z4 ?
  725.     "\nPick second corner. : "))+ P; j$ t' ]9 c3 A
  726.   (setq ptc (list (car ptb)(cadr pta))); P' L; U0 Q( [. K% j4 M8 x( E
  727.   (setq ptd (list (car pta)(cadr ptb)))# G5 h1 m) L; |5 k) E
  728.   (setq ang (angle pta ptb))
    % w  ~) h1 ]& v: ~
  729.   (setq d1 (/(distance pta ptb) 2))4 t/ a+ l/ Q6 d+ Q( m( z! }
  730.   (setq cp (polar pta (- ang (dtr 0)) d1))
    9 p! }* p4 O- {1 `" c2 G( `! d+ u2 c
  731.   (setq X (distance pta ptc))! }2 n. f* {6 `* O# Y4 O4 L: h
  732.   (setq Y (distance pta ptd))
    7 @! C% N9 b. {0 [& u* k; c" `
  733.   (setq X1 (rtos x 2 1))
    3 }! d$ L& g$ N; |  C# D
  734.   (setq Y1 (rtos y 2 1))
    % f: C" k  {4 J& P; o; {+ O8 v
  735.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))
    ; l6 W8 X) B/ ]
  736.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))( d' Z* ~% Y6 S! J  A0 I. W
  737.   (defun dtr (angg)1 E7 k+ Q$ b! s7 i. D) w
  738.   (* pi (/ angg 180.0)))4 r+ s, t; c* |  u

  739. ) b$ r( a* p: T. d1 N: z) w3 s
  740. ;;; ================================ GHI CHU ============================/ Y8 E; T4 a9 G, ^  j0 ?
  741. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    ! E% Q& W5 j" N& J
  742. ;;; =======================Thuong Dung Font Romant.vnh===================4 K, j# C. @. s8 S1 O

  743. + A- u9 p" g8 F' K- N
  744. (defun c:GS (/ a b c d)8 s! u, ^4 S/ p( t1 {4 B) H6 \
  745.   (graphscr)
    # F- K' W7 J7 [/ W
  746.   (prompt "\nSelect text to set style....")8 ^! u& f* z+ D1 R
  747.   (setq a (entsel))) J' }+ Z# y3 n' [4 }1 x/ K
  748.   (setq b (entget (car a)))
    . c! k& G; x: C3 `2 l  T  r
  749.   (setq c (cdr (assoc 7 b)))  A& d7 y9 ^4 a7 E8 B2 W* l* P
  750.   (setq d (cdr (assoc 40 b)))
    8 d& z7 e" R4 \2 `0 a
  751.   (command "style" c "" d "" "" "" ""))3 }" K6 g1 q, l( Y4 Q6 N' l: u
  752.   (princ "\nType GS to set text style.")
    & v, K1 I  \. a6 T: m

  753. ) @1 a6 u# a3 j
  754. (defun c:RC (/ olderr ocmd oblp pt1 pt2 pt3 pt4 l w)7 w: L* @+ o" Q: r# H
  755.   (setq olderr *error* *error* myerror)
    1 ^( W4 j# ^6 g2 u
  756.   (setq ocmd (getvar "cmdecho"))+ B# j5 d. }- w2 `+ s
  757.   (setq oblp (getvar "blipmode"))
    & `5 v" n& {' C# y" r
  758.   (setvar "cmdecho" 0)
    ) T! x6 b- W4 u9 R, H4 Q! e
  759.   (initget 1)                         ;3D point can't be null! }! g: A  Q& R) O* r  s, Q/ \
  760.   (Setq pt1 (getpoint (strcat "\nCorner of rectangle or square: ")))' |$ W! c, a7 z+ |) L! Z! V3 J3 U
  761.   (setvar "ORTHOMODE" 1)3 W$ a4 z* k2 M
  762.   (initget 7)                         ;Length can't be 0, neg, or null' q: t- R' Y2 A2 z# d
  763.   (Setq l (getdist pt1 "\nLength: "))
    3 C( o$ `/ ^0 r. f3 f1 j
  764.   (Setq pt2 (list (+ (car pt1) l) (cadr pt1) (caddr pt1)))- F1 y# R, R4 u7 _6 X+ V9 ^5 p/ m) N
  765.   (grdraw pt1 pt2 2)# _& g! k. Z8 }! G$ }
  766.   (initget 7 "Square")                ;Width can't be 0, neg, or null" d- |( D7 j0 @; C( D& K
  767.   (setq w (getdist pt1 "\nSquare/<Width>: "))( g9 D$ z4 U( J4 s1 S, P0 m
  768.   (if (= w "Square")
    ) k& H0 Z- l4 T4 `; ^
  769.       (setq w l)
    ( Q1 x8 D" u& \% L  G
  770.   )# S. M- T: M) a4 r
  771.   (setq pt3 (list (car pt2) (+ (cadr pt2) w) (caddr pt2)))$ x% R8 }, V" d! a! l5 ?
  772.   (setq pt4 (list (car pt1) (+ (cadr pt1) w) (caddr pt1))): Y. ]" D) k: q6 ^
  773.   (grdraw pt2 pt3 2)
    # r8 p4 G+ D! k( y+ C
  774.   (grdraw pt3 pt4 2). |1 L( J$ }8 V0 q
  775.   (grdraw pt4 pt1 2)# S. z3 ^5 {+ J( _% k3 I2 }. B
  776.   (setvar "ORTHOMODE" 0)
    9 r7 x4 O$ n- C, V# s
  777.   (command "pline"  pt1 pt2 pt3 pt4 "close")/ b1 H/ L4 Y9 y* ?9 H
  778.   (setvar "cmdecho" ocmd)
    0 z4 ]# W. Q7 i) k/ \
  779.   (setvar "blipmode" oblp)
    ; z! h# ?0 e( m9 b2 B  k' f, a. u
  780.   (setq *error* olderr)               ; Restore old *error* handler2 ]8 e& N6 p: }
  781.   (princ)- [+ l7 v. k- b2 k( e
  782. )
    3 I* l- y! j5 S" S1 p2 [0 U3 ]
  783. ' F& s. {" ]- W
  784. (defun c:SG (/ ent pt1 pt2 ang)! `. k8 w6 S0 Z$ r, P9 J  X
  785.   (setq cmd (getvar "cmdecho"))
    2 {% O* e$ s' ?
  786.   (setvar "cmdecho" 1)
    ) ?. }( K/ c  ]( B. ~9 z6 z8 @
  787.   (prompt (strcat"\nSnap angle will be set to angle of line"))
      \' d4 V; b* e7 n% A; c. o6 w
  788.   (setq ent (entget (car (entsel))))  ^3 {* b" N. H' f0 T! Z
  789.   (setq pt1 (cdr (assoc 10 ent)))
    ! A; H& s. Q( g" O) Y; @9 [# M
  790.   (setq pt2 (cdr (assoc 11 ent))); P$ z- w5 s4 A9 ], i
  791.   (setq ang (angle pt1 pt2)): _6 Y' y: }/ A6 M! `1 o
  792.   (setq ang (/ (* ang 180.0) pi))
    ' P& `. `% V/ G: U$ V( H; G
  793.   (setvar "cmdecho" 0)
      U( M  c' j! {6 s8 `% s0 v
  794.     (command "setvar" "snapang" ang)  ?& Y3 H4 m! o, H, d( ]5 t/ O5 E% u# ]
  795.     (setvar "cmdecho" cmd)8 C! E9 o4 N5 n  t5 C
  796. )6 h) X7 L- @2 m0 r( L$ r' N$ y  K
  797. * [+ g1 r7 v. N. O8 x  _9 M
  798. (defun C:TG ()+ N2 h5 R/ G  A1 y9 E& l
  799.   (initget "Increase New")) V6 ^! Q! ?' k, W/ G+ K+ Y
  800.   (setq ans (getkword "Increase/<New>: "))
    , {3 k2 R* d; y* S1 n) J
  801.   (modang): H3 o1 }3 L5 l& X8 N
  802. )5 T" E2 S0 Y4 B. k# r% e! X
  803. (defun modang (/ ang ss ca e na ssl)
    - B2 D, _! }0 |$ e2 v/ ]# T
  804. (if (= ans "Increase")
    / h4 o5 I$ n0 `  O
  805.      (princ "\nIncrease angle for text by: ")
    : d, z) \% ~$ S; W, {3 K" u) f
  806.      (princ "\nNew angle for text: "); R" [* ~" N6 v; `' R7 g- K
  807. )
    # a2 V, l  i/ M, x4 l
  808. (setq ang (getreal))' G3 ]& ~3 H0 a0 e+ \1 T
  809. (setq ang (* (/ ang 180) pi))
    6 h5 M$ W9 P! Z7 b7 I
  810. (setq ss (ssget))
    9 U" D% r( K1 D) W$ ~1 G! J9 ^
  811. (setq ca 0 ssl (sslength ss)). d) ~# \7 U( |& d8 {( x
  812. (while (< ca ssl)
    6 b5 u4 R, Z7 E2 Q4 N8 q+ C# h
  813.   (if (= "TEXT" (cdr (assoc 0 (setq e (entget (ssname ss ca))))))
    ! [1 T( ]% E0 v5 g5 C& S2 T& `
  814.    (progn8 U7 F% T+ z2 [* E
  815.     (if (= ans "Increase")7 T' L! a  l/ D7 F7 d* A
  816.         (setq na (cons 50 (+ (cdr (assoc 50 e)) ang))). m9 I/ T/ K- Z6 i( g! ], N- v
  817.         (setq na (cons 50 ang))
    * X0 o% W' ]2 P' w  D* K9 d  w
  818.     )7 D- Z; P5 v" e; U  o. ~
  819.     (setq e (subst na (assoc 50 e) e))$ P! T+ |, d: N6 g' S, ~3 _; C
  820.     (entmod e)/ w) E- n$ d' k/ h
  821.   (setq ca (1+ ca))
    & J; d+ l) W0 W5 h" H: p3 ]$ k
  822. )& j$ b5 X5 P! b
  823. )
    0 H, N/ K/ l: a% Z
  824. )2 q. z9 x" X% `; D$ B8 v3 R
  825. (terpri). c5 D  }$ x: O* j+ D5 b+ S
  826. )
    5 ]4 Q. y: A1 W* b

  827. 4 \  q  c+ S, @: E

  828. ! W: z1 t. W, t( B
  829. (defun c:WL ()
    ( Q# \  l! w; _8 E
  830.   (setvar "cmdecho" 0)9 ~3 b$ ]0 B$ M4 D; q1 H) a) i# F
  831.   (setq a 1): D2 m% ~% R3 u* X( r) L% J9 A
  832.   (prompt "\nSelect Polylines to change: "): z' ]' L! ?; }. f  Y
  833.   (while (/= a nil)7 w; r1 E3 Z: H6 u3 d" M
  834.     (progn( ]$ l5 Q, R" K, _7 ?
  835.     (setq a (entsel))6 U$ P4 P( `0 k  M# V
  836.     (if (/= a nil)
    ; }. y4 B5 y! J# e# P( G4 P
  837.         (progn
    9 N6 v, j+ C. x2 _2 i
  838.           (setq b (entget (car a)))8 F/ P# D, D+ z1 C# ]
  839.           (setq c (cdr (assoc 40 b)))
    ( ~. D- X0 M4 F3 B8 G* o" {7 T
  840.           (princ c), n+ _5 l( k, d6 [, i9 j* N# L
  841.           (command "pedit"a"w""lw""")0 B" |7 O6 ?+ n. {/ p: v5 U; M
  842.         ))))
    8 W; V, q5 N. E  A9 A
  843.   (princ)
    : i$ ~' w4 }0 n$ O8 q
  844. )4 [& {  F$ }- Z& ?8 Q
  845. # k. k  G# L2 \$ [; m- [! e2 R
  846. ;;; ================================ TEXT FIT ============================
    $ T! Y% F3 l+ T
  847. + Z9 D- b( g( {' b/ X# e: B
  848. (Defun c:FT ( )
    + k( t% G: G4 M- [2 e
  849.   (defun setsnapang (arg /) (setvar "snapang" (angtof (angtos (cdr (assoc 50 arg)) 0 8) 0 ))  )
    : ^" D. F% S) F, C% A
  850.   (Defun LL-xyz (arg) (CAR (TextBox arg))  )- \* m( a7 E+ {
  851.   (Defun UR-x (arg) (CAADR (TextBox arg))  )9 N( }! \/ a1 d' D9 a
  852.   (Defun LL-y (arg)     (CADAR (TextBox arg))  )9 Z6 ^' x5 m# K5 ?. }3 r' W# B7 T5 C0 n; r
  853.   (Defun LR-xy (arg)     (List (UR-x arg) (LL-y arg))  )
    % V& _. R' ~  H/ `/ ]
  854.    (Setq ename (CAR (EntSel "\nSelect Text to stretch/shrink:"   )  )
    . O0 k) @& `( }9 o* n; u
  855.       Textent (If ename (EntGet ename))   )   
    / T, Q; `1 ?6 m; I2 M, a
  856.    (If (= (CDR (Assoc 0 textent)) "TEXT")
    ( U6 M6 q" x+ s/ w
  857.       (Progn (initget 0 "Start")
    4 G) F- O( {! s
  858.          (Setq  NewEnd  (Distance  (LR-xy Textent) (LL-xyz Textent) ) )* C4 i0 F4 L/ M0 A. p
  859.          (setsnapang Textent)                 ;set snap along text entity0 D2 K  Y* _( @: k
  860.          (setvar "ORTHOMODE" 1)                   ;drag along the text3 V! }) |6 P; J6 Z
  861.          (setq 7 j) x9 b; n) }
  862. TMP (getpoint (cdr (assoc 10 Textent)) "\nStarting Point/<Pick new ending point>: ") )' B0 J/ D, [9 K
  863.          (setvar "snapang" 0)  P2 L0 r0 ?8 g" n& }& m; `: k
  864.          (cond
    + J  ]* ?; d# X% ?4 V
  865.            ((= (type TMP) 'STR) ;;new starting point to be selected
    9 o* `  d! u+ ~- Q! W) w7 E' V/ V
  866.                (setq Start (getpoint "\nPick new starting point: ")), L" }- t# L3 U
  867.                (if Start  (progn* ?# F% C9 W  `5 Y/ D
  868.                   (command "_UCS" "_E" (cdr (assoc -1 textent)))5 w' D; `% u/ O0 s' l; @
  869.                   (setvar "ORTHOMODE" 1); U# F- K5 r% m$ Q
  870.                   (setq NewPt. G$ w3 C. C4 X% w1 C8 I
  871.                         (if Start& Y+ B: M$ e4 R3 w. F$ Q2 P
  872.           (getpoint (trans Start 0 1) " ending point: ") nil ) )  v+ s" i  P( N0 f
  873.                   (if NewPt (setq NewPt (trans NewPt 1 0)))
    - {2 N$ \$ x2 |# K
  874.                   (setvar "ORTHOMODE" 0)" s. i( v, u) Y* Q9 S* Q0 ]
  875.                   (command "_UCS" "_W") ) ) ). X7 x7 B1 V8 w+ t
  876.            ((not (null TMP))    ;;new ending point selected
    # ~% I# l8 W" s7 p& C' z
  877.                (setq Start (cdr (assoc 10 Textent)) NewPt TMP)  )& d! u5 o8 j4 {& e7 f& p$ y
  878.            (t  (setq Start nil NewPt nil) ) )* H+ D" t1 x: Q8 Q& {$ L3 A
  879.          (if (and Start NewPt) (progn
    ) c- |: f: M/ a# a+ w" b! ~8 a9 i
  880.            (setq Val (Assoc 41 Textent) ;;current width factor
    5 K1 R0 R" S* i1 k2 b2 [& g$ Z
  881.                  Val (if Val (cdr Val) 1.0)  LTC_%      
    ! b- }/ D6 ]0 S) a* J
  882.           (* (/ (Distance Start NewPt) NewEnd ) Val ): Z: B5 q7 Z2 y% v
  883.                  textent (Subst (cons 41 LTC_%)* ~5 @4 f0 j( x: r$ E, v3 ^/ g
  884.            (assoc 41 textent) textent)! K) J- O! U) q. b. O2 _
  885.   textent (subst (cons 10 Start) (assoc 10 textent) textent), T$ ?" }+ B9 T7 @* C% h4 s
  886.   textent (subst (cons 11 NewPt) (assoc 11 textent) textent) )2 ?. a) S3 O0 A1 C
  887.    (EntMod textent) (EntUpd (cdr (assoc -1 textent))))))) (Princ))% P  s7 e, r% L2 Q
  888. " `' C( j) P- w& @1 f
  889. ;=====================================================================6 Q3 U) O, u8 f' T6 D. o
  890. ;=========================COPY + ROTATE ==============================" @6 N2 y& \2 U. I6 b9 \' s
  891. ;=====================================================================
    + _' m4 ]! ]& ]

  892. ! l8 _3 o; [# r  w
  893. (defun c:CR(/ olderr cm loop ss1 ss2 bp mult lent ss2 lp1 lp2)4 K3 o% P2 Z2 S8 V
  894.   (setq olderr *error*) B' l+ s6 Q+ m. j
  895.         *error* croerr)
    $ z, Q* z6 O. ^9 N. i
  896.   (setq cm (getvar "cmdecho"))
    8 z  \* A" d! {7 ?* \
  897.   (setvar "cmdecho" 0)/ j2 @) u! M+ I5 d9 i
  898.   (setq loop t)
    3 K/ P6 K. r  y( Q7 A( l
  899.   (while (not (setq ss1 (ssget))))
    4 ]7 R3 x/ h0 s$ o2 k" e
  900.   (initget 1 "Multiple")" N: f8 A  p/ O5 M; Q
  901.   (setq bp (getpoint "\nBase point or displacement>/Multiple: "))6 Z  v  J, i2 H2 `% H( I
  902.   (if (= bp "Multiple"): a4 P$ H; V( ~/ F, |. N
  903.     (progn3 T+ n. Z2 k' m1 p
  904.       (setq bp (getpoint "\nBase point: "))! B0 B3 Q- S4 q! \
  905.       (setq mult t)
    " t0 k1 F5 ^9 h! I4 J3 H
  906.     )+ [- E2 J% b1 @0 v: L
  907.   )4 G7 }' N* s  B
  908.   (while loop
    4 N/ P7 f( b' |( j% N, d' U- H
  909.     (setq loop mult)
    3 ~" ?5 G( C+ V& Y; n+ T
  910.     (setq lent (lastent))
      l8 i5 H9 o' x2 `5 w! J
  911.     (command ".copy" ss1 "" bp bp)
    7 h" {* p. f8 m" [
  912.     (setq ss2 (lss lent))9 _, @8 c( R9 T/ r# y, }" w
  913.     (setq lp1 (getvar "lastpoint"))8 u$ [; Q1 G" w
  914.     (prompt "\nSecond point of displacement: ")
    ) Q1 A: I8 V, s, H# p7 v# d7 Y
  915.     (command ".move" ss2 "" bp pause)
    9 ]+ k0 u: G$ F
  916.     (setq lp2 (getvar "lastpoint"))& d/ d; ^! R6 ]) t5 W
  917.     (redss ss1)* ?/ {# {" L- ]' D# U. |& d
  918.     (if (and (not mult)9 T  c" V4 I' H# H( F# T
  919.              (= (distance lp1 lp2) 0), b4 c' O) t4 w7 U' M
  920.         )
    8 U% R2 o7 m, g& ]9 A: x
  921.       (setq lp2 (getpoint "\nRotation Point: "))
    $ w8 h; T) B# n( ?, ^
  922.     )8 S' X+ n, {, B  x3 ^1 C8 O
  923.     (if mult
    " e8 ^, u' x8 E& j( p! Z) h
  924.       (prompt "\nRotation angle ")
    % `' k9 N" a, f0 m7 ]
  925.       (prompt "\nReference/<Rotation angle>: ")
    . j$ S, O  ^: O$ B1 H* @2 o6 l$ P
  926.     )
    2 `$ V" i1 j8 G
  927.     (command ".rotate" ss2 "" lp2 pause)
    6 S' I$ s3 u0 x1 F' u8 @8 ]0 e
  928.   )9 f) }2 w9 n; |7 o; L% [
  929.   (setvar "CMDECHO" cm)+ }* l8 U+ m* X  B6 j0 v% o. q
  930.   (setq *error* olderr)9 R% X% M$ b2 j7 e2 C  k9 U
  931.   (princ)
    6 ^/ n, `! q; ^& U( x6 P
  932. )8 _% m. V- X, X: K
  933. (princ)
    0 Q/ k) R8 D; X- T5 |1 X) ]0 x9 V
  934. (defun croerr (s)        
    : p; V) {5 s. f3 q5 y* ?
  935.   (if (/= s "Function cancelled")
    : S- K' ]' @: o3 G
  936.     (princ (strcat "\nError: " s))
    4 D  F0 R% c! \% N6 I" |. @
  937.   )
    8 m$ x  q& |8 e1 }8 l
  938.   (setq S nil)
    9 x6 Z$ T6 V7 K
  939.   (setvar "CMDECHO" cm)
      T# Y, G; x7 C, ?! D" i
  940.   (setq *error* olderr)
    ( e: A9 E& m5 d! w  ?
  941.   (princ), `+ i* h" f1 b
  942. )
    5 Q* s& D6 c9 u' L, B
  943. (defun lastent (/ a b)
    9 P7 `& g* z+ k3 _
  944.   (if (setq a (entlast))3 n' h- p5 [$ h  l5 r
  945.     (while (setq b (entnext a))9 G! O0 b, Z7 X1 T; i* N5 Y0 @- k
  946.       (setq a b)
    & r) H: c" O, [; J3 m' e0 s
  947.     )
    ' z2 C7 f  J: `3 P# f" \
  948.   )
    % v3 J3 n% v& l& t4 G
  949.   a
    0 A7 W2 U) c/ N+ s0 f! W, h
  950. )
    + T5 B8 s3 y0 U% P  e8 i5 K
  951. (defun redss (ss / en i)
    , }  z1 {$ `3 n: C
  952.   (setq i 0). h9 q, E0 _  f) n" R0 u7 f! b8 v
  953.   (while (setq en (ssname ss i))6 ?+ t4 o" e0 X* |8 j; J
  954.     (redraw en 1)
    ' v4 ~; r8 ]) d
  955.     (setq i (1+ i))$ a# E/ w( @- R1 e4 F' |" E
  956.   )
    . H7 Q- [( z/ h9 f* I
  957. )  u+ |* V8 R/ i$ q' y
  958. (defun lss (en / sels ed)3 ?7 S1 d; |: }0 P5 S) C' t% e" y
  959.   (setq sels (ssadd))
    # G8 B. ^8 D$ b$ S) ^$ S7 v) r
  960.   (while (/= en nil)
    5 u0 {- B2 B- F9 ^- ]. A
  961.     (if (setq en (entnext en)) (setq ed (entget en)))
    # t8 n8 o  [' `) X
  962.     (if (/= en nil) (setq sels (ssadd en sels)))
    + @7 w/ _! S& Z2 d& R! ^
  963.     (if (or (= (cdr (assoc 0 ed)) "Polyline")
    ' W. }2 M' [+ h& r4 k
  964.             (= (cdr (assoc 0 ed)) "Insert")
    0 K3 k# w# X5 w$ i7 g+ F
  965.         )
    / b6 @* q, ]# W! }! E
  966.       (while (/= (cdr (assoc 0 (entget (setq en (entnext en))))) "Seqend"))
    # M, d3 @9 Z3 I! Y/ p7 q
  967.     )
    7 g' {7 p* m0 G$ N
  968.   )
    . {( w, w, f/ |" o. I
  969.   sels
    % R$ {& k# A* U7 |; Y1 a2 m6 H
  970. )1 L6 R: s$ a8 o1 s. I6 E

  971. 9 v. f$ d; s" V3 u
  972. ;;;; ================== CAC FUNCTIONS DUNG TRONG ACAD.LSP ==================
    3 w& R2 q2 ]2 W% J' ?# ~6 o
  973. 2 S7 e+ {' |" h! R6 H: C5 k5 g
  974. (defun c:00 ()(princ "\nChon doi tuong net Defpoints")(ssget)(command "change" "p" "" "p" "la" "Defpoints" ""))
    5 J- ~" ?: U8 z3 O, [" h
  975. (defun c:0 ()(princ "\nChon doi tuong net 0")(ssget)(command "change" "p" "" "p" "la" "0" ""))% s- q: M5 i7 f
  976. (defun c:1 ()(princ "\nChon doi tuong net COT")(ssget)(command "change" "p" "" "p" "la" "COT" "")). M3 N8 i0 C: V# _. j
  977. (defun c:11 ()(princ "\nChon doi tuong net DIM")(ssget)(command "change" "p" "" "p" "la" "DIM" ""))
    4 A$ x  s- A) X8 q& H
  978. (defun c:22 ()(princ "\nChon doi tuong net MANH")(ssget)(command "change" "p" "" "p" "la" "MANH" ""))
    ) u( k: V& @' w# b. k1 m( N( a
  979. (defun c:33 ()(princ "\nChon doi tuong net NETMANH")(ssget)(command "change" "p" "" "p" "la" "NETMANH" ""))0 i! c$ R& M' C/ y
  980. (defun c:2 ()(princ "\nChon doi tuong net NETDUT")(ssget)(command "change" "p" "" "p" "la" "NETDUT" ""))
    : ]( `: u* l& P& a1 k2 V6 g
  981. (defun c:3 ()(princ "\nChon doi tuong net NOITHAT")(ssget)(command "change" "p" "" "p" "la" "NOITHAT" ""))9 g  {8 W0 I" p8 A
  982. (defun c:4 ()(princ "\nChon doi tuong net TUONG")(ssget)(command "change" "p" "" "p" "la" "TUONG" ""))
    % R8 t% X! o! V' C9 L* p
  983. (defun c:44 ()(princ "\nChon doi tuong net KHUNGTEN")(ssget)(command "change" "p" "" "p" "la" "KHUNGTEN" "")). B! Z  p; p" O- e
  984. (defun c:5 ()(princ "\nChon doi tuong net TIMTUONG")(ssget)(command "change" "p" "" "p" "la" "TIMTUONG" ""))
    # g. O& X4 l, S( c0 ^- @, W; U
  985. (defun c:6 ()(princ "\nChon doi tuong net CUA")(ssget)(command "change" "p" "" "p" "la" "CUA" ""))
    / `. R! h7 O$ ?4 H- i% }
  986. (defun c:7 ()(princ "\nChon doi tuong net THAY")(ssget)(command "change" "p" "" "p" "la" "THAY" ""))
    6 ?3 I. T1 g4 y1 J7 k" z
  987. (defun c:77 ()(princ "\nChon doi tuong net NETTHAY")(ssget)(command "change" "p" "" "p" "la" "NETTHAY" "")): `) f0 J; R6 F4 D* n) b
  988. (defun c:8 ()(princ "\nChon doi tuong net HATCH")(ssget)(command "change" "p" "" "p" "la" "HATCH" ""))& w2 H9 ~/ a( z9 }: T) ], {
  989. (defun c:9 ()(princ "\nChon doi tuong net TEXT")(ssget)(command "change" "p" "" "p" "la" "TEXT" "")); p! ?  x3 i* r9 }
  990. (defun c:99 ()(princ "\nChon doi tuong net CUAMATDUNG")(ssget)(command "change" "p" "" "p" "la" "CUAMATDUNG" "p" "C" "bylayer" ""))/ l. V- `0 ~0 {9 u
  991. (defun c:td ()(princ "\nChon doi tuong net THEPDOC")(ssget)(command "change" "p" "" "p" "la" "THEPDOC" ""))( A* J" ~8 C5 u& S8 w
  992. (defun c:ddt ()(princ "\nChon doi tuong net THEPDAI")(ssget)(command "change" "p" "" "p" "la" "THEPDAI" ""))
    5 k% f9 Q2 j& A( r& Q

  993. $ q/ M. |$ k' E" Q
  994. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============* O' W2 h# ?4 E9 ], P% w

  995. 3 [. `/ x5 Q  ^
  996. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============8 r- y( Q. U* D0 p

  997. 0 ?8 a8 t- H+ l
  998. (alert "Using the NetXuatAnh-[ 5940.00 x 4200.00 <pixels> ] command!")
    2 e( e: ?2 \8 ~8 P5 ~" M
  999. (princ "\nEnter (DEFUN C:netxuatanh () to get to real LAYER command.\n") (command "NETXUATANH"); M) H% \* i' a" w" |7 e0 V7 \

  1000. 4 R5 y; P/ J+ h/ u- t0 H
  1001. ;=============== DAT LAYER NET de xuat anh JPG [W x H] [5940.00 x 4200.00] ===DRAW===* F! F" t6 o5 B" {& ~& O
  1002. , E, O- i! i. ^6 h& V
  1003. ;(DEFUN C:netxuatanh ()
    7 N7 U* y7 g/ F5 r
  1004.                  (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.6" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""
    . H, j: H  ?" m7 d2 F* r  x
  1005.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1.58" "". |  d7 L* M) Q+ T
  1006.                                            "M" "MANH" "C" "9" "" "Lw" "0.5" ""5 o* I2 c% X, j
  1007.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    7 N: \! [' a' q; X4 }/ \
  1008.                                        "M" "DIM" "C" "1" "" "Lw" "0.6" ""
    4 A( j5 B. z+ Q( {) {1 }: J
  1009.                                        "M" "THAY" "C" "7" "" "Lw" "0.7" ""  L  v" L9 t# p' z
  1010.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.5" ""' S- q- A" n( u2 V5 \$ H
  1011.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""
    2 p- W6 j3 [  U
  1012.                                        "M" "COT" "C" "2" "" "Lw" "2" ""
    ( V$ L5 N( u2 ?
  1013.                                        "M" "Defpoints" "C" "7" ""4 ?0 g. `! N1 i' N& b* q
  1014.                                        "M" "0" "C" "3" "" "Lw" "0.5" "": ]" Y9 j  i1 Z4 Q" N
  1015. ;                                       "M" "1" "C" "1" "" "Lw" "0.5" ""
    6 r9 Z3 V# H9 t
  1016. ;                                       "M" "2" "C" "31" "" "Lw" "0.5" ""
    % G* u7 J5 `# R: R& R
  1017. ;                                       "M" "3" "C" "8" "" "Lw" "0.35" ""
    0 q& M3 r) ~4 ^; o3 ~; M
  1018. ;                                       "M" "4" "C" "4" "" "Lw" "0.8" "") x  b6 a% R6 V6 \! W) n7 l7 Q
  1019. ;                                       "M" "6" "C" "6" "" "Lw" "0.35" ""
    5 m1 g0 q) P$ x. E. c
  1020. ;                                       "M" "7" "C" "7" "" "Lw" "0.4" "", ^; W$ h; u6 F. p* T9 m7 ]
  1021. ;                                       "M" "8" "C" "8" "" "Lw" "0.35" ""
    0 S, [2 Y, i0 a7 ]4 E6 i
  1022.                                        "M" "DAY-DIEN" "C" "3" "" "Lw" "0.5" ""
    , B% a8 [1 y. O+ i2 J$ o+ y4 _
  1023.                                        "M" "DUONGBAO" "C" "7" "" "Lw" "1" ""
    $ e4 N/ k) t* G& J
  1024.                                        "M" "KE" "C" "8" "" "Lw" "0.3" ""2 B7 X; w6 C/ v0 Z/ ^! o
  1025.                                        "M" "KT" "C" "9" "" "Lw" "0.35" ""; ?- V  l/ A4 U: T0 z
  1026.                                        "M" "NETTHAY" "C" "255" "" "Lw" "0.7" ""
    5 ]0 w- t2 D! t
  1027.                                        "M" "NETMANH" "C" "43" "" "Lw" "0.5" ""
    + R' A& ^' I6 Z! O3 L# S
  1028.                                        "M" "TBD" "C" "2" "" "Lw" "0.8" ""
    ! L$ x$ K& p  z% S3 i; s/ D
  1029.                                        "M" "TEXTTXT" "C" "7" "" "Lw" "0.4" ""
    6 k  |) P" S. Q+ G" Q3 Q
  1030.                                        "M" "TEXTVN" "C" "132" "" "Lw" "0.4" ""
    % C8 @4 R6 H8 D
  1031.                                        "M" "THEPDAI" "C" "3" "" "Lw" "0.7" ""
    & }4 U1 u, l5 O) A  s( `
  1032.                                        "M" "THEPDOC" "C" "2" "" "Lw" "1.58" ""& ^) S8 O3 b+ b( [! ~0 X  _
  1033.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""7 j( f" n6 b$ U5 X4 e$ W( z# {
  1034.                                        "M" "CUAMATDUNG" "C" "6" "" "Lw" "0.5" "". m2 Z" `  L7 f& N* [
  1035. & c* h6 H% ]/ X: ~; u
  1036. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] ===NUOC===
    ' y" N- y, p# \" H0 L
  1037. ' Z. R/ _, g& \5 \# p+ t3 H# h
  1038.                                        "M" "10-VAN_KHOA" "C" "10" "" "Lw" "0.5" ""
    + C' g+ X: \" y6 {4 F8 F! [
  1039.                                        "M" "4-WateR_IN" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE1" ""
    , N; l& k. f7 P: g7 i* b- ?2 V
  1040.                                        "M" "4-WateR_OUT" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE2" ""
    6 l) j' z6 O0 M5 f# }0 b" n
  1041. ;                                       "M" "250" "C" "250" "" "Lw" "0.35" ""0 L2 M4 |2 W9 V# l, ]0 F6 `, ]: K- J
  1042.                                        "M" "KHUNGTEN" "C" "4" "" "Lw" "1" ""# ~) J. J( J+ I8 \1 @- {' b8 t
  1043.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.5" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" "" )/ W" F( l0 `; A- X5 {

  1044. 7 t' ?3 J: |, M( u+ Y: Z
  1045. ;=============== DAT LAYER TEXT de xuat anh JPG [DIM] [TEXT] [GHI CHU]======( F" ]% d2 g. e- Z3 @
  1046. ;===================================30|04|2024==============================
    3 Q& M% K! c* T  ]! [

  1047. 3 Y; j1 p3 z" K$ ]/ x+ s& ~
  1048.                      (Command "-style" "Vni-VietNam" "vn_vni,vns.shx" "0" "1" "0" "n" "n" "n" )
    ' j/ Z3 N3 w2 b% q6 B
  1049.                      (Command "-style" "Vni-ROMANS-TEXT" "vni-romans,vns.shx" "200" "1" "0" "n" "n" "n" )8 x4 d1 c: ^4 J' d* j  L
  1050.                      (Command "-style" "COTES" "verdana" "" "1" "0" "n" "n" )& [% P) |3 N  p5 s  {2 r
  1051.                      (Command "-style" "TRUC" "impact" "0" "1" "0" "n" "n" "n" )
    , z1 E1 v7 L6 q5 u5 X
  1052.                      (Command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500" "1""0" "n" "n" "n" )
    " K9 q$ y9 z# q' G. |3 C
  1053.                      (Command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1" "0" "n" "n" "n" )
    0 i" {, e# r8 j
  1054.                      (Command "-style" "STANDARD" "Verdana" "200" "1" "0" "n" "n" "n" ); T5 l1 J8 W7 M9 Y
  1055.                      (Command "-style" "VERDANA" "verdana" "200" "1" "0" "n" "n" )5 i3 u% b! {1 B
  1056.                      (Command "-style" "ROMANT-DIM" "romant,vnh.shx" "0" "1" "0" "n" "n" "n" )
    ) L7 a# M5 r8 b$ E6 }0 o
  1057.                      (Command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200" "1" "0" "n" "n" "n" )(princ)
    $ w: [, s/ n5 H' y3 q3 t* A) s; U

  1058. & m5 z0 o, U  H. O$ A
  1059. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=  O% R/ R) H. C  d' d. S2 N4 S
  1060. ;===================================17|10|2024===================================
    3 _  w" \; Y, l! n8 Y
  1061. : V) c" v9 u& N% N2 ~
  1062.                      (Command "DIMTXSTY" "ROMANT-DIM" )- O: q6 v8 K* ^% ?) m$ R9 X' @& U8 V  i  r
  1063.                      (Command "DIMBLK" "" "Closed" )$ Q# t" B5 n4 d. _. d" B

  1064. 7 m9 C# f) I$ M' }4 o3 P$ Q8 Q
  1065. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    9 m- F2 D" b+ k4 Z( f9 h
  1066. ;===================================17|10|2024===================================/ a# y/ u8 r3 ~, @4 e) f5 T

  1067. , f% @& [, O7 S0 e
  1068. ;(Command "-units" "2" "8" "1" "8" "" "N")
    , x; K8 J& e+ G  w  G
  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)
    * [3 P6 _3 e$ U1 _$ n1 X

  1070. ' H7 S+ S: {; l! q2 x' G
  1071. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    & O! L3 D/ R/ J# h
  1072. ;===================================17|10|2024===================================
    " ?( q0 Q% F+ y$ ~0 n2 s7 B4 V2 ^

  1073. * u7 M3 {1 ]. I9 Q- \1 t" j
  1074. ;======== KET THUC - DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =====
    ) o* f3 s4 l) l7 a
  1075. % i' d' Z/ w7 C  K$ Y8 k: h2 ]
  1076. ;======================== DAT NET IN & TI LE BAN VE =============================
    ' @3 r7 y5 u% t% ?# j% x  M' o

  1077. 2 R2 m6 b' W2 [3 q4 q
  1078. ;=================LENH VE KHUNG TEN - Tieu Diet Lenh==================  c0 Z, J3 p9 g2 p" y- ^/ @* P/ I
  1079. ;=============== DAT KHO GIAY BAN VE - KIEU KHUNG TEN ================
    $ c4 L; o( T' p; ?
  1080. ;=============================11|07|2025==============================
    / ?1 p3 f2 J( e5 ^6 u# J5 m
  1081. ;Ti Le Ban Ve - 1 : 100" T- J! Q+ L) [/ c7 B3 ?# o1 ]% L
  1082. (Defun c:kta4 ()) ~* I- w' u7 O1 U% Q3 ]! C
  1083.     (setq mv_sc 100);Ti le  ban ve; Q; t3 t* w7 `& b: x
  1084.       (setq x4  297)0 Z, s6 c, g  N/ }
  1085.       (setq y4  210)2 L& S1 P; Z) Y& N( o  _9 C
  1086.   (setq x4 (* mv_sc x4)
    - V3 Z) U$ x" y7 n/ a) ]4 |
  1087.         y4 (* mv_sc y4)  )% u  s! E8 k: n2 l" T- {) f
  1088.   (command  ! n! j/ N0 X8 ]3 F0 x% v9 L
  1089.     "LIMITS" "0,0" (list x4 y4)
    4 I5 U7 ]5 G4 i3 R! u, |
  1090.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"  L9 {- o. ]2 k8 p0 I8 ^5 ^3 T
  1091. ;Khung CHU NHAT Chinh    ) A! [& O# `# Y) D7 [9 K1 y
  1092.     "RECTANG" "500,500" "@28700,20000"
    ; Y3 M/ T  x5 M* ]  o
  1093.     "RECTANG" "700,700" "@28300,19600"* w" L, ^. _% p, N
  1094. ;Khung Ten Chung
    5 N. G  _0 Q( Q; y' z* s, U1 _
  1095.     "RECTANG" "700,700" "@8000,1250"$ ^/ W6 s5 y  }. g; M
  1096.     "RECTANG" "700,700" "@17300,2500"4 P) p1 a1 T' A/ b5 p
  1097. ;Ten Ban Ve2 g8 T8 E$ y  f4 Z1 T" z
  1098.     "RECTANG" "18000,700" "@11000,1250"8 t1 @( T5 i- {7 [
  1099.     "RECTANG" "18000,700" "@11000,2500"% f" k/ ]2 Z& @/ W  S2 a5 M" T
  1100. ;Khung Ti Le + Ngay Thang Nam2 Z7 a7 @% h1 [+ V2 o' F/ g1 l
  1101.     "RECTANG" "22500,700" "@2000,2500"
    , w& y8 ]! k9 t: V/ u' X
  1102. ;Khung CHU TRI0 Q' W! p9 F" n
  1103.     "RECTANG" "8700,700" "@3800,2500"1 {( N9 l0 w* Y5 {) I1 G
  1104. "ZOOM" "_a"  ))
    5 F# l2 x% m' D3 u% j; ?5 t, w
  1105. ;=====================================================================
    1 m: j5 f: ~: P3 _6 H$ K
  1106. ;Ti Le Ban Ve - 1 : 1004 p) ~( f) C# ~; O8 a( j. Y
  1107. (Defun c:kt4a ()
    ( X+ Q  i- D& |# G1 U- Y
  1108.     (setq mv_sc 100);Ti le  ban ve
    * S4 L2 \0 T' p0 ^! L
  1109.       (setq x4  297)/ l/ m- c4 |5 O# _
  1110.       (setq y4  210)! E, x9 }! ^' l, r1 U5 |
  1111.   (setq x4 (* mv_sc x4) 7 H- W: s, [! U
  1112.         y4 (* mv_sc y4)  )
    % D! A3 e; N1 m  _' @" T5 j# a) ]
  1113.   (command  3 f9 F$ q& I6 k2 o- G3 u
  1114.     "LIMITS" "0,0" (list x4 y4)
    8 n2 |9 p2 ?, A; a; v
  1115.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C", i2 j  J( G& B% `+ t- v
  1116. ;Khung CHU NHAT Chinh  
    7 [% ]: s5 M" S4 Y* o0 q- L
  1117.     "RECTANG" "2000,500" "@27200,20000"# n/ T; }4 w9 j! |2 ]0 H
  1118.     "RECTANG" "2200,700" "@26800,19600"
    1 x$ K' f" O, A' ?/ L
  1119. ;Khung Ten Chung
    ' S3 P+ p3 F! W9 |
  1120.     "RECTANG" "2200,700" "@6500,1250"& z6 ?( j% m) ?2 y: w7 c+ J' V9 W* h
  1121.     "RECTANG" "2200,700" "@15800,2500"( Q2 l8 R  O+ e1 f. w7 ~0 y
  1122. ;Ten Ban Ve
    7 f) [, r5 q: b$ n) u/ Z
  1123.     "RECTANG" "18000,700" "@11000,1250", W0 o# {4 U" e- o- ]
  1124.     "RECTANG" "18000,700" "@11000,2500"
    5 a7 t0 J$ M' T" X* r
  1125. ;Khung Ti Le + Ngay Thang Nam
    . o) ]2 i  E5 v& l( \
  1126.     "RECTANG" "22500,700" "@2000,2500"
    4 z- {/ {3 W( b2 T% G/ L
  1127. ;Khung CHU TRI
    ( @6 b+ |0 w! X, v
  1128.     "RECTANG" "8700,700" "@3800,2500"! k( ~! p/ ^. V1 ]8 i8 U! j+ t
  1129.     "ZOOM" "_a"  ))
    ! D0 S6 p5 k; I/ m9 k

  1130. ' a" v3 r/ w0 `4 O) ]
  1131. ;;; ============================GHI CHU Khung Ten========================5 s2 s! C5 Q- v. K3 S0 N( _
  1132. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    3 T1 _4 o7 D+ w2 |5 {
  1133. ;;; =======================Thuong Dung Font Romant.vnh===================
    9 V. M" j7 @4 W* ?' j( v( ^

  1134. + n( [5 i3 F$ t2 @1 A) [3 `
  1135. (defun c:GhiChu (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)& G( A7 y. t3 u
  1136.   (setq oer *error* *error* err2)
    ! V6 X$ t/ V0 a  D$ F
  1137.   (PROMPT "\nChuTri. ThietKe. KiemTra. TiLe. Ngay. HangMuc. QuyMo. KieuNha. CongTrinh. KyHieu. TenBanVe. Kts. TranNgocThang. ")
    9 q. y1 q% h/ N$ P# [) o; f1 |
  1138.   (SETQ Cpt(GETSTRING "\n(CT). (TK). (KT). (TL). (Ng). (HM). (QM). (KN). (CTr). (KH). (TBV). (Kts). (TnT). "))9 I, b* |2 O, r5 L- ?/ _
  1139.   (IF(OR(= Cpt "QM")(= cpt "qm"))(SETQ CPT ' "Hå S¬ ThiÕt KÕ Nhµ D©n Dông quy M« :"))
    7 W' C& X& `! V& h8 i3 n
  1140.   (IF(OR(= cpt "KN")(= cpt "kn"))(SETQ CPT ' "2 TÇng 1 Tum Thang")); Q. @! O$ _0 l
  1141.   (IF(OR(= cpt "CT")(= cpt "ct"))(SETQ CPT ' "Chñ Tr× :"))6 {8 r2 k  o$ a
  1142.   (IF(OR(= cpt "HM")(= cpt "hm"))(SETQ CPT ' "H¹ng Môc :")), \+ c+ k6 Z  `# T* Y9 A
  1143.   (IF(OR(= cpt "CTr")(= cpt "ctr"))(SETQ CPT ' "Nhµ ë Gia §×nh - Nhµ LiÒn KÒ"))) e' B! e* d5 h( r
  1144.   (IF(OR(= cpt "TK")(= cpt "tk"))(SETQ CPT ' "ThiÕt KÕ :"))) r- w4 N8 m, r
  1145.   (IF(OR(= cpt "KT")(= cpt "kt"))(SETQ CPT ' "KiÓm Tra :"))) o" G1 j! ?% }$ |: j0 D/ ?1 [& j
  1146.   (IF(OR(= cpt "TL")(= cpt "tl"))(SETQ CPT ' "TØ LÖ :"))- q, O8 P4 e  U( Z  ~7 {+ v
  1147.   (IF(OR(= cpt "KH")(= cpt "kh"))(SETQ CPT ' "Ký HiÖu :"))
    1 d- Q. q; A7 s+ x
  1148.   (IF(OR(= cpt "TBV")(= cpt "tbv"))(SETQ CPT ' "Tªn B¶n VÏ :"))+ Z; s2 L; y, b8 K( d# b
  1149.   (IF(OR(= cpt "Ng")(= cpt "ng"))(SETQ CPT ' "Ngµy :"))
    , f5 m- b7 A" j+ Q' e* O
  1150.   (IF(OR(= cpt "Kts")(= cpt "kts"))(SETQ CPT ' "Kts. TrÇn Ngäc Th¾ng"))7 c- l6 A1 w- c* y: P! {7 j$ `& ^8 E
  1151.   (IF(OR(= cpt "TnT")(= cpt "tnt"))(SETQ CPT ' "TrÇn Ngäc Th¾ng"))8 L9 A$ {; x$ U
  1152. (setq pta (getpoint
    . f8 z2 {5 f( H8 K0 r2 q3 `
  1153.     "\nPick first corner. : "))
    ! F, T+ Z4 E1 L/ U5 p
  1154.   (setq ptb (getcorner pta
    & R+ `; e* A6 v2 M6 n* P
  1155.     "\nPick second corner. : "))
    9 _' ?% F7 r9 l8 U
  1156.   (setq ptc (list (car ptb)(cadr pta)))
    8 f  d; J# `; h$ V5 H* o- A8 Z
  1157.   (setq ptd (list (car pta)(cadr ptb)))
    * X1 J, [6 j$ g6 f- h# b' S; z
  1158.   (setq ang (angle pta ptb))* [; {6 `3 k! r2 q, x( ]
  1159.   (setq d1 (/(distance pta ptb) 2))
    9 O: w: P! s2 |% m( l8 L
  1160.   (setq cp (polar pta (- ang (dtr 0)) d1))
    & u6 [  S1 n! s. u4 o
  1161.   (setq X (distance pta ptc))0 H! Z- |5 ?6 G: q6 ^& b
  1162.   (setq Y (distance pta ptd))5 o( v& t9 c5 E6 _$ m4 r2 f- O% O
  1163.   (setq X1 (rtos x 2 1))- b9 R7 S& x' b
  1164.   (setq Y1 (rtos y 2 1))) P  M- B7 U& C4 s4 d
  1165.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))  r4 u! j/ k% k2 ^+ u
  1166.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))# h5 F& V2 N: @( ^
  1167.   (defun dtr (angg)! O2 E: t  j/ l% R2 [5 a
  1168.   (* pi (/ angg 180.0)))
    * p. p0 E7 v7 ^
  1169. 8 i, b0 m7 b9 t
  1170. ;=====================================================================4 v  J- [# g' n7 r5 y, \
  1171. ;==========================DAT KHO GIAY BAN VE - KIEU 1========================# R# _6 r9 m7 f( ]8 V8 y  B
  1172. ;=====================================================================) Y( }; V& S) ], M1 J/ }# H
  1173. 4 t+ A: x: M2 K% V. X$ w% I
  1174. (Defun c:a6 ()
    9 L  B! K4 ?& J# A8 f( V$ O* @
  1175.         (setq mv_sc 100);Ti le  ban ve
    / n  q' @. J# X* k6 A6 I
  1176.       (setq x4  74.25)' \0 w* O+ h2 J, i9 P
  1177.       (setq y4  52.5)* T7 K' _! W, J
  1178.   (setq x4 (* mv_sc x4) ' s0 G- h! v0 u8 s
  1179.         y4 (* mv_sc y4)  )) T8 L1 G" L, `
  1180.   (command  
    1 d+ ^( Q. `/ X* \8 K6 p
  1181.     "LIMITS" "0,0" (list x4 y4)
    8 u( p& y9 ]/ {/ O: f. V: C
  1182.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    6 Z! y: X' @5 o" ?( M$ n! L$ x8 r
  1183.     "RECTANG" "125,125" "@7175,5000"
    . Q- c. Q8 r" C9 D5 U6 P3 B
  1184.     "RECTANG" "175,175" "@7075,4900"
    & X' E7 @& A7 n) J5 B
  1185.     "ZOOM" "_a"  ))
    % A7 o5 c- Z; s  J7 V5 S" e( N* l6 e# B
  1186. ;=====================================================================
    6 k2 d$ \% N" X8 Z+ @% h
  1187. (Defun c:a5 ()
    $ N+ n4 e! b% G6 q+ e* _
  1188.         (setq mv_sc 100);Ti le  ban ve! {: j. J2 t: p3 o. L
  1189.       (setq x4  147.5)
    9 d0 [0 o: q0 d" u7 h* @9 s- Z
  1190.       (setq y4  104)
    6 K# a0 ~# ?- D3 ~2 ?- {8 i
  1191.   (setq x4 (* mv_sc x4)
    # T) y/ T0 `, c1 b
  1192.         y4 (* mv_sc y4)  )9 A1 P/ d- \$ p3 ]$ V$ t
  1193.   (command  
    7 r* T. ]8 w) ?& u1 q/ d, O% H
  1194.     "LIMITS" "0,0" (list x4 y4)
    4 {9 ^9 p; f; x% r, G& u7 J
  1195.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    * @% j, a& X2 P, ]  M" z& k% \
  1196.     "RECTANG" "250,250" "@14350,10000"! m' z; Q( I+ A6 W* _
  1197.     "RECTANG" "350,350" "@14150,9800"
    / r- [9 M! I8 a
  1198.     "ZOOM" "_a"  ))
    / j7 ~* d! Z$ ?1 r& Y& `2 a
  1199. ;=====================================================================( Z0 a+ s  g7 S! x) `' l" Y
  1200. (Defun c:a4 ()
    : A5 v2 m. h6 E: }) f  e
  1201.         (setq mv_sc 100);Ti le  ban ve
    : m5 m# O1 E# E" V( q
  1202.       (setq x4  297)6 N  t8 V% D0 K) v
  1203.       (setq y4  210)7 e% D' }! t* H% C" B5 U" n
  1204.   (setq x4 (* mv_sc x4)
    6 M) D  Q1 {$ x# i% X
  1205.         y4 (* mv_sc y4)  )3 y# Y& N! ^$ c' }
  1206.   (command  
    5 O& Y: b" f1 L
  1207.     "LIMITS" "0,0" (list x4 y4)
    / u! o& _) ?7 {, v, e1 a- L" M* D
  1208.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    . O, t; `& T, f! T" J" b
  1209.     "RECTANG" "500,500" "@28700,20000"
    ( k+ i, `& B9 m8 _# n, k9 Z' Y
  1210.     "RECTANG" "700,700" "@28300,19600"# M' I  C1 r' h' k% X% e& ^" _
  1211.     "ZOOM" "_a"  ))
    , v6 I) B2 D8 O) Q( }& _. D  m
  1212. ;=====================================================================
    . |  c! u: q# P" h
  1213. (Defun c:a3 ()' O3 B" P$ A# X' N
  1214.         (setq mv_sc 100)% \- X# G) [6 h8 W/ e& L
  1215.       (setq x3  420)! Y$ R, X/ J+ k1 X) m
  1216.       (setq y3  297)0 i9 w' B5 `# _4 @  Q' M
  1217.   (setq x3 (* mv_sc x3)
    . D5 S* `: |# w7 |
  1218.         y3 (* mv_sc y3)  )
    $ E& [- n0 i) |& q" T
  1219.   (command  5 y7 s0 ~$ ?' o
  1220.     "LIMITS" "0,0" (list x3 y3)
    5 H6 Q; v3 i2 W1 i" e
  1221.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    ( c2 r% S& p' v" o
  1222.     "RECTANG" "707.14285714,707.14285714" "@40590,28285.71428571"2 @) S$ \8 f- ~9 |+ q
  1223.     "RECTANG" "990,990" "@40024.28571429,27720"
    ) H' h- n( O( U  W
  1224.     "ZOOM" "_a"  ))3 b, F$ f+ ?, G* `% w9 ^5 c, n0 D
  1225. ;=====================================================================
    % E  L" Q2 t' ]( n8 k
  1226. (Defun c:a2 ()
    4 X  l' N) S, }1 X: \
  1227.         (setq mv_sc 100)2 s4 G( g% M  k5 c
  1228.       (setq x2  594)
    # U5 [! _! P0 d* Q* C
  1229.       (setq y2  420)
    . l4 b' e: `7 \; b
  1230.   (setq x2 (* mv_sc x2)
    + q" C4 D- Y! ?8 _- h
  1231.         y2 (* mv_sc y2)  )( k6 G2 u2 h* {+ s& y
  1232.   (command  
    4 ?% ^" o7 V2 e$ u7 A4 ^% Z$ R
  1233.     "LIMITS" "0,0" (list x2 y2)( D( ^' }8 {3 }9 ^: A5 U
  1234.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"9 Z7 a, S8 X( B8 _! d5 @# e
  1235.     "RECTANG" "1000,1000" "@57400,40000"5 E7 {5 H- o  b4 ^8 ?
  1236.     "RECTANG" "1400,1400" "@56600,39200"
    3 ~6 w+ a( n! R4 P
  1237.     "ZOOM" "_a"  ))
    $ g  v# l/ ]6 L% h" Q9 e: _
  1238. ;=====================================================================+ c& [$ m/ v8 s4 J
  1239. (Defun c:a1 ()& p5 Y# E7 i4 T+ x
  1240.         (setq mv_sc 100)8 X9 o  q4 J3 @) w* H  S& P
  1241.       (setq x1  840)
    , b- `2 ]) ?/ t# l- [$ C( K+ U4 R
  1242.       (setq y1  594)
    5 ?2 A2 O/ J  b8 v' S
  1243.   (setq x1 (* mv_sc x1)
    ' s# r' I6 `- V% b. p
  1244.         y1 (* mv_sc y1)  )
    5 y6 U! x% N# c5 k/ V% |( Z$ t
  1245.   (command  - b% r- Q5 T! y9 O; p! `
  1246.     "LIMITS" "0,0" (list x1 y1)
    7 F% m2 ^9 z0 N, m5 N1 O
  1247.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"4 A  N  ^% @: j' j& ?/ s" A
  1248.     "RECTANG" "1414.28571429,1414.28571429" "@81180,56571.42857143"
    & f- Z1 j, s) t. F8 q1 n+ e: n
  1249.     "RECTANG" "1980,1980" "@80048.57142857,55440"
    5 X1 @6 f8 x* P
  1250.     "ZOOM" "_a"  ))
    1 u, n$ J4 I1 T0 j" y0 X
  1251. ;=====================================================================" V# o! M2 A* T% n2 _$ u
  1252. (Defun c:a0 ()
    ' q! h# K/ Z+ R: Y6 x' s1 f
  1253.         (setq mv_sc 100)9 T1 E5 i+ |. ?& [/ P* W0 A
  1254.       (setq x0  1188)" v! {- T' p4 `3 `! A) _
  1255.       (setq y0  840)% v* @1 l6 |/ e: g; F" |# _9 g
  1256.   (setq x0 (* mv_sc x0) 0 v6 v9 X4 J6 o6 S
  1257.         y0 (* mv_sc y0)  )
    7 ~, M( o; k* w& d9 C
  1258.   (command  3 a% ?: s/ a+ V: S6 T8 u
  1259.     "LIMITS" "0,0" (list x0 y0)% y7 T1 a& z  a- G3 X
  1260.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C": V' ~6 A6 L+ o; Q+ f
  1261.     "RECTANG" "2000,2000" "@114800,80000"
    8 f, R- p) ~2 o  J6 ^5 B0 ~/ E
  1262.     "RECTANG" "2800,2800" "@113200,78400"
    9 o# o5 i. ?2 I; Y
  1263.     "ZOOM" "_a"  ))
    2 G* W5 _9 [  d0 b4 \
  1264. 1 Z$ v, K3 W$ W* N
  1265. ;=====================================================================6 p8 s+ ]  V4 i4 m
  1266. ;=========================DAT KHO GIAY BAN VE - KIEU 2=========================, O. R! m$ d0 O4 [5 n& k
  1267. ;=====================================================================- R! \2 ?5 A, {: d8 l4 T
  1268. " e1 [8 k3 [9 |: q8 \# ]8 ^2 ^
  1269. (Defun c:6a ()& Q) a) X, Q1 B: ]  S
  1270.         (setq mv_sc 100);Ti le  ban ve
    " \0 L, S. G/ m# n
  1271.       (setq x4  74.25)' x# E& Y3 |) J$ P5 f$ `& W
  1272.       (setq y4  52.5)
    , V: m1 ]) v0 U4 p- X* S* J
  1273.   (setq x4 (* mv_sc x4) 8 |! K) Z& m! |" S3 |9 u
  1274.         y4 (* mv_sc y4)  )2 ~0 i9 g& r2 I+ a2 b5 Y2 e
  1275.   (command  
    6 B+ c+ v. l8 O% D% s# X
  1276.     "LIMITS" "0,0" (list x4 y4)/ V, i; [) G" O+ N6 b( n0 Y% [. e
  1277.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    5 r, M: Q3 b6 g: I% X
  1278.     "RECTANG" "505,125" "@6800,5000"
    & x. a& b! F; F# J1 i/ e
  1279.     "RECTANG" "555,175" "@6700,4900"
    % \# `- r% {" ~) @6 s; p
  1280.     "ZOOM" "_a"  ))
    0 k( _6 Z# W3 a+ K; s
  1281. ;=====================================================================6 g% I% \5 k' m' [8 [) [
  1282. (Defun c:5a ()' h+ _* ?& {. F) T/ q) L& _
  1283.         (setq mv_sc 100);Ti le  ban ve! C+ u5 A) G4 ^  M" Y
  1284.       (setq x4  148.5)
    " Q/ `! O% o! \/ Q
  1285.       (setq y4  105)
    - u2 Z+ ~& i8 Z- T% @  y% j
  1286.   (setq x4 (* mv_sc x4)
    3 |  b' o* Q- v" J
  1287.         y4 (* mv_sc y4)  )
    * D% @# o. K% a% {5 Z
  1288.   (command  
    ; A  x% M' f9 {4 B3 Y& J
  1289.     "LIMITS" "0,0" (list x4 y4)
    ) \: j9 @& W# }7 a' S
  1290.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    8 A, `$ X$ ^" I' G( {8 r5 |- `
  1291.     "RECTANG" "1000,250" "@13600,10000"1 y$ b5 O# `7 H) O+ b& e
  1292.     "RECTANG" "1100,350" "@13400,9800"
    : c4 S4 N1 s6 `2 j$ S) W6 H
  1293.     "ZOOM" "_a"  ))- W1 `2 t, B! ~, Y( F! b
  1294. ;=====================================================================3 k! n" e$ p) f
  1295. (Defun c:4a ()
    9 d. v! e( q5 _/ V6 X; H5 q
  1296.         (setq mv_sc 100);Ti le  ban ve7 `& ^( j' ^1 v7 L
  1297.       (setq x4  297)9 w0 w+ M, C7 C: }' L" ]8 r
  1298.       (setq y4  210)! O4 S/ L: ]+ v1 A+ i! \4 N
  1299.   (setq x4 (* mv_sc x4)   W) S3 i, ^" y
  1300.         y4 (* mv_sc y4)  )
    4 J1 Q4 x( Y( L% @4 V
  1301.   (command  
    ) Q& G$ R1 P! ^4 {. @
  1302.     "LIMITS" "0,0" (list x4 y4)
    4 D' T- U/ [% a5 \; j4 R: R& c8 B
  1303.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"3 z9 P4 a' G) r6 w, \
  1304.     "RECTANG" "2000,500" "@27200,20000"
    , R2 P1 G* K8 X, k
  1305.     "RECTANG" "2200,700" "@26800,19600"7 i& O. g( `: ]0 j: R6 j
  1306.     "ZOOM" "_a"  )); T8 v# J/ f& H
  1307. ;=====================================================================
    1 u6 x" H( X# p
  1308. (Defun c:3a ()
    6 m; E, H, Y( T8 A% n- a+ P
  1309.         (setq mv_sc 100)% T% z0 ~* I0 h' d" u6 _
  1310.       (setq x3  420.0428571429)& l( C$ _5 Q5 E
  1311.       (setq y3  297)
    ' ~. W$ Z) C/ ]: L% ~4 \
  1312.   (setq x3 (* mv_sc x3) 6 S" |0 u$ a6 @
  1313.         y3 (* mv_sc y3)  )
    2 ?! Z$ b# Q3 q3 F; {' R
  1314.   (command  8 }5 s1 i  E  j2 n% L" j; k$ t* r
  1315.     "LIMITS" "0,0" (list x3 y3)
    2 @8 T: h8 b! C: O7 O
  1316.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    , m9 @, l) O" @. y
  1317.     "RECTANG" "2828.57142857,707.14285714" "@38468.57142857,28285.71428571"1 _3 K0 W$ L0 H! |5 g
  1318.     "RECTANG" "3111.42857142,989.99999999" "@37902.85714287,27720.00000001"
    * M% ~9 L) w. i  `. M/ @: z
  1319.     "ZOOM" "_a"  ))) x3 L. w% [- t- L# U2 I+ p+ O. G6 c
  1320. ;=====================================================================6 n, m, H' a% v% o7 X: U/ F
  1321. (Defun c:2a ()8 E. {; C& E8 C7 l
  1322.         (setq mv_sc 100)1 b# P& Q$ m& a
  1323.       (setq x2  594), z) D7 T. s! `( ?6 E6 r
  1324.       (setq y2  420)
    2 R8 f! n$ ?; n4 l' W5 q
  1325.   (setq x2 (* mv_sc x2)
    8 i' P1 Z! r  N; @* l& n' e" n  K
  1326.         y2 (* mv_sc y2)  )
    - ^8 w  _; U9 ]
  1327.   (command  2 a, e, q2 V& v/ j8 l
  1328.     "LIMITS" "0,0" (list x2 y2)( W3 M# \+ E. i; Q
  1329.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"' o7 H, r! q. }, s+ v
  1330.     "RECTANG" "4000,1000" "@54400,40000"
    2 T4 b  {+ G7 a; u0 E+ W& E6 j3 C
  1331.     "RECTANG" "4400,1400" "@53600,39200"
    / @- S0 `/ y7 Q* E
  1332.     "ZOOM" "_a"  ))6 G3 L7 J" S8 ?9 J: `1 a. Y
  1333. ;=====================================================================# I) ]4 b  B) ?! V( ~( K
  1334. (Defun c:1a ()
    ( a2 o4 ~" T7 z" g
  1335.         (setq mv_sc 100), D4 r! S5 d' g& l
  1336.       (setq x1  840.0857142857)2 K* z1 v+ A1 m  \9 w+ \
  1337.       (setq y1  594)) }2 O5 U  ?% N4 v8 Q
  1338.   (setq x1 (* mv_sc x1) 5 V- |( \6 k  }+ `5 A: j) w! t
  1339.         y1 (* mv_sc y1)  )
    , E1 |8 s% x: b. C; Q- s
  1340.   (command  7 ~6 H) i/ I% p9 b6 y5 u0 G6 h
  1341.     "LIMITS" "0,0" (list x1 y1)6 j& t. a) @, Y
  1342.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"# [/ q3 Q: n( L6 v% f- {4 F( p- |6 W
  1343.     "RECTANG" "5657.14285714,1414.28571429" "@76937.14285714,56571.428571436"
    9 ^# A; B9 L" N+ f) j/ r
  1344.     "RECTANG" "6222.85714286,1980.00000001" "@75805.71428570,55440"( y2 C) k, j6 i
  1345.     "ZOOM" "_a"  ))
    4 L# G% j; P( r9 W
  1346. ;=====================================================================' X; e: |5 j# Q
  1347. (Defun c:0a ()
    5 M8 \8 P4 Y  o9 m4 {6 c
  1348.         (setq mv_sc 100)( L8 s/ C/ G+ o, @0 z; C8 {0 v
  1349.       (setq x0  1188)7 C2 I2 H# o8 N8 H1 f1 N
  1350.       (setq y0  840)
    ; w/ y* R( [% U& _! k
  1351.   (setq x0 (* mv_sc x0) : e+ j0 y$ X7 U$ P% x
  1352.         y0 (* mv_sc y0)  )# _* A3 @" s7 w* e! @; ^
  1353.   (command  
    " b0 Q' p8 [! F. g
  1354.     "LIMITS" "0,0" (list x0 y0)
    ' x0 l# z6 T# L+ p  }5 j" q
  1355.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"
    1 R& r! o! Y3 o) C4 D4 P' m
  1356.     "RECTANG" "8000,2000" "@108800,80000". ^, q( f; ]# }9 n
  1357.     "RECTANG" "8800,2800" "@107200,78400", `( x9 d2 ~7 N8 F7 t2 y( @
  1358.     "ZOOM" "_a"  ))
    ' l9 `* ]/ d) {" G9 i4 J! D

  1359. * e; I5 U9 \: [' E+ m( i
  1360. ;=====================================================================7 `- ^1 J9 ]8 y% q8 |) ]6 J
  1361. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================/ r# V4 z# ]" y) @& B
  1362. ;=====================================================================; g2 V& r5 {8 X, C' @
  1363. (defun c:khogiay (/ oldlst a b c d e f g h kho TL)
    * n, s6 V7 N, @9 W1 F
  1364. (command "undo" "be")
    , k, a6 Y9 J2 k: @' V2 Z
  1365. (setq oldlst (mapcar 'getvar (list "CMDECHO" "OSMODE" "cecolor")))6 I1 k  m7 M  B! Z1 T: W' r
  1366. (setvar "CMDECHO" 0)
    " d# I4 O. J( b% K7 y$ Y1 W
  1367.     (setq a (getpoint "\n chon diem chen :"))
    : p( g1 u) b; c0 u% @! ^2 ]
  1368. (if (not TL) (setq TL 1.00))6 j- U( l( [2 I( M" d; u' C+ u9 S7 M
  1369. (setq TL1 (getDIST (strcat "\nScale <" (rtos TL 2 2) ">:")))
    / w  L  _4 E9 T. T$ g; g- T/ ?
  1370. (if TL1 (setq TL TL1))* a- M6 M8 z' X0 s# P5 X' b
  1371. (setvar "osmode" 0)
    : A0 F7 q" U+ t2 d' r$ s
  1372. (if (not (tblsearch "layer" "Defpoints")) (Command "layer" "N" "Defpoints" "")), Z2 {: z9 {' a
  1373. (initget "0 1 2 3 4")
    4 M% @( _3 j5 O3 X
  1374.        (setq kho (getkword "\Kho A0 _ Kho A1 _ Kho A2 _ Kho A3 _ Kho A4 [0/1/2/3/4]? <0>:"))6 {8 e3 K) f7 Z% Z4 @; H5 j
  1375. (if (= kho "0")
    4 T6 X- o( V9 V, z
  1376.      (progn
    . F8 S$ a% A* s' [* E% d
  1377.              (setq b (polar a 0 (* TL 1189)))
    0 e5 @$ t! K9 e6 u
  1378.                      (setq c (polar b (/ pi 2) (* TL 841)))  [2 A# q5 F4 y; c5 I8 j
  1379.                      (setq d (polar a (/ pi 2) (* TL 841))): H6 S( C! D1 j5 O3 J
  1380.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))
    1 ?% \# T8 ?1 \& A1 b
  1381.                      (setq f (polar e 0 (- (* TL 1189) (* TL 24))))# s% t" i9 U9 x) i2 D: J
  1382.                      (setq g (polar f (/ pi 2) (- (* TL 841) (* TL 24))))9 ^8 J" s' x& _
  1383.                      (setq h (polar e (/ pi 2) (- (* TL 841) (* TL 24))))  k" }' I0 H  T8 G
  1384.   (command "Pline" e f g h "c")            3 g+ e4 ~: }/ e
  1385. (command "change" "last" "" "properties" "layer" "0" "")
    , z5 @/ N0 f: m+ y* L
  1386. (setvar "cecolor" "4")
    3 \; o# I  ^' w! Q; i0 I
  1387.   (command "Pline" a b c d "c")
    ' i8 r; f$ ~( @, {, d
  1388. (command "change" "last" "" "properties" "layer" "defpoints" "")))    7 }& z. R$ v- E$ j
  1389. (if (= kho "1")0 B( k% A# G" c
  1390.      (progn5 a2 E# ~. N! O
  1391.              (setq b (polar a 0 (* TL 841)))
    9 N5 g- F) ~6 t
  1392.                      (setq c (polar b (/ pi 2) (* TL 594)))
    9 q: I4 \9 V* p# P, g
  1393.                      (setq d (polar a (/ pi 2) (* TL 594)))% k% q6 }' ^* p# z1 M
  1394.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))
    # w/ s% k& w* u3 y+ H3 I2 V
  1395.                      (setq f (polar e 0 (- (* TL 841) (* TL 24))))
    # e. z$ k* M" a) t( K
  1396.                      (setq g (polar f (/ pi 2) (- (* TL 594) (* TL 24))))2 Q% r! H. X/ s4 U
  1397.                      (setq h (polar e (/ pi 2) (- (* TL 594) (* TL 24))))- L0 s! ?, C) N  o
  1398.   (command "Pline" e f g h "c")            2 q2 J. w) K) ~( t0 g
  1399. (command "change" "last" "" "properties" "layer" "0" "")- E( k8 x& a( Y5 l( @
  1400. (setvar "cecolor" "4")! P) i% X. Z* z/ w& }# d) d% W' ^
  1401.   (command "Pline" a b c d "c")) F$ d5 V+ p( n' h
  1402. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    8 W4 |; ]. ^$ P
  1403. (if (= kho "2")2 h* L2 z, U! R& X3 _) c
  1404.      (progn/ s2 K( z  ^$ e3 m
  1405.              (setq b (polar a 0 (* TL 594)))
    : T% G- |  J  K7 N* C1 ~
  1406.                      (setq c (polar b (/ pi 2) (* TL 420)))
    ) q$ s+ l5 w7 T) `$ ?6 c8 G! M
  1407.                      (setq d (polar a (/ pi 2) (* TL 420)))
    3 R' n0 c4 L8 G
  1408.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))
    7 M. k; H0 N5 k8 F
  1409.                      (setq f (polar e 0 (- (* TL 594) (* TL 20)))); M- E! m& L8 w- ~# l/ Y8 P( E
  1410.                      (setq g (polar f (/ pi 2) (- (* TL 420) (* TL 20))))+ A, V. x; D. x6 ~6 x4 h
  1411.                      (setq h (polar e (/ pi 2) (- (* TL 420) (* TL 20))))
    & |. g4 w/ }2 [* l$ D
  1412.   (command "Pline" e f g h "c")            
    $ D% `; ~- c; n# A  g( J9 A  j  L
  1413. (command "change" "last" "" "properties" "layer" "0" "")
    ) k+ S( s4 D9 c- ^
  1414. (setvar "cecolor" "4")
    2 ?2 h3 o5 {6 G0 T
  1415.   (command "Pline" a b c d "c")1 M+ ?5 R" g* K4 i6 b2 G
  1416. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    : }# {! m1 x+ p% u
  1417. (if (= kho "3")
    " c/ [# P, X. ]2 o
  1418.      (progn
    $ K1 A+ U; s3 v6 d1 H
  1419.              (setq b (polar a 0 (* tl 420)))
    ) O* N5 l$ i  U" {
  1420.                      (setq c (polar b (/ pi 2) (* TL 297)))$ [. O: c, ~/ [3 D9 Q
  1421.                      (setq d (polar a (/ pi 2) (* TL 297)))( M0 Z1 A$ X1 Y/ h+ m9 p, n; s
  1422.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))" c- T0 w3 T( ]: i' ?, o
  1423.                      (setq f (polar e 0 (- (* TL 420) (* TL 20))))$ E7 U3 w1 {4 p" u# l
  1424.                      (setq g (polar f (/ pi 2) (- (* TL 297) (* TL 20))))
    . q) G8 o3 u( U" ?7 T
  1425.                      (setq h (polar e (/ pi 2) (- (* TL 297) (* TL 20))))& S& p0 \) k5 Q8 M! W6 }3 r* }
  1426. (command "Pline" e f g h "c")
    ' [6 ?0 N+ Z7 |: ~2 _5 ^
  1427.   (command "change" "last" "" "properties" "layer" "0" "")
    , w* h& ~4 I9 m
  1428. (setvar "cecolor" "4"), u  h* f7 U. S+ P
  1429. (command "Pline" a b c d "c")
    , U+ G/ |0 m* ?1 Q$ M1 |+ O. l
  1430.   (command "change" "last" "" "properties" "layer" "defpoints" ""))), d' U+ |/ y3 m( J" w/ D5 x; W4 S/ h+ E
  1431. (if (= kho "4")
    3 o' j  m- s3 @! n6 k9 P
  1432.      (progn# G6 B9 [, {8 n, T8 B. S
  1433.              (setq b (polar a 0 (* TL 297)))
    ! o. S& I0 S/ _- G
  1434.               (setq c (polar b (/ pi 2) (* TL 210)))) {( h2 t0 c8 m& j7 X. w/ ~
  1435.                      (setq d (polar a (/ pi 2) (* TL 210)))
    , |& e$ u* C% K1 \) c
  1436.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 81)))))+ @3 z5 _( w7 h( V
  1437.                      (setq f (polar e 0 (- (* TL 297) (* TL 18))))
    - f- L' Y4 q( }6 F
  1438.                      (setq g (polar f (/ pi 2) (- (* TL 210) (* TL 18))))
    " t% M. ^1 E# @* N! _) f
  1439.                      (setq h (polar e (/ pi 2) (- (* TL 210) (* TL 18))))( \! f* K- f+ ?& [1 d5 o: p
  1440.   (command "Pline" e f g h "c")            ; h0 J2 ?" x3 a
  1441. (command "change" "last" "" "properties" "layer" "0" "")- r, z8 W7 x/ g
  1442. (setvar "cecolor" "4")0 Y' s* {" f0 T
  1443.   (command "Pline" a b c d "c")
    & h, o' e5 V' f  b& }7 ^
  1444. (command "change" "last" "" "properties" "layer" "defpoints" "")))2 F3 z. T1 y& {( A9 Z2 i
  1445. (mapcar 'setvar (list "CMDECHO" "OSMODE" "cecolor") oldlst)7 i$ E1 z$ @/ p+ i0 K
  1446. (command "undo" "e")# a- @! y$ }1 C3 T) K$ t
  1447. (princ))9 u) t, h$ Z6 W+ \, o) ?: }
  1448. ;=====================================================================8 E+ w* T+ e; W! T( A( d
  1449. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================8 d/ j$ z; c  {& ?, C/ F
  1450. ;=====================================================================3 I9 p' t( Q1 [9 ]* t% ^' R7 I* ~  }
  1451. ! m- c  c$ `; {/ V4 O
  1452. ;=====================================================================& Y( B( q2 I/ J
  1453. ;===================DAT Ti Le Theo KHO GIAY BAN VE====================. S7 z  l3 E  T: t8 V4 X
  1454. ;=====================================================================
    1 O& m* Q( \" `9 Z
  1455. ; q  l' |5 K( Z0 o$ l+ ~
  1456. (DEFUN C:SA6 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.1" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""2 w) ^1 J1 N+ ?& F8 |
  1457.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.3" ""6 S0 a# C; h' M: t% o
  1458.                                            "M" "MANH" "C" "9" "" "Lw" "0.1" ""1 @" i0 \" V, e& T  O. J9 m& j7 l
  1459.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""( e2 J* A+ b( Z6 @0 i1 Q
  1460.                                        "M" "DIM" "C" "1" "" "Lw" "0.12" ""
    . i. y5 u8 W7 l; y; A
  1461.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""
    ; n0 W4 m2 X6 B! o# I8 j7 c
  1462.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.12" "") M# j1 z4 v( ~3 C& M
  1463.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""
    ( i# G5 a0 v& K1 r9 J- G6 Q. h1 Z5 j% j
  1464.                                        "M" "COT" "C" "1" "" "Lw" "0.3" ""
    0 d. P" j5 G: R) H
  1465.                                        "M" "Defpoints" "C" "7" ""6 E5 |6 `2 D4 f* `, u8 e- `0 L  b
  1466.                                        "M" "0" "C" "3" "" "Lw" "0.12" ""! [0 P7 I# o  q2 r% R2 U! H( D; g
  1467.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""8 b/ K* u2 O1 q0 z, E1 `
  1468.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    7 p& u3 W/ \1 z! \/ Q7 P
  1469.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.1" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "3" ""))9 r3 O  n" b1 Z0 f# y& L
  1470. (DEFUN C:SA5 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.12" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "10" ""  w* {: d+ e+ g: j: h( Y
  1471.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.4" ""# }. C4 Y6 v# |5 P) S' g
  1472.                                            "M" "MANH" "C" "9" "" "Lw" "0.12" ""' t- ?" t7 [8 e% B! ?7 P( J$ y
  1473.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""% q  {8 R* ~$ |
  1474.                                        "M" "DIM" "C" "1" "" "Lw" "0.2" ""9 q+ d) _1 ^4 G: {9 ~; @4 k. Y
  1475.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""! p" I6 J" T& p- D$ \* l: K
  1476.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.2" "", C8 B- f4 R  p
  1477.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""; |8 T$ J/ m3 ]: ~
  1478.                                        "M" "COT" "C" "1" "" "Lw" "0.4" ""
    . m! \+ p( O5 \9 K* t8 G5 V
  1479.                                        "M" "Defpoints" "C" "7" ""; c# q( d  U  j% S0 ]
  1480.                                        "M" "0" "C" "3" "" "Lw" "0.2" "". ]) x/ J( O% w3 e1 D
  1481.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""
    ! M; r; _) G. i# ?+ _. d! Z# S
  1482.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""/ w% M, @4 A1 T# u
  1483.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.15" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "5" ""))+ z' @/ m/ N" e. X( x5 ]7 |
  1484. (DEFUN C:SA4 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.2" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "20" ""
    " N6 k- x1 u  a5 H6 H
  1485.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.6" ""
    ( [, @4 D. W9 g) I! c- m& t, ^2 H
  1486.                                            "M" "MANH" "C" "9" "" "Lw" "0.2" ""
    * G6 r1 a9 t$ w: v( B
  1487.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""
    ' e& o. R8 T* ?; @
  1488.                                        "M" "DIM" "C" "1" "" "Lw" "0.25" ""( d" ^1 o) w' X* T' X2 _
  1489.                                        "M" "THAY" "C" "7" "" "Lw" "0.35" ""
    * n5 i9 G! I4 h& C2 y
  1490.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" """ X) @9 r) a( N# M
  1491.                                        "M" "HATCH" "C" "5" "" "Lw" "0.15" ""3 C0 h: H9 [! i
  1492.                                        "M" "COT" "C" "1" "" "Lw" "0.6" ""! O2 @& o$ t* B0 O3 Z* J* w
  1493.                                        "M" "Defpoints" "C" "7" ""& Z. X! h$ J3 j7 ]; w* S
  1494.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""$ k0 u1 c) _0 s1 ~
  1495.                                        "M" "CUA" "C" "6" "" "Lw" "0.25" ""
    * N9 D6 z( n8 b+ c9 H
  1496.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.25" ""
    ( ]& |( @: P8 p8 V
  1497.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.2" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" ""))
    6 U" f4 }" n4 S( L
  1498.         
    1 X; b0 n- o* b3 n3 U
  1499. (DEFUN C:SA3 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "30" """ {3 @  }4 Q; o
  1500.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""4 c+ l& m  ?" c9 L) {  \
  1501.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    . x# V, A: `* Z/ c. K
  1502.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""
    , A% D4 Y9 @$ C8 V
  1503.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""% h* l, d% I! n8 X, H8 l, [3 x
  1504.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""1 A1 e( Q- K2 Q3 m7 ?
  1505.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""7 ?+ k  Y2 S! _1 w
  1506.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    % X7 W: s! G% M7 E$ m- k6 [
  1507.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""- I/ P! T5 R) ]! E
  1508.                                        "M" "Defpoints" "C" "7" ""
    ! q1 @. c8 n4 u% Z
  1509.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""- D* `4 T- |2 E6 _9 v- A% t
  1510.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""
    . b9 m$ e# E! ?# K2 [4 |2 h
  1511.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""
    ' r7 C% S- @- {/ B5 {9 e. f- r0 I
  1512.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "20" ""))(PRINC)
    & J4 w" N, c! H5 H9 R  j2 G5 x
  1513. 4 p& z# M9 W, X" d
  1514. (DEFUN C:SA2 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "45" ""5 _$ ]6 d" v: H  j3 r" ]% T
  1515.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""
    " ?6 H' R3 m( B, z5 i0 y
  1516.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    , g, T) h' u2 K4 H. q
  1517.                                        "M" "TEXT" "C" "7" "" "Lw" "0.25" "") ?2 R6 ^8 J! |  g# p) z  T
  1518.                                        "M" "DIM" "C" "1" "" "Lw" "0.3" ""& E( f5 h7 H: U
  1519.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""
    ( J+ r& ~6 T7 D; o- c! a. h' U, Y
  1520.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.3" ""
    # T( L' l2 D  ^# @
  1521.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    5 C" A) Y& ]- S+ s
  1522.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""
    ' q$ R+ p9 O6 C( b- E6 R
  1523.                                        "M" "Defpoints" "C" "7" ""$ v/ F/ c  j. H
  1524.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    & t/ K. e+ Q; R  v- i( i4 s* X
  1525.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""
    4 \6 E4 R% w9 f
  1526.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""  y# S  `7 J8 D0 [$ a. m1 w0 l# g
  1527.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "30" "")); [% ]1 p5 W5 V2 z  M( K

  1528. 3 Z9 v3 K- S2 b4 r2 X3 C+ N
  1529. (DEFUN C:SA1 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.4" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "60" ""
    , x  j" {4 o' a- H* \  L8 x
  1530.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.85" ""% X$ X, S$ T" w
  1531.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""9 K8 \1 ]" Z+ C, n
  1532.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    ; f: a( A. A6 i5 i
  1533.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""8 ~4 z: E' _; Q2 I% ?" k
  1534.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""7 o2 q2 T+ k* {" D& y3 f; l
  1535.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.35" ""' b# Q( K. B+ X1 h1 k' Y& R3 H* W
  1536.                                        "M" "HATCH" "C" "5" "" "Lw" "0.25" ""
    ' D' N+ O. \# h2 Q' F) f  s- e
  1537.                                        "M" "COT" "C" "1" "" "Lw" "0.85" ""2 `# _8 q! a) s# Z# A0 G+ _
  1538.                                        "M" "Defpoints" "C" "7" "", h, q. G( z. P
  1539.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    2 T: H2 w: A+ p0 }! @4 C9 h
  1540.                                        "M" "CUA" "C" "6" "" "Lw" "0.4" ""5 _. s, }4 M: `6 K3 b, r- K$ r
  1541.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.35" ""6 w- f5 W; C. S( `5 i* F" A% u
  1542.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.3" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "40" ""))1 i: j0 A& \$ X% j/ Y  V
  1543.         
    8 S7 v, o  z/ \! ]. ^0 b# r% N
  1544. (DEFUN C:SA0 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.5" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "85" ""2 }$ s7 e& `& l- O) D1 }' J( g! d- C
  1545.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1" ""
    ( }' {' a" {: [! U, |. ^
  1546.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" "". |0 a9 e4 E0 \5 h6 \1 T# ?4 M
  1547.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""2 Y# s0 J+ ^9 U
  1548.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    5 ]+ m# [; U" ], R" ~- T
  1549.                                        "M" "THAY" "C" "7" "" "Lw" "0.5" ""
    & Z/ c+ g$ d- T  Z' j7 e; n
  1550.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.4" ""
    5 _. Q2 b7 V8 l" |7 p) {7 O  D( j6 @
  1551.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""
    ( B: @. J9 I2 q" P9 z
  1552.                                        "M" "COT" "C" "1" "" "Lw" "0.1" ""+ B1 r9 o7 l) [$ c8 y5 v
  1553.                                        "M" "Defpoints" "C" "7" ""
    " h; w- b& r- `/ X, s
  1554.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""0 ~  t2 E, |2 N  T! u/ W
  1555.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""$ a$ |3 ~8 A( |% A. k  i
  1556.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.4" ""
    8 j; ?8 U2 N% y6 K/ w
  1557.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.35" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "55" ""))
    . k6 {% q, j+ l: s% E
  1558. (DEFUN C:O   () (COMMAND "OFFSET"))
    6 M2 [: j/ ~7 k* F7 p6 R
  1559. (defun c:s1 () (command "surftab1"))
    1 r- V  q; q1 I0 D) o+ m
  1560. (defun c:s2 () (command "surftab2"))$ ^2 b  T! @# Q4 h  K0 W/ A
  1561. (defun c:ep () (command "explode"))
    . X: j& l9 |; V& Q* u. z
  1562. (DEFUN C:QS () (COMMAND "AUDIT" "Y" "purge" "all" "*" "N" "QSAVE"))
    2 M4 t9 I/ g& p  V3 x3 y- N; q
  1563. (DEFUN C:QV   () (COMMAND "QSAVE"))
    7 I& T- j" W! V1 h8 t, t9 G  M) @
  1564. (DEFUN C:S    () (COMMAND "STRETCH" "C"))8 O, O+ l: @  w  p& ]( j4 |+ @

  1565. 1 }- S5 M: @0 m6 N" m! ]/ L- b
  1566. ;************************** CAT DIM **************************
    : @  @( y  L* I9 ]. S0 h' l5 w/ w8 ]/ f9 [

  1567. 0 Z/ T/ Q$ R# k$ N& p
  1568. (DEFUN C:DC (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I  I8 C( ?+ C7 T5 K% o. Q5 z; ^
  1569.                 PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)' [2 _% @# ~/ j+ U. b4 S' g
  1570. (SETQ CMD (GETVAR "CMDECHO"))
    1 |$ y. X$ A, E% Y8 {
  1571. (SETQ OSM (GETVAR "OSMODE"))/ O" r7 I( d+ X! g+ w
  1572. (SETQ OLDERR *error*! r- w; P+ r+ o! u4 |! h3 p5 H
  1573.       *error* myerror)$ @$ E! C- o, j, X. |. Q
  1574. (PRINC "Please select dimension object!")/ P6 b5 f6 G$ u2 J% ^! G
  1575. (SETQ SS (SSGET))
    3 P/ u. P) t7 I7 V4 |: }4 @) c, }
  1576. (SETVAR "CMDECHO" 0)+ q. Y' i7 `! c# G
  1577. (SETQ PT (GETPOINT "Point to trim or extend:"))
    & m# D6 e. b% U2 T' K
  1578. (SETQ PT (TRANS PT 1 0))& L' H1 [: W5 @2 U' c' v
  1579. (COMMAND "UCS" "W")
    ; Q2 p  X* m$ U" a
  1580. (SETQ LTH (SSLENGTH SS))
    1 N# z* M3 U. W7 W
  1581. (SETQ DEM 0)% v- U9 X5 f) B, K7 P% |; y# M* n
  1582. (WHILE (< DEM LTH)
    5 v* o: j! Q! @: g7 N2 K
  1583.     (PROGN' g  @( v. P3 N- q& r4 t
  1584.         (SETQ DS (ENTGET (SSNAME SS DEM)))6 S8 N9 T2 t1 P
  1585.         (SETQ KDL (CDR (ASSOC 0 DS)))0 d( [( {7 o" W  S, |- s1 U
  1586.         (IF (= "DIMENSION" KDL)
    5 H/ f3 L9 E- A) W; a  T$ r
  1587.            (PROGN
    ) V/ P0 D# y! C5 j/ G
  1588.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    + w! h+ r, m" U" e% U
  1589.                 (SETQ PT11 (CDR (ASSOC 11 DS)))& x* q' k8 x* G8 g, q! }% [6 _
  1590.                 (SETQ PT13 (CDR (ASSOC 13 DS)))3 n2 |! \% P+ s1 H# t. t
  1591.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    ; Y: m' }/ ]5 e/ s
  1592.                 (SETQ N70 (CDR (ASSOC 70 DS))), {+ j( ?1 W& Q4 \4 x
  1593.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
    0 ^! @3 k: ^3 S4 p1 k, o
  1594.                    (PROGN
    ( B4 e- ]8 B1 J6 k* H
  1595.                         (SETQ GOCY (ANGLE PT10 PT14))
    & P# N0 n( `$ A; }' A' W  N% y# @
  1596.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    4 ^/ z2 U* H2 D# r' b/ a1 e
  1597.                    )0 x  [) p$ a) z8 Q
  1598.                 )2 R; \* r% t' @
  1599.                 (SETVAR "OSMODE" 0)
    / y( v" Z' Z5 s  K% U
  1600.                 (SETQ PTI (POLAR PT GOCX 2))% ~* y+ R/ _/ C1 d0 }
  1601.                 (SETQ PT13I (POLAR PT13 GOCY 2))
    $ ?' b# ^3 `( P1 f- M* Q
  1602.                 (SETQ PT14I (POLAR PT14 GOCY 2))
    4 k9 b6 ?$ L2 i0 l+ b# Q9 G# @) T
  1603.                 (SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
    " o" p! G* x6 ]7 F, {
  1604.                 (SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
    3 f5 J( m$ z" b. ^- U- b5 R8 F
  1605.                 (SETQ O13 (ASSOC 13 DS))2 Y1 k2 g7 N+ g: k6 `, E
  1606.                 (SETQ O14 (ASSOC 14 DS))% ~- P8 I% F9 A1 H1 Q# a. m1 k
  1607.                 (SETQ N13 (CONS 13 PT13N))
    # V5 U. e9 c) `) o/ O
  1608.                 (SETQ N14 (CONS 14 PT14N))
    9 W) A: w# u  \" f  U
  1609.                 (SETQ DS (SUBST N13 O13 DS))3 Q, n- ]) r! _, k* i( w6 }  C
  1610.                 (SETQ DS (SUBST N14 O14 DS))% ]& ^) Y" n7 K5 s
  1611.                 (ENTMOD DS)9 C0 Z. n0 i, W0 z! C
  1612.            )
    & U/ q* h. g1 |1 l6 b" S
  1613.         )
    6 h1 D5 ?$ @' E) C9 T: ?" T
  1614.         (SETQ DEM (+ DEM 1))
    + L0 a9 d3 w6 V4 d* ~$ E
  1615.     )
    6 [% x8 r5 r( L! _# X6 p
  1616. )' ^' [+ j$ k* I* R6 L2 T
  1617. (COMMAND "UCS" "P")
    . s7 Q: @- r! B+ {
  1618. (SETVAR "CMDECHO" CMD)
    " t- w5 J/ L0 I! m- i+ s
  1619. (SETVAR "OSMODE" OSM)
    3 \) e+ T; Y: E& L! _- {
  1620. (setq *error* OLDERR)               ; Restore old *error* handler
    : R$ B: h$ I9 ]& m( Q' _
  1621. (PRINC)
    ' P) W' N$ s6 g: I
  1622. )
    $ P: G+ \  ?+ t: F" n

  1623. 5 r' s5 a  {; K0 ?( T4 l
  1624. (DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI! J2 [8 E8 V, P. h' v) W& ]8 b
  1625.                 PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
    & }7 T% I( H5 k; f4 J. F
  1626. (SETQ CMD (GETVAR "CMDECHO"))
    3 S: M' |% Z5 E* K% r9 k/ I9 [
  1627. (SETQ OSM (GETVAR "OSMODE")); y3 [6 {; v- D" ^- u
  1628. (SETQ OLDERR *error*- [3 n' S" I5 s& k9 W2 g4 l: U# c
  1629.       *error* myerror), h4 H5 P$ m' d
  1630. (PRINC "Please select dimension object!")
    : i- M/ q2 Y2 H2 D. Z; n
  1631. (SETQ SS (SSGET))
      }: L- c' W, v- M2 q: I# {
  1632. (SETVAR "CMDECHO" 0)
    ) [; n0 x- o/ ]& _5 w, q, @3 n
  1633. (SETQ PT (GETPOINT "Point to trim or extend:"))6 j9 x9 H* Y0 m* D9 v3 T% k
  1634. (SETQ PT (TRANS PT 1 0))6 {2 f. p5 I2 ?& p: o, b+ k
  1635. (COMMAND "UCS" "W")5 q7 u) }, m; s/ p, {
  1636. (SETQ LTH (SSLENGTH SS))% M, ^8 \# K& f/ m' J
  1637. (SETQ DEM 0)! z9 [' F6 Z, {
  1638. (WHILE (< DEM LTH)
    : T9 A; M! `2 @5 q( @; I
  1639.     (PROGN# {4 Z1 e3 K! n- d( w# r
  1640.         (SETQ DS (ENTGET (SSNAME SS DEM)))
    + ^. m6 B6 r8 G
  1641.         (SETQ KDL (CDR (ASSOC 0 DS)))+ d% f! `0 h& P. j& k
  1642.         (IF (= "DIMENSION" KDL)6 q8 H5 N/ G; i: V0 f
  1643.            (PROGN
    ( @6 M6 q8 S5 z% t6 v% W% u
  1644.                 (SETQ PT13 (CDR (ASSOC 13 DS)))
    6 S7 A4 m! H, `0 m4 Y4 F. f7 B
  1645.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    . c0 s! J  y* c* C0 ~; M
  1646.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
      A. o* ?. H0 Y( B8 G+ w% o
  1647.                 (SETQ PT11 (CDR (ASSOC 11 DS)))( T' e3 @9 T9 U, X9 [' }6 O
  1648.                 (SETQ N70 (CDR (ASSOC 70 DS)))4 R$ C7 r5 ~1 ~& F9 g1 j8 V
  1649.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))! o' C8 @6 n, I/ ], A2 B6 Z8 {7 S0 q+ e
  1650.                    (PROGN* g' y% _* V1 [5 c
  1651.                         (SETQ GOCY (ANGLE PT10 PT14))# s. J! T0 K3 c- k3 E7 r% P$ z
  1652.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    + J, C  F( |+ U& t2 K9 @" ]
  1653.                    )& p3 t  K3 L1 `0 g- d
  1654.                 )
    1 N9 C' Y8 n. {8 b
  1655.                 (SETVAR "OSMODE" 0)
    0 @, p9 _- F' Q0 k0 r! g4 b; [  G
  1656.                 (SETQ PTI (POLAR PT GOCX 2))% V: O* C$ v8 p$ C
  1657.                 (SETQ PT10I (POLAR PT10 GOCY 2))
    ) I6 z/ V+ h" D+ i0 A
  1658.                 (SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
      S  P1 p5 O0 ^( I0 A
  1659.                 (SETQ KC (DISTANCE PT10 PT10N))
    ( u% ^7 T: z3 W  O" _
  1660.                 (SETQ O10 (ASSOC 10 DS))3 c4 s* H2 z* T/ ]4 x
  1661.                 (SETQ N10 (CONS 10 PT10N))
    4 v; ]+ f1 o8 `. ?: T5 e
  1662.                 (SETQ DS (SUBST N10 O10 DS))" I, U4 L& A1 |$ |4 F) a
  1663.                 (SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
    : V1 G8 \, p( W3 L* y& p" u
  1664.                 (SETQ O11 (ASSOC 11 DS))' p& U* w! ~* t1 y" Z! w# {, l4 }) j
  1665.                 (SETQ N11 (CONS 11 PT11N))
    ' R9 m1 B# S% ~. h2 C! V2 Z
  1666.                 (SETQ DS (SUBST N11 O11 DS))
    ; d. d& k  }1 R/ ?: F* }2 y
  1667.                 (ENTMOD DS)7 @1 h; f2 n+ X. V- K; B9 _; b
  1668.            )8 H: U9 M3 ^6 m6 O1 H) V
  1669.         )* b2 k- R# h2 U) C/ a# {
  1670.         (SETQ DEM (+ DEM 1))& ^: v) E, i# S
  1671.     )
    " I% l3 A, h8 U; X' L" y# X; d
  1672. )
    1 t' p. x$ B' D7 e) y. t% d
  1673. (COMMAND "UCS" "P")
    0 G2 ^; q' P7 P  B0 |
  1674. (SETVAR "CMDECHO" CMD)0 Z* b1 P1 i* G: B- s  v
  1675. (SETVAR "OSMODE" OSM)
    " z5 o: `% i0 Y/ _) K; m
  1676. (setq *error* OLDERR)( S0 z- ?; H7 r1 f4 y
  1677. (PRINC)
    : T. c1 }9 \, G6 q; n5 y
  1678. ); r( \$ o2 E- Y. Z% `
  1679. ) }/ V' Q2 z: r" v& i& r$ _
  1680. ;;; ================ BAT - TAT CHE DO GACH CHAN TEXT (TU) =================4 M2 Q, r3 N4 O/ A$ q  G. J+ q* p+ S

  1681. 0 X, g4 z4 y4 u# X0 D
  1682. (defun c:tu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can gach chan ")2 x6 P( E+ ^4 q' I8 l: p/ A$ G
  1683.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")
    7 t( J1 [0 ~9 D' p, W1 [% j" M
  1684.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt3 k+ w0 e, e, U/ Z2 e; T
  1685.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))4 v, a0 M0 J, m" R4 S
  1686.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%u")
    + ]* b/ t8 H' r7 r5 w
  1687.         (= testxt "%%U"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%u" txttxt)))
    6 O  f+ L9 R4 S; O
  1688.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))# b. X  @' z3 G- Q' ~
  1689.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))1 b/ [4 Q, g/ h5 O  c: e# _
  1690. 6 z( b/ G' W3 M
  1691. ;;; ================ CHEN COT (TUU) =================
    ' m7 t6 r- Y' T, r; V

  1692. : f) Z1 z1 D8 H  @/ i
  1693. (defun c:tuu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen cot ")5 j, f  |5 \' B& f
  1694.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")* K! Q+ ]7 |5 G- u: |- J4 B, H) j
  1695.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    . z$ _% o1 g2 W. _5 p  c% P
  1696.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    3 z) w7 f( V+ n6 S
  1697.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%p 0,000"); R9 w. v6 }8 R/ c2 c4 p
  1698.         (= testxt "%%P 0,000"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%P 0,000" txttxt)))  }) M2 i8 B* |: R0 a3 n
  1699.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))
    8 o2 j! E" ], k7 z0 I/ k4 s
  1700.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))" e; j$ l* U) h7 J  ^
  1701. & z* u; h- H- _1 S( w
  1702. ;;; ================ CHEN KY HIEU THEP (TP) =================
    ! U' [* b, ~3 r- Z; T
  1703.   J! }8 }5 W* y; x" \
  1704. (defun c:tp ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen ky hieu thep ")1 y- u& V8 f: b3 ^* C
  1705.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")) L. x/ f0 q3 o7 m; [# e
  1706.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    # u3 h( @# @1 \( L: k
  1707.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    6 `- z: ~( z; N
  1708.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%c")
    % D, F; y1 l) j# i: H
  1709.         (= testxt "%%C"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%c" txttxt)))
    ; c" A- k0 L5 X! a: Y0 C
  1710.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt))). g: b3 t3 c* M
  1711.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    7 S6 T. h0 C# G8 Z" \# w/ f

  1712. : \- w3 L5 @' q& b: i- m
  1713. ;=========================== TAM TUONG (TAM) =================================
    $ ~1 R; p# h; h+ h
  1714. 0 f* \# X) M7 n  }- b8 E9 D
  1715. (defun c:tam(/ data_m)
    5 v& `$ B9 t* q2 }
  1716.             (defun import_data(/ i)(setq data_m (ssget))(if (= nil distan_m) (setq distan_m 110.0))
    ' |8 i! c. M* v- J2 G, s( o
  1717.             (princ "Distance (")(princ distan_m)(princ "):")(setq i (getreal ))(if (not (= nil i))
    ( K! y( R$ e& ]4 s( A1 h5 B0 n) O
  1718.         (setq distan_m i)))(defun process(/ ent check)(defun p_check()(setq check 0)
    / j% j9 ~4 q+ H% H8 ?# h: n
  1719.         (if (= "LINE" (cdr (assoc 0 ent))) (setq check 1))(princ))(defun p_d_offset& z1 y2 B; f3 i% m8 Q6 {" n) Y
  1720.         (/ p1 p2 p3 p4)(defun makeline(/ e2 e5)(setq la (list (cons 0 "LINE")(cons 5 (cdr3 [2 \+ q& n5 [* G) g' J
  1721.         (assoc 5 ent)))(cons 8 (cdr (assoc 8 ent)))(cons 10 p3)(cons 11 p4)))(entmake la)(princ)
    + Y$ }$ H3 Z. g+ s
  1722.         )(setq p1 (cdr (assoc 10 ent)) p2 (cdr (assoc 11 ent)))(if (not (= p1 p2)) (progn (if
    0 W3 c: Q# a+ S2 r" f3 E5 g  l
  1723.         (< (abs (- (nth 0 p1) (nth 0 p2))) 0.000001) (progn (setq p3 (list (+ (nth 0 p1)7 {5 z2 _. P# O
  1724.         distan_m) (nth 1 p1) (nth 2 p1)))(setq p4 (list (+ (nth 0 p2) distan_m)(nth 1 p2)
    + A# Q& e5 N6 u
  1725.         (nth 2 p2))) (makeline) (setq p3 (list (- (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1)))# P7 F* ^, B% j. U5 d
  1726.         (setq p4 (list (- (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2))) (makeline)))(if (<
    ; E1 \0 z# Y! B. J& E
  1727.         (abs (- (nth 1 p1) (nth 1 p2))) 0.000001) (progn (setq p3 (list (nth 0 p1) (+ (nth 1 p1)
    ' ~- e! A0 B; G4 E
  1728.         distan_m) (nth 2 p1)))(setq p4 (list (nth 0 p2) (+ (nth 1 p2) distan_m) (nth 2 p2)))6 H  ^* w3 G. D& t
  1729.         (makeline) (setq p3 (list (nth 0 p1) (- (nth 1 p1) distan_m) (nth 2 p1))) (setq p4
    9 u; G1 ?0 q1 A( n% L" @& [, K" G9 ?5 n
  1730.         (list (nth 0 p2) (- (nth 1 p2) distan_m) (nth 2 p2)))(makeline)))))(princ))(if (not2 V0 \7 n* C. ^( b- s
  1731.         (= nil data_m)) (progn (setq i 0)(while (< i (sslength data_m)) (progn(setq ent (entget
    1 d) ^9 X6 D! }5 [$ I; z& s& U
  1732.         (ssname data_m i)))(p_check)(if (= 1 check) (p_d_offset))(setq i (+ i 1))))))(princ))
    6 z' [8 z1 O0 @7 ^' p! `. o
  1733.           (import_data)(ai_undo_push)(process)(ai_undo_pop)(princ))0 P. ~' Z" K* U

  1734. , q7 ?+ k% t; M' D( G3 }
  1735. ;============ GHI CHU PHI (T1) ================0 p- o& p6 J& Z( `( l( H% H

  1736. ) T# S4 s5 |; ]5 X) V& A" M
  1737. (defun c:DuongDan ()(setq D1 (getpoint " Diem thu nhat: "))(setq D2 (getpoint "Diem thu hai: " D1))
    + f) X2 Z/ M2 `6 ^3 J! Q8 t% ~
  1738.           (if (> (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (< (car D2) (car D1)) (setq D31 S0 D  o5 v6 `3 O$ @+ l  O6 k
  1739.         (polar D2 PI 16)))(if (= (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (> (car D2)
    9 x3 e/ Q6 Z* K& M8 F/ A
  1740.         (car D1)) (setq D4 (polar D3 0 3.2)))(if (< (car D2)(car D1))(setq D4 (polar D3 PI 3.2)3 X# t# Q. Y7 Q- H( B
  1741.         ))(if (= (car D2) (car D1)) (setq D4 (polar D3 0 3.2)))(if (> (car D2) (car D1))
    ! n; `6 r3 s/ {0 V
  1742.         (setq D5 (polar D2 (/ PI 9) 3)))(if (< (car D2) (car D1)) (setq D5 (polar D3 (/ PI 9)7 ^1 \0 h' A" M. G
  1743.         3)))(if (= (car D2) (car D1)) (setq D5 (polar D2 (/ PI 9) 3)))(command "color" 1)7 I2 o4 z8 M% P, u8 o% V: Z
  1744.           (command "line" D1 D2 D3 "")(command "circle" D4 "3.5")(command "color" 7 )4 f4 E- Z, L  s3 C) D
  1745.           (command "text" "m" D4 2.5 0 "1")(command "text" D5 2.5 0 "%%c6a150")
    1 ^5 E* j% L9 J4 v9 I) ^4 B
  1746.           (command "ddedit" pause))
    ) I: i% n, p; U5 G

  1747. & j! u- E# ~! j, s
  1748. ;;; ========================== Join (J) =================
      I) x. e2 r, F7 b" m" Q
  1749. : }& F: I  `! L6 t
  1750. (defun C:J () (Setvar "cmdecho" 0)(setq m:err *error* *error* *merrmsg*)(setq sset (ssget))
    9 }7 t6 Y* t8 ~4 P& i* l+ l3 i# }
  1751.            (if (null sset) (exit))(setq kt (getstring "\nJoin all (Y/N) <Y> ? "))
    # @0 G# N' P2 r8 x
  1752.           (setq ssl (sslength sset))(setq temp  (entget (ssname sset 0))etype (cdr (assoc 0 temp)
    5 s' u/ A3 @0 L
  1753.         ))(cond((or (= kt "Y") (= kt "y") (= kt ""))(progn (cond((= etype "POLYLINE")
    & ^( d" G# v& a) u/ E/ k
  1754.         (COMMAND "PEDIT" sset "J" "all" "" ""))(if (or (= etype "LINE") (= etype "ARC")), k5 S" v+ m; J$ ~7 {
  1755.            (COMMAND "PEDIT" sset "" "J" "all" "" "")))))((or (/= kt "Y") (/= kt "y") (/= kt ""))( [0 B& W. L, l, o; M! Z/ j
  1756.         (progn (cond((= etype "POLYLINE")(COMMAND "PEDIT" sset "J" sset "" ""))  5 H6 J" i. U5 U1 [5 G5 d8 |4 [
  1757.            (if (or (= etype "LINE") (= etype "ARC"))(COMMAND "PEDIT" sset "" "J" sset "" ""))))))3 m' H2 d: u; t. O7 y/ c
  1758.           (setq *error* m:err m:err nil)(princ))
    1 M7 A, @6 F( K' M

  1759.   x9 t7 c; C4 J0 M" ]0 ^
  1760. ;=====================================================================; u4 b- b7 j. G, [# n9 k
  1761. ;;; DOOR.LSP 1.0, Copyright (C) 1998 by CAD Department, HUCE.
    ( U( K6 B# b. d  y: t
  1762. ;=====================================================================
    ' J% ?' [4 w' @# X! ?* |  |

  1763. ' a9 h1 `7 X) Y% Y6 t! f
  1764. (defun C:D1 (/ p1 p2 p3 p4 side dis wid ang angsile old). i2 D8 m  P% n! h1 G9 G
  1765. (setq old (getvar "OSMODE"))
    ; G; s0 n3 V, D* }, F( m
  1766. # i9 Y7 i: i' t$ Q5 F
  1767. (setq p1 (getpoint "\nStart point:"))
    4 C. h  h6 j' s4 n
  1768. (setq p2 (getpoint p1 "\nEnd point:"))
    $ f1 [+ Y* h6 U! z' j" w6 X
  1769. (setq side (getpoint p2 "\nOpen side"))
    ! a+ {' L: l: |
  1770. 9 R" K5 k: F( f$ k6 ^
  1771. (setq dis (distance p1 p2))+ u1 [2 C" Q5 c& S  U
  1772. (setq ang (angle p1 p2))
    9 F) b6 |) y* G4 U5 Y+ X1 F
  1773. (if (< ang (angle p1 side))6 H" a' H7 X# Q1 _
  1774.   (setq angside    (/ pi 2) )
    $ \6 F. o* p; i
  1775.   (setq angside (- (/ pi 2)))" ~% l- u6 E4 J5 o
  1776. ): }0 ~% {$ ?& L* W( D3 o3 F6 c4 s
  1777. (if  (>= (- (angle p1 side) ang) pi)! M- l/ j  U& U7 y$ S+ D! ]
  1778.   (setq angside (- (/ pi 2)))
    # c7 Z) K4 I4 L- H; D6 t
  1779. )
    - }' C5 i( ?9 r; Y8 {5 S$ k
  1780. (if  (>= (- ANG (angle p1 side) ) pi)+ n4 B, q, P- z
  1781.   (setq angside (/ pi 2)), N/ \; g2 F9 c- o  [% U
  1782. )
    : v& \1 L) |. I4 F1 H

  1783. ) q- b5 k) M- g" g/ Q
  1784. (setq p3 (polar p2 (+ ang angside) dis) )5 V& ^; R: P7 O$ H. X6 A" P7 k7 M+ ~
  1785. (setq p4 (polar p1 (+ ang angside) dis) )  o+ H( W, n, X& t6 p; M2 w' A! r
  1786. (setq wid (/ dis 15))+ U% S' L. n1 F" u

  1787. $ j/ L( f5 }/ e! u# |
  1788. (setvar "OSMODE" 0)/ e# H- N, e- |8 I* k% ?4 _9 C
  1789. 9 s% p) v3 h" Z
  1790. (command "PLINE" p1 "A" "D" p4 p3 "L" p2 ! T# v. \: S/ L* U) o) m
  1791.                   (polar p2 (+ ang pi) wid) ( ]9 Z! g8 B: w  P1 C
  1792.                   (polar p3 (+ ang pi) wid)
    7 H# j) Y; A* q0 H* k
  1793. "")
    0 r8 H$ L: z7 G. }6 r0 F9 k
  1794.   q7 R3 k. o% ?0 E) i
  1795. (setvar "OSMODE" old)
    ! C7 ~# u# r) B; x6 h
  1796. (princ)5 ?0 C. {* b. k; G
  1797. )
    , P& ]  U/ z% N5 @
  1798. ! }3 G. W6 ?/ D. k) A5 @, B6 x
  1799. ;=====================================================================' X! D; a* k& c# \0 d8 o

  1800. - x# ~) B% l' }; x, E
  1801. (defun C:D2 (/ p1 p2 p3 p4 side dis wid ang angsile old)
    * B3 x, l% g, l% u9 p. O% F. B  e
  1802. (defun cua1 (pt1 pt2); f$ I. ]0 l9 k9 M% N. q% G. M4 W
  1803.   (setq p1 pt1: ]$ {; G+ n3 L! D/ y, o
  1804.         p2 pt2)
    0 I' i, g2 @5 o% O) H
  1805. * M/ D3 }$ w5 l8 n5 @
  1806.   (setq ang (angle p1 p2))
    . V" S( s+ u; r0 T. H
  1807.   (if (< ang (angle p1 side))/ n) r+ L, d4 X9 A
  1808.    (setq angside    (/ pi 2) )
    + U# b7 b3 {! w, {" Y2 Q
  1809.    (setq angside (- (/ pi 2)))
    0 W" l4 ^" x, S0 Z9 d& S. d
  1810.   )
    8 f! S; X: P' y! C! O
  1811.   (if  (>= (- (angle p1 side) ang) pi)
    9 |9 r% f4 p, D, m" V
  1812.    (setq angside (- (/ pi 2)))
    & v( }( B; Q# H# K
  1813.   )
    1 c( }/ a, ?7 S# u( z( K
  1814.   (if  (>= (- ANG (angle p1 side) ) pi)
    1 ~3 Q4 F: u; ?$ O
  1815.    (setq angside (/ pi 2))
    1 U# s# m7 `; _$ o, u4 h
  1816.   )  O  {; m/ X  y2 n+ p
  1817. 5 k' V0 [) ?7 z; |2 M9 w- K3 C
  1818.   (setq p3 (polar p2 (+ ang angside) dis) )
    + ?" ]0 c* Q2 H# l
  1819.   (setq p4 (polar p1 (+ ang angside) dis) )
    0 F- j# Q% q: u: X$ x: ^' y
  1820.   (setq wid (/ dis 15))7 s) C, C0 Q# R( y

  1821. & ?. }1 `/ T8 z0 c4 ^( f) {. X
  1822.   (command "PLINE" p1 "A" "D" p4 p3 "L" p2 & [# B  D* o) j- [- k* f7 x. l
  1823.                    (polar p2 (+ ang pi) wid)
    5 F$ p: o5 l: |! U
  1824.                    (polar p3 (+ ang pi) wid)
    " H6 a9 d' C7 P4 M6 B3 M
  1825.   "")
      ?' B5 J: H( f' E
  1826. ); [8 V4 A1 |& o3 |0 A" V, w
  1827. ;=====================================================================
    $ g. X9 I9 e4 J, O6 L( {/ F8 ~% K
  1828. (setq old (getvar "OSMODE")) . K9 Y+ \( k+ d) G! }! g
  1829. 9 s1 k$ T  E5 v* B1 W
  1830. (setq p1 (getpoint "\nStart point:"))9 Z' ?3 F4 B: r' ]
  1831. (setq p2 (getpoint p1 "\nEnd point:"))
    * w& L: r: k$ q0 m; F
  1832. (setq side (getpoint p2 "\nOpen side"))
    9 J/ c/ U- H- v

  1833. ) E/ G, G% o+ D
  1834. (setq dis (distance p1 p2))
    # H0 E2 L! X  j7 l
  1835. (setq dis (/ dis 2))2 Y9 C. A/ R/ v; P1 x( ^2 d
  1836. 0 T' _" A' A5 y4 x& d( j; g& d4 {
  1837. (setvar "OSMODE" 0): N7 |" ]) }+ z2 ^

  1838. 7 z0 h+ K( ?/ ]( q$ u( O
  1839. (setq p1 (polar p1 (angle p1 p2) dis))0 r9 r: N) J% d
  1840. (cua1 p1 p2)  
    ! l) {( f" l4 T6 [

  1841. ' Y1 L' @( w& u% i" j$ p8 H7 ~; U
  1842. (setq ang (+ ang pi))
    $ W  h% P4 Z+ i" V8 C& S
  1843. (setq p2 (polar p1 ang dis))
    ! Y9 ^3 d+ |8 g- ^- s2 a1 K
  1844. ; (setq side (polar p1 () dis))
    6 I/ K* r: U9 ?( J) e: F( d
  1845. (cua1 p1 p2)  
    $ \+ L) }/ k4 K+ ?* I. M- F

  1846. ; N% a, _& Q  F! B  z, E
  1847. (setvar "OSMODE" old), j& Q: P* t' x- X
  1848. (princ)
    0 ]* }9 ~" y4 o# L2 `/ F
  1849. )
    3 A# g; T/ W( d$ g' ?

  1850. + y" @( c( f) G: a1 G' F
  1851. ;=====================================================================
    1 ]9 b1 N; ?( b% z$ f
  1852. ;"Glue" text strings.  All adopt first's properties.( y5 O+ s" y% f* C% t1 S. F
  1853. ;        Author:0 J  l* M5 {. ?. n
  1854. ;                Henry C. Francis
    & W8 u, T8 G; R# b9 ]" k
  1855. ;                425 N. Ashe St.
    $ G+ k% T: q! U% h3 k
  1856. ;                Southern Pines, NC 283872 S  {! y6 E: A
  1857. ;        http://www.pinehurst.net/~pfrancis
    ) N2 i/ w4 G3 K" e2 _
  1858. ;        e-mail hfrancis@pinehurst.net
      d9 |1 @$ `  m8 ^! c
  1859. ;        All rights reserved.
    7 x0 i+ u2 f7 E* o; ^, a
  1860. (defun c:gst ( / ename ent1 ent2 old1 oldsl old10 old11 old40 old50 newstr newsl new1 new10 new11)2 ^  t( f+ `/ v# T8 w
  1861. (while0 _; S" x! t4 ^0 E8 A/ q
  1862.   (not2 L3 }' v  p' A0 v$ J) k
  1863.     (and, Q& f3 I( @& g: u# v( T# B
  1864.       (setq ename1 (car(entsel "\nSelect first text string to join: ")))
    5 D6 k% H" L& C1 M* Q2 j
  1865.       (setq ent1 (entget ename1))
    ! P* N1 U: s9 |- \, t& \' I
  1866.       (eq(cdr(assoc 0 ent1))"TEXT")4 E9 A1 `3 k3 R3 ~' w5 s4 n1 ^
  1867.     );and% [0 F& }' r7 h/ c2 j$ K. w" z0 P
  1868.   );not
    7 O9 E) P- t, a
  1869. );while
    3 {3 p3 S% U1 D9 I
  1870. (setq old1 (cdr(assoc 1 ent1)))& x) k# G/ x8 G$ W2 @# w: W
  1871. (while
    # \6 Q1 G  b  G! l
  1872.   (not/ y9 N& j& ^! ~/ a
  1873.     (and
    $ j9 i4 D5 t( @2 p8 F2 m0 t
  1874.       (setq ename2 (car(entsel "\nSelect second text string to join: ")))
    * y* C  O/ G) m! w# P
  1875.       (setq ent2 (entget ename2))0 y; C1 l$ D# d
  1876.       (eq(cdr(assoc 0 ent2))"TEXT")$ r9 w; J! q) H7 a/ e! {
  1877.       (not(eq ename1 ename2))4 @6 u! a- A% v# O4 y6 H/ q& Y
  1878.     );and& D8 w5 Z" {* V8 g* s
  1879.   );not1 l" t/ w. l5 Q3 `) b  b
  1880. );while3 g) S9 U, p7 r- [6 q0 U
  1881. (setq old2 (cdr(assoc 1 ent2)))6 z$ F% |+ v& u  b
  1882. (setq new1 (strcat old1 " " old2)/ A7 {/ C8 c- i6 q9 h# [
  1883.       ent1+ r, j  C8 |, L( {! _) W* J
  1884.         (subst (cons 1 new1)
    ( @. j' Y' A2 \& t; ~
  1885.                (assoc 1 ent1); [- ], l8 ]8 ^- ]( M9 J
  1886.                ent1)
    & \! k" `) Y* e6 O( K+ ]5 M
  1887. );setq
    ! _, o* p5 n+ V
  1888. (entmod ent1)
    + |2 N8 ^; {& @% x, ~% s1 }
  1889. (entdel ename2)
    ( [* \/ V8 c6 O, Y: o( w
  1890. (princ)
      F# ^* [7 E" Q6 X
  1891. );defun. l! y) \( I9 G) f) A7 X

  1892. + k; j# j+ ~: A8 L5 R1 c5 t2 I/ e
  1893. ;=====================================================================
    * ]( j) ^% [& N" l, ^
  1894. 8 j; P( H8 p; D+ F3 y4 a& _
  1895. (defun c:nt (/ g1 g2 ss1 olderr nterr l i temp e1 e2 new old dd dc)
    6 ~( ^, w3 L5 x" W- W
  1896. # E1 [& `% {& P4 L! M$ f
  1897.     (defun nterr (s)1 m! M. [) _. {$ R
  1898.         (command "_.UCS" "" "_.UNDO" "E")& q! Z/ E7 e7 z' Y
  1899.         (setvar "cmdecho" 1)
    ) z  M( v7 g2 ?3 q
  1900.         (setvar "blipmode" 0)+ B; A8 W8 h) F$ b
  1901.         (setq *error* olderr)
    1 a, U9 b, m+ T, g2 U; Y
  1902.         (setq g1 nil g2 nil ss1 nil e1 nil e2 nil olderr nil 2 y; P8 _  X6 P3 A
  1903.                 nterr nil temp nil i nil l nil new nil old nil dd nil dc nil)" U2 N  a$ I5 |1 [+ y
  1904.         (princ)* N9 c  T- A0 A
  1905.     )
    $ E0 N- }8 x$ a/ v0 k/ @0 S+ x' a. t
  1906. # t5 J/ L7 P5 U2 K8 ~
  1907.     (defun tim_in (dt / p01 p02 ktra)) D) W0 z( f# w: L% d- o
  1908.         (setq p01 (cdr (assoc 10 (entget dt))))
    + M- _' S4 A  W1 m! t- Q
  1909.         (setq p02 (cdr (assoc 11 (entget dt))))
    / [2 V% M( g) ^$ K8 Q
  1910.         (setq ktra T)" X) r/ b' E1 H6 z/ Q6 U- `
  1911.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2))
    ; q, U$ }  h8 T# o6 v4 [
  1912.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    % J3 H) Y. M+ ^+ M  e% A$ m: _
  1913.             (setq ktra nil)
    . V- s0 R8 X% R! @4 ?
  1914.         )0 h: |* [6 p) h, `8 N5 `
  1915.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2))
    9 x6 P/ G# M1 s9 U5 [$ I) R- h; Z
  1916.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))' H- ~$ p: K/ v
  1917.             (setq ktra nil)
    / u; I6 t+ M7 N: s
  1918.         )* g0 O: C, t! Q! `, T. |/ J, A- a6 X
  1919.         ktra
    3 v: e9 E/ s: r* c
  1920.    )+ U9 Y0 o( E5 c: c0 `: Y9 j
  1921. 0 i9 J2 G; X  T; m% }
  1922.    (defun timdt (dt1 dt2 / p01 p02)
    * n3 M% N) j* `# E! a
  1923.         (setq p01 (cdr (assoc 10 (entget dt2))))
    3 I1 E" d7 `" y
  1924.         (setq p02 (cdr (assoc 11 (entget dt2))))) R, ]( S. ^0 d0 O
  1925.         (setvar "ucsicon" 0)% c' t3 u/ v6 q
  1926.         (command "_.UCS" "E" dt1)4 `9 r" d/ Z& b# @; Q( K6 J
  1927.         (setq p01 (trans p01 0 1))
    ; x* I' T- m' G5 H9 G
  1928.         (setq p02 (trans p02 0 1))
    ) o, Q) I7 T3 d( h% Z* {3 x1 ]
  1929.         (command "_.UCS" "")# i! i+ |( ]! Z4 y$ q6 J6 q5 u
  1930.         (setvar "ucsicon" 1)9 d- C9 A' ?8 Y6 |' E) m% l# ~
  1931.         (if (and (equal (cadr p01) 0 0.001) (equal (cadr p02) 0 0.001))8 K- e- [6 r; `8 l
  1932.                 T
    # [1 c/ W1 U4 P" V. C4 \
  1933.                 nil* L# R6 z. g' g/ @
  1934.         )( R# G% W" e; ?, S
  1935.    )
      h# A; I5 i) D$ @- E6 Y' {

  1936. / \; z5 x( t5 H; i
  1937.     (defun tim_out (dt / p01 p02 kt)
    - f* R9 R% g& P2 B# Z% B  P3 w
  1938.         (setq p01 (cdr (assoc 10 (entget dt))))8 _: X9 }4 Y3 i. `
  1939.         (setq p02 (cdr (assoc 11 (entget dt))))
    ) m% }  D- o6 k- O5 G" i: R
  1940.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2)) % M! `3 K- g  E! V
  1941.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    / h8 J$ L$ z/ Z6 L- r
  1942.             (setq kt p02)
      T% R5 M* K$ i8 v
  1943.         )
      l$ A! E2 i+ S3 @. X
  1944.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2)) 6 L9 W( J& J# e" Z$ j. q  e8 B8 e8 ]
  1945.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))
    $ {) |/ ]1 E' D% l/ Q
  1946.             (setq kt p01)
    $ T; o4 E1 P' c1 r! i
  1947.         )# D5 \; I/ {; G1 ^
  1948.         kt        
    $ U) {) l4 @) a& Z1 \" E" Y% ]% l
  1949.    )& @# _5 v6 l; {0 S# N1 a

  1950. % `9 C1 d% G! k) _% x3 Z4 s7 _4 I
  1951.     (setvar "cmdecho" 0)8 V: y' p4 J% C" ^' Q
  1952.     (setq olderr *error* *error* nterr)
    : B  D' D! K% R* B
  1953.     (command "_.UNDO" "G" "_.UCS" "")
    ' \5 m% T( t4 r7 I( u  ?$ X
  1954.     (while (null ss1)% e, B& m% i5 N4 \( _( x+ M
  1955.         (princ "\nChon tuong muon noi...")
    " x$ ?$ g4 u* I2 D6 \- ]
  1956.         (initget 1)
    8 f) o: P7 v5 O* [3 w$ I5 o
  1957.         (setq g1 (getpoint "\n>Goc thu nhat:"))' Z* V2 k: x+ Q0 _: o' q
  1958.         (initget (+ 1 32))
    $ [5 c, g. h4 T+ [! b! `! G
  1959.         (setq g2 (getcorner g1 "\n>Goc thu hai:"))4 B, f/ S, [6 W  B% s! E% [% E
  1960.         (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    ; w+ H! c) _9 c, {* k. |& W
  1961.         (if (null ss1) (princ "\nKhong tim thay doi tuong!"))  u( r6 T6 }8 ^& F7 r; j3 X5 `
  1962.     )
    3 @$ H# |: |6 Y7 o' |1 G
  1963.    
    * `0 X3 u8 T; M3 \! z
  1964.     (setq temp (list (min (car g1) (car g2)) (min (cadr g1) (cadr g2)))
    2 h! x- W$ T3 g1 l4 `/ j( D* W# E. K
  1965.           g2 (list (max (car g1) (car g2)) (max (cadr g1) (cadr g2)))' g+ b! h. @3 e
  1966.           g1 temp)# q# {- {+ n, s; i3 t
  1967.    (setq ss1 (ssget "w" g1 g2))
    - T. d: q6 i2 |0 k7 T! l
  1968.    (if ss1 (command "_.ERASE" ss1 ""))
    & C9 {; p. y; E# v
  1969.    (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))' I% z2 ^* I, _$ n# X" u
  1970.    
    0 T; |0 I5 X2 t; k5 D8 V
  1971.     (setvar "blipmode" 0)
    5 L1 R5 a6 d8 j% E  U
  1972.         (setq i 0 l (sslength ss1)). J% F( G/ x/ g$ k
  1973.         (while (< i l)
    1 y# {9 F. O% W% n& W
  1974.            (if (tim_in (ssname ss1 i))
    , X% e) g" H) E; J$ N
  1975.               (progn $ |* D2 w% m2 S% t
  1976.                     (ssdel (ssname ss1 i) ss1)
    + i$ @  T8 ?& [
  1977.                     (setq i 0 l (1- l))
    ! l9 e7 L( i7 ^- K" r* L9 a
  1978.               )        
    2 ~0 T2 R: i+ S5 U7 Y5 R9 E/ s7 u
  1979.               (setq i (1+ i))
    0 M) u0 e( \0 v. I; r1 X
  1980.            )
    7 k" J  r# S! c  Q
  1981.         )
      C6 g3 d4 \5 w8 D3 _6 N) M
  1982.         (setq l (sslength ss1))* P7 P0 f! G' S% T  V- j4 Q
  1983.       (while (>= l 2), `: ~% T" s; Y+ t9 k1 p
  1984.         (setq e1 (ssname ss1 0))
    ; ]7 z+ g! q  q! l, h1 S; l
  1985.         (ssdel e1 ss1)
    ' ~# F3 a6 h% _5 K
  1986.         (setq e2 nil i 0 l (sslength ss1))) M7 E8 j9 ], u, J
  1987.             (while (< i l)
    ) R+ [5 w! V6 h! U5 K( f% l6 E
  1988.                 (if (timdt e1 (ssname ss1 i))
    ) X2 T5 ~( Z# l1 T
  1989.                     (progn) |5 T/ J2 f  g8 j, y
  1990.                         (setq e2 (ssname ss1 i))+ ^( R0 x! _# Y# H* P) b' h1 W$ r
  1991.                              (setq dd (tim_out e1))+ u. Y' ]  {; z! S0 C& z
  1992.                              (setq dc (tim_out e2))
    / q3 s* G/ x5 l- T! O: v! H
  1993.                     )
    " E8 x/ {/ U, s
  1994.                 )
    " }1 V1 T! K+ a4 m
  1995.                 (setq i (1+ i))9 R. }' Z2 _9 z. k  i
  1996.             )% V0 Y$ Y, {8 b8 F8 a9 y
  1997.             (if e2 (progn
    7 q" c8 k) a# d
  1998.                         (ssdel e2 ss1)                        
    9 e1 R& x9 @5 [* M
  1999.                         (command "_.ERASE" e2 "")! @2 {% S. H: r" z/ d- R; G  v
  2000.                         (setq temp (entget e1))
    0 t" h+ i. I6 j* E  m  L
  2001.                         (setq old (assoc 10 temp))( E, j. g) y2 n% O" Z
  2002.                         (setq new (cons 10 dd))# I4 g0 y. y- L9 c+ A
  2003.                         (setq temp (subst new old temp))1 u' [1 }9 h4 Q0 O% ]$ v
  2004.                         (entmod temp)
    9 }# H- k! x* N% @
  2005.                         (setq temp (entget e1))
    9 X* H5 `$ e  {: N: _+ ]1 D5 v
  2006.                         (setq old (assoc 11 temp))/ Y$ Z2 }0 a8 a9 Q
  2007.                         (setq new (cons 11 dc))
    ( ~: p3 e; F& \, R' H2 @: k
  2008.                         (setq temp (subst new old temp)). U* Y& u6 x' t1 x2 c/ F5 F
  2009.                         (entmod temp)
    1 q! W& G2 Z# T9 f
  2010.                         (redraw e1): i/ N; s, {9 c
  2011.                         (setq l (sslength ss1))" k* _2 {; o7 w8 U
  2012.                    )
    3 K8 L2 U3 s) n$ x( Z5 {" ^8 J
  2013.             )# w: R! |. ^8 a9 l9 ]
  2014.         )/ G; e. u$ ^+ Z
  2015. . Q2 u# u5 @+ @0 q) u, O  T
  2016.         (command "_.UCS" "" "_.UNDO" "E")3 W3 C4 j: i: ]) P
  2017.         (setvar "cmdecho" 1)2 _9 V+ q2 {3 R& T( U5 H& V8 k& D
  2018.         (setvar "blipmode" 0)" d, f2 _7 v7 B% `
  2019.         (setq *error* olderr)0 v: X3 N6 r9 m" m* H$ N
  2020.         (princ)
    5 E" u3 g9 C! Y4 O/ Y; g3 M3 [
  2021. ): \$ v, S( K, V' @3 P" ?  T; |8 Q
  2022. ;*********************************************************************
    2 n+ n3 P; w: c  }, R: q, b7 z
  2023. (defun ketthuc ()
    - r6 [( r1 c( V6 s3 t
  2024.         (setvar        "cmdecho"        luuecho)+ n8 ?5 E" @% Y; x5 V; Y8 b
  2025.         (setq *error*        luu2 ]; X' X8 s" {9 R. P5 M6 |7 Y
  2026.                 luu                nil        2 T5 T8 L6 b6 q+ p" P9 q- v* {9 }
  2027.                 luuecho        nil
    . v) Z2 \3 D3 `/ ~% ?" h& K
  2028.         );setq
    , h" ~% c5 f1 B. Q: j. }
  2029.         (princ)5 J$ Y+ ]+ p+ C, X: J" X1 Y
  2030. )                ! f1 K- z7 y. T6 j
  2031. ;*********************************************************************: Y0 u0 W8 o! ~6 u1 Q4 s7 d' i
  2032. (defun modau ()
    $ K& p) ~/ s, u& h
  2033. (setq         luu *error" ^' N; `, I& X7 x8 F
  2034.                 luuecho        (getvar        "cmdecho")2 p! f; M- _, J1 t
  2035.                 *error        (ketthuc)
    & M5 e3 \% p# k# i6 y
  2036. ); g4 V0 x. u5 t+ r  P
  2037. )
    % M' w+ d, s6 f0 h3 D& B
  2038. ;*********************************************************************1 c5 Y- ~% z' `8 o: M' Z3 G
  2039. (defun xulytext (text / kytu ma sokt luusokt lui )
    / j# d! x7 k3 ^/ n% ^
  2040. (setq         kytu        (substr text (strlen text))
    , V0 U* e/ u# `3 ^
  2041.                 ma        (ascii kytu): D) P1 v1 r7 o" @* {- y
  2042.                 sokt        (read kytu) 4 ]# O) p) x2 Q- u$ g
  2043.                 lui        13 l' l# p) c1 s6 }) |  y
  2044. )
    ) N4 ^7 K( M6 p" ^6 q# t! }) k1 w
  2045. (if (numberp sokt)# L# r/ {1 p6 |* r- w4 F
  2046.                 (progn
    " s+ Z1 q0 n9 W6 k
  2047.                         (setq luusokt        (1+ sokt))
    3 O; e( s7 `7 }: a
  2048.                         (if (and         (numberp sokt)
    2 n5 ]  b0 F* K/ T
  2049.                                         (> (strlen text) 1)! m; X+ c% c+ b# M: ?- m
  2050.                             )        2 ]5 l3 y% d( G
  2051.                            (progn
    6 ]  @# N; f: q. c& W" N# J
  2052.                                 (setq         kytu        (substr text (1- (strlen text)))6 ]2 X5 Q% ?  {" V2 X6 ]1 e$ r
  2053.                                                 sokt        (read kytu)
    ' K. A6 X3 r6 F
  2054.                                                                                 )
    / x. l) z$ S" F7 b5 R3 R
  2055.                                 (if         (numberp sokt) ( }2 W) R* P  x! D6 P# {- M
  2056.                                         (setq luusokt (1+        sokt)1 r/ ^- X# W  o; R* y
  2057.                                                         lui         2
    2 a1 l/ K; {+ b8 o$ q
  2058. 7 c0 I2 ^' h3 _/ _( A
  2059.                                                 )
    $ z% r0 b( t5 [$ s' ?3 ~
  2060.                                 )5 U" {7 V* _; e  F! g
  2061.                             );progn        5 T, k7 D1 b9 t) l9 x- s& |* x8 T
  2062.                         )
    8 `0 s  m* b7 k2 l
  2063.                         (if (= luusokt        100)        (setq         luusokt        0))/ J: [2 Q! u$ d4 _; X5 N# W. y
  2064.                         (setq         kytu                (rtos luusokt 2 0)* s. x. K; A( W. U: t4 p' m
  2065.                                        
    0 d+ T0 q3 {& r
  2066.                                         text        (strcat        (substr text 1 (- (strlen text) lui))  kytu)
    ) [4 ]' K  ^; |1 @( I. Z
  2067.                         )+ S/ |  D4 |% j/ C
  2068.                 );progn                         $ p7 K* f, c7 L6 y9 P" o7 R
  2069.                 (if   (or         (= kytu "z"); f# |: a3 Y1 u5 p: ?7 t) h5 o/ R+ B
  2070.                                 (= kytu "Z")  w+ H( A: x, h
  2071.                         )8 Y. e# m. \) a' e7 H! y+ l
  2072.                         (setq         text                (strcat         text        "0")
    . i& R; \- K: c. |
  2073.                                 textxl                "0"
    ( L; `1 _+ p! t8 [% R+ Z- M
  2074.                         )/ ^% E+ }8 `' Z! v; P! k; W
  2075.                         (setq                ma        (1+        ma)
    ; _% p: a( |( \; |+ S6 v- P2 f
  2076.                                         text        (strcat        (substr text 1 (1- (strlen text)))  (chr ma))' Y9 E, ^5 g; l0 w1 S- \
  2077.                         )2 G9 H4 d, A" V* m9 b1 |5 C  Z( Y
  2078.                 );if5 M( e9 m+ q6 l( M, Y
  2079. );if
    $ ]- y; w' I/ X) N& i5 @8 H
  2080. )) u1 S* t/ \1 ?6 P
  2081. ;*********************************************************************
    ( f% |( [( R: E: W7 ?
  2082. (defun doitext(tendoituong / chuoi doituong thoat tam dsach kieu text vitri10 vitri11 dem canle)2 b- ^) x0 P- d: N
  2083. ;Neu doi tuong la text thi tiep tuc
    + Y; g2 h6 Y( B/ z! E" F
  2084. (setq         doituong         (entget  tendoituong)
    % f, q2 Q. s+ K, `3 g2 H+ a1 F
  2085.         kieu                (cdr (assoc         0        doituong))
      r$ i% }" J: w1 \
  2086.         canle                (cdr (assoc         72        doituong))3 x4 v% @+ b9 g) x/ v) o0 Q" |
  2087. )        
    / O3 f% ?( G. l% [$ w
  2088. (if (or (= kieu                "TEXT")) h' j+ z' L- h  V! u' c
  2089.         (= kieu         "MTEXT")        & _4 T* P& K% C  E* Z- W2 ~" t
  2090.     )         
    , b6 J  M/ B- b( Z
  2091.         (progn& i2 _0 W* x7 g
  2092.                 (setq        textxl        (xulytext textxl)
    " L0 q7 e% q% O. {
  2093.                         text        (cons 1 textxl)
    9 U1 S7 X/ r) S* ]8 x6 M
  2094.                         vitri10         (cdr (assoc 10 doituong))
    ( b5 \- m, _' \3 S4 @, J! M
  2095.                         vitri10         (list (+ (car vitri10) (car vitrilech)) (+ (nth 1 vitri10) (nth 1 vitrilech)))6 ]  F& C0 O9 ?* B% R
  2096.                         vitri10                (cons 10 vitri10)7 z# h! o9 f3 t& ~' e: Q/ o
  2097.                         vitri11         (cdr (assoc 11 doituong))# n. ?- l6 K1 k
  2098.                         vitri11         (list (+ (car vitri11) (car vitrilech)) (+ (nth 1 vitri11) (nth 1 vitrilech)))3 [0 n/ U0 L& `* a- Q  G3 j8 l, A
  2099.                         vitri11                (cons 11 vitri11)) Y4 m/ ^) O2 v% W: n; u1 K# p
  2100.                         dem        0
    1 X# M% P# h4 n  u$ `, D
  2101.                         dsach        nil
    1 ^- a* X6 F# _5 ~: {
  2102.                 )
    ( |  [1 L( L& u  n) N+ l
  2103.                 (foreach tam         doituong
    . P" B  A3 p) F' S9 v% J
  2104.                         (cond( t7 M( @, A+ v( Q4 e
  2105.                                 ((= (car tam)        1)        (setq dsach         (append dsach (list text))))* l- [- Q0 i: L! b
  2106.                                 ((= (car tam)        10)        (setq dsach         (append dsach (list vitri10))))6 u4 r( R: |1 S
  2107.                                 ((= (car tam)        11)        (setq dsach         (append dsach (list vitri11))))8 q5 h- i6 O% p% }' R8 r
  2108.                                 ((setq dsach         (append dsach (list tam))))! F# k4 Z" A2 {, ^
  2109.                         )
    1 r5 q' O% q1 l0 e0 [
  2110.                 )# z$ {( n# Y0 B
  2111.                 (entmake dsach)
    3 A4 e3 M( U  @+ _' I( m# n
  2112.         );progn
      ]: |3 y: m' w7 E# t) a
  2113. );if. a4 o' \( I& z
  2114.         );
    # J; V! W  K; e6 J! e4 D5 f8 [
  2115. ;*********************************************************************
    5 m) p6 X( r. p+ q: T) X7 j/ P
  2116. ;sao doi tuong cu sang vi tri moi
      ^5 `$ |. R$ q
  2117. % `- s$ G* v2 J9 }/ S, `2 Q
  2118. (defun copy_dt (tendoituong ): v) p3 V! J6 \9 @9 @
  2119. (command "copy" tendoituong "" goc toi )$ _  [2 N# s- T4 K& _* g+ m6 j
  2120. );defun
    ! Q  [6 @. V3 z

  2121. ; @4 j/ o+ P" O/ a. v! K
  2122. ;*********************************************************************$ o( }" N* N/ W2 E! b
  2123. . n* }: Z" i9 G) \; E2 E  e7 O+ B
  2124. (defun c:ct ( / cumdt dodai thoat dem ten doituong textxl dem goc toi): Y/ n6 u/ A0 d4 w
  2125. ; Khoi dau cua chuong trinh
    7 D& {4 ^, v. V: r' d( S3 g
  2126. (princ "\nCopy Inteligent...\n")
    8 l3 h0 |* t1 `3 F& s2 a/ ]0 w6 G9 B
  2127. (setq         luuecho        (getvar        "cmdecho"), g* Q+ x0 _! y! X, L
  2128.         luu        *error** X0 |9 J0 `( m7 R; S
  2129.         *error*        ketthuc
    5 G. m; {) Q3 i' Q
  2130.         cumdt         (ssget)+ ^3 q- d% ?) D* N% i/ j
  2131.         dodai         (sslength cumdt)
    ! t; U  Z8 A* G, `" R! G0 U5 u8 s
  2132.         goc                (getpoint "\nSelect base point:")
    % V/ H- m4 x2 f9 k3 [
  2133.         thoat                nil
      o+ t& r3 m' S. t, h# d9 A
  2134.         dem                0
    2 L  `; j/ ^8 l! w6 V  v
  2135.         textxl                nil$ u( ^( ?9 w6 E9 Y2 P. v- n
  2136. );
    6 J( v3 K  h( V; {
  2137. (setvar "cmdecho" 0)2 {" _& \5 z, H* U! f. m
  2138. ; Loc ra duoc ong text de xu ly
    $ U" w# a9 T, b& S4 Y5 ^
  2139. (while        (and         (= thoat        nil)
    ( i: W1 O( C* y, J! F
  2140.                 (< dem        dodai)4 Z6 Y( u2 L8 n3 p- M
  2141.         )
    ' @- E: x) }' P+ C6 ~9 |) Q
  2142.         (setq         ten        (ssname cumdt dem)
    # [- e: A/ ^/ M1 j
  2143.                 dem        (1+         dem)
    7 H! {! n. r1 r
  2144.                 doituong (entget ten)
    # d( y5 Y2 ^0 d6 @5 ~2 |7 m8 i
  2145.                 kieu         (cdr (assoc         0        doituong))                        2 K$ s! z6 {  R* l- F9 G
  2146.         )  s& S/ U* n/ v+ g2 F* b
  2147.         
    3 D7 ^0 ^! a" s3 k4 S
  2148.         (if (or (= kieu                "TEXT")
    4 Q3 n. L! E- U4 U* S/ \$ r+ ?
  2149.                 (= kieu         "MTEXT")        
    ) V# A8 n; |# A7 l* d7 s( Y6 ]
  2150.                 )! s5 k2 P' r! h0 q5 l
  2151.                 (setq         thoat        T
    1 t, D5 L9 D0 X" _! y4 `2 h% n1 r
  2152.                         textxl         (cdr (assoc 1 doituong))         
    / g3 C9 l$ l5 g: g
  2153.                 )) m. A% S" [8 a# L
  2154.         )
    , n5 X( o: I$ U1 w/ Q$ }+ C
  2155. );5 n# L) ]' C2 e9 Q+ m# Q: G
  2156. (while T " I4 C1 F' l) i/ ?" a! k" G
  2157. (setq        toi                (getpoint "\nSelect next point: " goc)
    / _1 I3 w: v0 m7 h- s
  2158.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))2 F( L, O3 a4 ]3 _$ O
  2159.         dem                0
    ) z+ C, I6 O+ I1 {
  2160. )& d$ l; P1 Z5 P; o+ A
  2161. (while        (< dem dodai)
    2 f9 ]: Z8 F* D* D4 D
  2162.         (setq         ten        (ssname cumdt dem)2 B# G: U7 A; m- y
  2163.                 dem        (1+         dem)3 t3 U8 A. Y% K/ b" i' Q' B2 S
  2164.                 doituong (entget ten)
    7 i3 ~8 o! p2 K7 I: x. x! Z
  2165.                 kieu         (cdr (assoc         0        doituong))                        
    & Z, D% L! |% o( g/ Y' S8 b/ B
  2166.         ); H+ R+ a; K3 W" @% @8 f4 R4 {8 w
  2167. $ J* S- H  |8 \# ^1 B: K* |" S
  2168.         (if (or (= kieu                "TEXT")0 c$ T9 Z1 x' g( Q9 x! }0 K
  2169.                 (= kieu         "MTEXT")        
    : x9 a5 Z$ N  {/ {! k. n$ ?
  2170.                 ): P  j/ `( z3 H' R1 Y$ w5 S4 L
  2171.                 (doitext        ten)5 S5 s# v) R) c  L* g- ]. ?
  2172.                 (copy_dt        ten)
    * F! x$ |9 N% ]

  2173.   t6 `0 E4 r# j4 w
  2174.         );if9 c4 }  K" o+ Z, g, H
  2175. )  p# \+ Y& w: [6 W4 u; A* U
  2176. );while. t& R4 {) W  k* ~4 L3 R. e
  2177. (ketthuc)
    : c( ?8 {7 _( o5 P) C
  2178. );defun' P! s# k, b+ L6 ^! n, V
  2179. (princ "Type \"DG\" to start")) D  q  {; z' F# F3 g1 _" w
  2180. ;Note: bien toan cuc: textxl vitrilech
    6 {1 G- c# ^7 R9 q" C  y

  2181. : f4 M+ {: g/ [
  2182. ;=====================================================================, B9 E/ m3 V% X
  2183. ;;; PLJOINFUZZ.LSP  n1 e, I* H. h3 e2 o9 v1 N
  2184. ;;; Joins lines, arcs and polylines using a fuzz distance! r( m% c7 e; q) _5 u2 U
  2185. ;;; If only one object is selected it tries to join to all objects that are possible
    % {( Q( ~( ~, b& t. G* Z
  2186. ;;; By Jimmy Bergmark
    6 P( x; m& `, N) h  \
  2187. ;;; Copyright (C) 2003-2004 JTB World, All Rights Reserved
    % D4 D+ e$ S, a" m- Q
  2188. ;;; Website: www.jtbworld.com; Z: [5 K6 o0 X! v6 I& k
  2189. ;;; E-mail: info@jtbworld.com" ~- Y) M' h' h
  2190. ;;; Tested on AutoCAD 2002,2004 and 2005
    - P# N2 H4 r9 B; M
  2191. ;;; Latest revision made 2004-11-11/ r+ R' g+ r& S
  2192. ;;; Minor code cosmetic change made 2004-11-13
    4 {" p  ~! _  m4 v1 g- w
  2193. ;;; Bug corrected 2004-12-23
    4 j7 z& K$ Q. C
  2194. - n4 f& y% G% ~
  2195. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf
    - W3 g! z, v  `! b% l" J* y
  2196. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
    ( j( A* v# r- a- H" q  I( q$ q
  2197.   (setq oldcmdecho (getvar "cmdecho"))
    " S1 A" L+ K5 s) e) f1 V
  2198.   (setq oldpeditaccept (getvar "PEDITACCEPT"))" q0 L+ Q! \$ l6 [' L! P' `
  2199.   (setvar "cmdecho" 0), R1 _; ?# w9 g9 G, S
  2200.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))% I0 g* q1 [7 m  f- }6 X1 H
  2201.   (if A2k4 (setvar "PEDITACCEPT" 0)). \) h5 D' @7 t
  2202.   (setq        okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
    , a# S6 U% x9 b. @0 r/ d
  2203.   (princ "\nSelect object to join: ")
    . l9 O) W" j2 O8 P) R2 Q
  2204.   (setq ss1 (ssget okObjects))8 o- e% p9 ?3 G+ Q% W
  2205.   (setq fuzz (getdist "\nFuzz distance <0>: "))' d/ o) d" j9 q1 H0 o4 }5 P9 B
  2206.   (if (= fuzz nil) (setq fuzz 0))
    3 Y  B: _9 V- E9 N% n! ?1 }
  2207.   (if (/= ss1 nil)# [9 c2 y* B( h+ ~* q5 X- Q
  2208.       (progn
    1 T1 w& {$ Q! z  _# B
  2209.         (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
    : j: `5 d9 \' M" g% p' h) Q" C4 {/ m
  2210.         (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))3 _+ s- C8 C* r8 d
  2211.         (if (member objType '("LINE" "ARC"))
    ! b, @7 }" l6 K9 f* l% S9 ?9 U% v; c
  2212.           (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
    ( y. u$ `4 {* w* s; i
  2213.           (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
    ( I% N" f+ x) y$ @( R, O
  2214.         )9 j5 X" h) Y" J( U! ?7 y8 N, s
  2215.       )
    4 V) e/ E$ Q( r+ r$ S
  2216.   )
    5 z8 K5 O5 s) P/ y& a& m/ t' u
  2217.   (setvar "cmdecho" oldcmdecho)
    0 M3 W, |8 z; `# H2 P9 T9 m: @
  2218.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))/ H- J$ t- x( Y! _; _5 C( f
  2219.   (princ)) l0 q  @; h, p8 m# f9 @9 S2 a2 u
  2220. )
    : M6 V. l$ g9 v. k% J/ U5 S
  2221. 0 ]% h$ q  S3 K2 }+ ]
  2222. ;===========================VE CAO TRINH===========================& B8 y, H1 n/ z% B4 q2 D; }
  2223. # X3 @9 z7 ~. x, P" O
  2224. (DEFUN C:Cotcao (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL
    6 R( B6 U# j& b8 t: p
  2225.                 CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR); l5 z7 G- t8 c! M; R
  2226. (SETQ OLDERR *error*
    3 @8 e3 b9 @! U* M6 A0 Y
  2227.       *error* loisb)
    3 r  K. j! Q4 ]! N
  2228. (command "layer" "m" "dim" "c" "" """")
    ' h) `( G, r3 m  C. o* Z9 p
  2229. (SETQ CMD (GETVAR "CMDECHO"))
    / b1 a5 F' N9 }8 w! s9 y
  2230. (SETQ NBC (GETVAR "CLAYER"))
    9 `" x9 X$ D1 O+ k
  2231. (SETQ OSM (GETVAR "OSMODE"))
    . ]" L- W' m$ w# o  E
  2232. (SETVAR "CMDECHO" 0)+ b" E+ ^5 E; n! w( w$ T7 c1 C: O
  2233. (SETQ PT1 (GETPOINT "\nDiem cao trinh:"))# A+ I; M' V; @! k. O6 @: A+ s$ x, t
  2234. (SETQ TX (GETSTRING "\nCao trinh:"))
    ' S2 x( |) c9 v# I6 V/ B; I
  2235. (SETQ FCH (SUBSTR TX 1 1))
    , r3 z+ _) m: b1 D6 r. m
  2236. (IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
    ! f5 _9 C0 `; t6 v* m4 f& l
  2237. (SETQ CRST (GETVAR "TEXTSTYLE"))/ g  |7 S$ E6 T) ~, B3 x: j" y/ h6 |
  2238. (SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
    3 V7 }+ R" S- l1 i: Q% x( K; M# Z
  2239. (SETQ TSIZE (GETVAR "TEXTSIZE"))) w$ {$ S9 J) c% g4 R
  2240. (SETQ STR (RTOS TSIZE 2))' X; n0 m% Y- a, _1 m
  2241. (SETQ PRMT (STRCAT "\nText height <" STR ">:"))
    1 f1 Q2 A' l, [' H
  2242. (IF (= RSIZE 0)! V' P: o. ?+ p! M% _' N
  2243.   (PROGN
    4 A- i9 o: [2 t0 v" T( e4 u$ |
  2244.         (INITGET 4)
    + @( o6 T( G, c) z
  2245.         (SETQ TSIZE (GETREAL PRMT))7 p. X6 U2 }7 r
  2246.         (IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE")), ?2 t* o. j6 }
  2247.                           (SETVAR "TEXTSIZE" TSIZE))
    ! C  {2 v5 k% U
  2248.   )
    $ h5 s1 Y# ?! {% h+ W5 f
  2249. )
    # m8 J1 q- p1 I) l, J
  2250. (PRINC)" n5 P. `. g0 L/ ?1 `
  2251. (SETQ TL (/ (GETVAR "TEXTSIZE") 2)); O' r7 {6 b0 q2 h" C5 P2 t: u
  2252. (SETVAR "OSMODE" 0)1 S8 P  f2 u$ Q6 m9 c# G% p0 Q
  2253. (SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))2 ]! T( X0 O+ p( `9 h
  2254. (SETQ NPI (/ PI 2)), G3 |, U  g6 L0 C' F/ D1 [
  2255. (SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
    7 W  Y( _7 ]  K4 i* J) F: Q
  2256. (SETQ PT2 (POLAR PT4 PI (* 2 TL)))% ^6 k" V0 Q" U- V. [1 z
  2257. (SETQ PT3 (POLAR PT4 0 (* 2 TL)))
    : z6 s$ a7 Y  u+ c% |& [8 W
  2258. (SETQ PT5 (POLAR PT4 NPI (* 5 TL)))% T+ z2 k: b/ x& b( l9 K! H
  2259. (SETQ PT6 (POLAR PT2 NPI  TL))2 K( }1 @; D& l
  2260. (SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))
    - p. W, ~, H; R8 }4 ?0 s& J
  2261. (SETQ PT8 (POLAR PT6 NPI (* 1 TL)))2 T$ r$ I2 n# B* E' D
  2262. (SETQ PT8 (POLAR PT8 0 (* 2.5 TL)))+ {8 D+ S# B: r
  2263. (SETQ PT9 (POLAR PT1 pi (* 2 TL)))  M3 B/ O1 h0 f3 Q
  2264. (SETQ PT10 (POLAR PT1 0 (* 2 TL))): o* _. Q/ m5 t
  2265. (COMMAND "COLOR" "7" "")
    - g6 @! R- C  B3 L
  2266. (COMMAND "STYLE" "COTES"  "Verdana" "" "" "" "" "")
      Q0 K; a5 \( f' b5 |
  2267. (IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))
    ( ~0 D6 D3 J+ q- y
  2268. (COMMAND "COLOR" "BYLAYER" "")5 q' k% a2 H0 ?3 e8 E
  2269. (COMMAND "SOLID" PT1 PT2 PT4 "" "" "pLINE"  PT1 pt3 pt2  "")
    ( `  o8 J" m  a! s, ^0 R; ~( j! _
  2270. (COMMAND "COLOR" "BYLAYER" "")
    / d3 r0 \/ `1 B- @' t6 U3 _0 z
  2271. (COMMAND "pLINE" PT1 PT5 "" "pLINE" PT6 PT7 "" "pLINE" pt9 pt10""); t- A* d) f! d# l0 w
  2272. (SETVAR "CLAYER" "0"), F+ d* Y& x4 }; R
  2273. (command "ddedit" pause)
    * v5 @9 f; I% o
  2274. (COMMAND "COLOR" "BYLAYER" "")
    # q2 X4 r- V: B4 s3 ?& U
  2275. (SETVAR "CMDECHO" CMD)
    : v( t% Z4 [: `7 h' y9 d4 h& h
  2276. (SETVAR "CLAYER" NBC)3 v. [3 c% \7 E6 _
  2277. (SETVAR "OSMODE" OSM)) ?3 s$ \2 j! r- X/ d
  2278. (PRINC)0 _5 R) J  d# U. s, ~: }& X& S
  2279. )
    $ W( O- l+ L* Y. f5 K
  2280.   u1 N9 F& a- j, s* ^
  2281. ;;; =========================== VE NET CAT CHEO (GC) =============================. h8 t, \! i( B
  2282. $ T4 f1 `4 x5 z' L- P
  2283. (Defun c:G1(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang). u% D1 A3 D$ g  M9 ~
  2284.         (setq x (getvar "osmode")). [0 n* o' l3 k2 k
  2285.         (setq p1 (getpoint "First point : ")
    ) D# {% Y- m$ U5 b' {
  2286.               p2 (getpoint p1 "Second point : "))* v( x, Q% p3 I4 y8 c9 @
  2287.         (setq l (distance p1 p2))
    : a# z$ t- `- g5 C: B
  2288.         (setq p11 (polar p1 (angle p2 p1) (/ l 5))
    ' n/ P# J$ |! c: \4 d& y
  2289.               p12 (polar p2 (angle p1 p2) (/ l 5)))( R2 z: }- d2 I' s
  2290.         (setq ang (angle p1 p2))
    / N" b& o4 s6 T# x$ L
  2291.         (setq p3 (polar p1 ang (/ l 2.5))9 I* k+ }  z. d
  2292.               p4 (polar p3 (+ (/ pi 2) ang) (/ l 5)). a  X8 X0 M( H5 @; L8 R1 [
  2293.               p5 (polar p3 ang (/ l 5))
    7 Z( d1 k! L3 R2 @* y: Y
  2294.                 p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))
    % T1 v/ N/ @* |6 Z8 F+ @6 ?
  2295.         (setvar "osmode" 0)' J4 E" |/ U( t, a# |
  2296. (command "pline" p11 p3 p4 p6 p5 p12 "")9 G. A/ }, Q$ s3 T* l! W. M$ p
  2297. (setvar "osmode" x)
    / }" U7 }: Q- p, o2 z6 m1 J
  2298. )8 B4 q6 a. }: k( [, n
  2299. ;----------------------------------------------------------------------------------
    5 |# V+ O- u: p# t. p$ {5 g
  2300. (Defun C:G2 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6. h! ^* A' \" N# K/ J
  2301.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))) D3 Y' C; V9 V, x5 o
  2302.    (setq ps1 (getpoint "\Chon diem thu nhat: "))
    ! m2 g1 J6 a8 z1 X8 @
  2303.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))) q# V% {  t* K2 v' m: Q, w
  2304.    (setq sb 50.0 sh 200.0 se 20.0)4 Q8 y3 K+ R7 {" a" z7 ~, @* N
  2305.    (setq ang (angle ps1 ps2))8 z) Z1 s& p- [6 O8 Q! Y" o
  2306.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    8 X( ]) p1 }8 |6 @+ k2 a/ {
  2307.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    : _  x9 u) y' O' ]2 k
  2308.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))9 {9 _* c( {5 r  u. t  J3 A' j* S
  2309.    (setq pf5 (polar pf2 ang sb))
    3 j( }4 {: B0 o* L; L
  2310.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))) ], A; `& b: R1 D$ v: d
  2311.    (setq pf6 (polar ps2 ang se))& I3 V3 M4 I# q! A) U
  2312.    (setvar "OSMODE" 0)- O" l% W# J; {# e% P
  2313.    (setvar "BLIPMODE" 0)3 `& N8 I: G6 I1 H/ N. \& @
  2314.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    / `$ {( I# E2 B8 x
  2315.    (setvar "OSMODE" 703)8 R% E; x' T- {  e
  2316.    (princ) )
    8 g+ j4 J% F0 o& U2 m/ E& v
  2317. ;----------------------------------------------------------------------------------- _3 N- H# U$ z% ?$ Z5 x  d" l
  2318. (Defun C:G3 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    2 ?" }. o0 ?' m! {7 i. H* e. h9 C4 s
  2319.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))
    " L7 T* K! P& E: M' k
  2320.    (setq ps1 (getpoint "\Chon diem thu nhat: "))3 v: p/ s! J9 U$ I. c/ v
  2321.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))1 T8 N5 p8 T$ A& c5 R
  2322.    (setq sb 100.0 sh 150.0 se 20.0)
    # u: h! y" a: @8 j$ l' U- ~
  2323.    (setq ang (angle ps1 ps2))9 r* p: |: F, u
  2324.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    0 w& t3 T# X/ z4 f+ i% Y5 A$ Q5 C
  2325.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    3 E  @* h/ O% X0 z# l& ?  g; V" g
  2326.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    / W+ G( B0 U9 B- @6 P- m
  2327.    (setq pf5 (polar pf2 ang sb)): ?% v1 A" o8 ^! o3 S
  2328.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    2 u9 W4 B( g* B1 E
  2329.    (setq pf6 (polar ps2 ang se))
    3 Z/ b" v9 _4 d: F# F- Y- L
  2330.    (setvar "OSMODE" 0)
    / l& i% @& V$ B% _8 B1 T4 N
  2331.    (setvar "BLIPMODE" 0)/ c. L' `- d- ?+ L# g
  2332.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")% P3 F# [+ U6 {* W+ b9 p" y
  2333.    (setvar "OSMODE" 703)
    7 @! n( T9 A2 J* E  k9 L0 q
  2334.    (princ) )
    8 q5 |9 E6 h( b2 u2 n! u! P' e5 j
  2335. ;----------------------------------------------------------------------------------
    $ F. q2 }$ K; Q* Y" O) Y
  2336. (Defun C:G4 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6- X) L$ j" S- E2 p; @4 ]
  2337.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE")), E/ [9 x- H# {7 V; \9 A0 X
  2338.    (setq ps1 (getpoint "\Chon diem thu nhat: "))4 \6 z! ]  C) ^; E' d: E1 j0 e
  2339.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))8 s* s+ v7 I& i9 d- ~( |$ E
  2340.    (setq sb 100.0 sh 250.0 se 20.0)
    8 j5 O) D2 d) u, [3 T+ u
  2341.    (setq ang (angle ps1 ps2))! G+ `$ I8 y; |* O8 U7 l
  2342.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    / B+ A2 t& E) c4 O3 d  y( e) ^8 U
  2343.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))( W9 m5 U0 T8 @
  2344.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    6 t) {5 |) n4 ]+ a7 _7 T3 r, A# ]
  2345.    (setq pf5 (polar pf2 ang sb))
    6 Q, w# @; z( @* w+ m
  2346.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))% w& y- O) a# m9 N4 |9 D2 y1 @
  2347.    (setq pf6 (polar ps2 ang se))! \, a* @9 ^* g+ y2 c/ O
  2348.    (setvar "OSMODE" 0)4 C3 w8 g' x3 @! Z4 D, t
  2349.    (setvar "BLIPMODE" 0)2 T. P" k) ]: M) L; m
  2350.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")! {8 f( z/ x! a+ e3 f
  2351.    (setvar "OSMODE" 703)% l: c0 h; a3 T/ Q
  2352.    (princ) )5 S" e0 Y, g( j$ a
  2353. 1 {$ z% g, {8 t8 ^. f5 z& z
  2354. ;==================================================================================! b& A, v; k$ j: c9 T
  2355. (defun c:ang (/ ent pt1 pt2 ang)/ G+ P$ p  _) }2 w. @5 I
  2356.    (setq cmd (getvar "cmdecho"))7 `" E/ y% g2 A. d' y
  2357.   (setvar "cmdecho" 1)& Q" o  ]/ I7 s* \: i3 @
  2358.   (prompt (strcat"\nThay doi truc toa do theo duong thang chon truoc"))
    2 L7 G9 _  U) w3 ?. V+ o' s# k
  2359.   (setq ent (entsel "\nChon duong thang:"))% U2 f4 \+ r6 W
  2360.   (if ent 3 c; h+ Z# D+ }2 z; y% p
  2361.    (progn# h6 i$ k. O/ \; w. }% s: I; ?1 m
  2362.     (setq ent (entget (car ent)))
    ! N& h$ Z- d6 g+ Y' w# A" H
  2363.     (setq pt1 (cdr (assoc 10 ent)))
    & c9 k  z9 W! e1 ?1 S
  2364.     (setq pt2 (cdr (assoc 11 ent)))
    ; K, n! O& w$ w3 @; m8 g
  2365.     (setq ang (angle pt1 pt2))
    6 U$ T1 p" h3 ^) x  Q, E/ [
  2366.     (setq ang (/ (* ang 180.0) pi))
    % }) T* @3 a6 g, D; Q  O
  2367.     (setvar "cmdecho" 0)
    + ^. q7 }% N& [- [+ E! `! T
  2368.     (command "setvar" "snapang" ang)
    7 H# \& |/ H1 R$ M7 j4 ]" F
  2369.     (princ "\nGoc cua truc toa do moi : ")
    9 y' O; J8 l* J. ?) g
  2370.     (princ ang)
    9 U/ g4 n4 @& b4 ]
  2371.    )8 ?: q* c# S! m
  2372.   )
    * C6 l8 Q1 n, Z( N
  2373.   (setvar "cmdecho" cmd). Y9 V9 v  u) U# I
  2374.   (princ)4 x5 G1 U& j& r7 @1 \4 a
  2375. )8 Z* Y6 ?! S( S0 a& \% I* }
  2376. ;==================================================================================; R( U% O7 f, q( H
  2377. ;==============================   KY HIEU DOI XUNG   ==============================# P7 a) a7 S" }% B
  2378. ;==================================================================================
    " ^3 X( H6 \& _; Y
  2379. 7 i! @8 H  a5 m2 f! w' {
  2380. (DEFUN C:DX (/ CMD OSM OLDERR PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 PT9
    . u( V- q! I  W4 L
  2381.                 SZ G45 G135 G90 G180 SS loi)
    * u$ K4 |4 v( G4 h0 w2 k
  2382. (defun loi (s)& r  D0 o5 W% i$ W3 _- h
  2383. (if (= s "Function cancelled")
    . U" [) U9 s$ b1 q
  2384.      (princ)
    2 n9 n1 m. ?2 X4 I! a" x# [; m
  2385.      (princ (strcat "Error:" s))
    - q4 D  @& k, _3 p
  2386. ): n7 N9 F" k2 M7 H
  2387.          (SETVAR "CMDECHO" CMD)5 X# r4 Z0 T, \# w
  2388.          (SETVAR "OSMODE" OSM)/ {: l/ _& z& ~0 k' K) Y% L- k9 i
  2389.         (SETQ *error* OLDERR); u" C; k, A& u% h+ _/ j
  2390.          (PRINC)7 a# p- Y& W; B7 g8 a
  2391. )
    1 _/ `% J9 p3 Z6 x: M
  2392. (SETQ CMD (GETVAR "CMDECHO"))
    2 p2 B3 K2 v' H+ O! E0 h8 J
  2393. (SETQ OSM (GETVAR "OSMODE"))# O7 A4 |) X; l8 w! n7 \/ M2 R8 }
  2394. (SETVAR "CMDECHO" 0), z5 f* v8 D/ H* N% D$ r
  2395. (SETQ OLDERR *error*4 P7 S/ l) o, p% W
  2396.         *error* loi), G& e3 |* Q* {
  2397. (SETQ SZ (GETREAL "Size <1>:"))8 l/ P9 l7 S# }
  2398. (IF (= SZ nil) (SETQ SZ 100)): l# j) B" A: S/ a8 S
  2399. (SETQ G45 (/ PI 4))
    + W% M1 ]1 u  R2 O8 Z/ r' g
  2400. (SETQ G135 (* 3 (/ PI 4)))
    - C* f! l5 `  `# U9 `
  2401. (SETQ G90 (- G45 (/ PI 2)))7 r4 K7 J/ N- B9 b
  2402. (SETQ G180 (+ G135 (/ PI 2)))
    3 O: x1 Z; K( y$ U
  2403. (SETQ PT1 (GETPOINT "\nDiem doi xung:"))
    * e2 t8 c' `9 G- l" x' K
  2404. (SETVAR "OSMODE" 0)7 H. i- ?1 r  f! f; z
  2405. (SETQ PT2 (POLAR PT1 G45 (* 2 SZ)))4 w5 r/ G4 ?3 ^6 f7 S5 n4 `& G$ @
  2406. (SETQ PT3 (POLAR PT2 G90 (* 2 SZ)))
    3 F6 w: Z3 p1 w1 i1 ]
  2407. (SETQ PT4 (POLAR PT1 G45 (* 1 SZ)))  U9 `+ A  [% T
  2408. (SETQ PT5 (POLAR PT1 G135 (* 2 SZ)))+ n4 u" ^% A3 _7 F& V( r1 Y
  2409. (SETQ PT6 (POLAR PT5 G180 (* 2 SZ)))" \& f" w, g8 j/ N: r& q6 }
  2410. (SETQ PT7 (POLAR PT1 G135 (* 1 SZ)))
    $ t2 G6 \  a, e! a. X4 S3 K
  2411. (SETQ PT8 (POLAR PT1 G45 (* -0.7 SZ)))2 K7 m9 x/ _6 ~2 B5 ?" m' w
  2412. (SETQ PT9 (POLAR PT1 G135 (* -0.7 SZ)))& ?1 C8 F8 |1 R5 H, N
  2413. (PRINC "\nGoc quay:")( a6 B: @) W) w. \8 S6 ]0 M
  2414. (SETQ SS (SSADD))
    + ^9 c& A6 O3 F# Z# ?
  2415. (command "layer" "m" "Dim" "c" "" """")
    + W  |! \/ C% X( z
  2416. (COMMAND "COLOR" "1" "")
    ) a5 l$ K4 a/ b3 j6 ?( m) v
  2417. (COMMAND "LINE" PT8 PT2 "")  t" [. f$ G  _  m+ O! }% K2 y
  2418. (SETQ SS (SSADD (ENTLAST) SS))
    # X6 c( z: ^! ~# x9 x6 [4 Q
  2419. (COMMAND "LINE" PT9 PT5 "")
    . O& O0 [" z' v
  2420. (SETQ SS (SSADD (ENTLAST) SS))
    3 ?8 f, ^# B8 s- q$ w/ F
  2421. (COMMAND "COLOR" "1" "")
    $ g3 Q$ n+ \9 @0 Y- d, v
  2422. (COMMAND "SOLID" PT2 PT3 PT4 "" "")
    ; ^7 n' K9 f$ l
  2423. (SETQ SS (SSADD (ENTLAST) SS))
    ) L9 |: @6 T* B2 H* i/ t$ W3 A
  2424. (COMMAND "SOLID" PT5 PT6 PT7 "" "")
    / s  y9 i1 D( U* y, Z) ~+ F
  2425. (SETQ SS (SSADD (ENTLAST) SS)); v9 o% R1 d) z1 P2 V+ _
  2426. (COMMAND "ROTATE" SS "" PT1 PAUSE)# R/ T9 X3 _# x0 R
  2427. (COMMAND "COLOR" "BYLAYER" "")
    2 _& R3 E( B1 a" j0 L
  2428. (SETVAR "CMDECHO" CMD)
      i" F1 M4 H: A6 f2 N
  2429. (SETVAR "OSMODE" OSM); G+ X% ~9 V8 |8 D6 C
  2430. (SETQ *error* OLDERR)( l! U7 G9 I4 K5 s! R
  2431. (PRINC)7 F2 G  ?3 w; X0 x' e; e0 O5 E8 B
  2432. )- e0 _* n/ g. X) d% f

  2433. , N6 v3 d) s* i
  2434. ;==================================================================================
    9 h, R/ {% y1 A2 }4 c) h2 y
  2435. ;=================================   KY HIEU TRUC   ===============================0 F9 i6 Z; i1 Z& Y' _9 O$ A% U
  2436. ;==================================================================================
    . x; l# w+ i- @2 }4 Y0 z- ^- Y# p
  2437. 4 X+ t5 J3 x3 L5 U0 c  L: o, |4 g
  2438. (defun C:vetruc ()4 l" C& Y$ q3 Y8 W  P0 N/ l( r
  2439. (setq bk (getvar "USERR3"))
    ! f. d( z2 u* U. X' z8 F- K1 C& s
  2440. (if (= bk 0)$ y$ h; j% c  c4 M2 g% G
  2441.   (progn, X  y. `2 f, j( b) T1 M
  2442.     (setq cont "1")' I% d" M6 t! r3 A
  2443.     (setvar "USERR3" 1)1 [6 E* K# y+ N4 a. n4 w+ m) W1 p
  2444.     )9 E+ k- D- A0 z& J9 X% z4 y/ w
  2445.         (setq cont (rtos bk))9 C7 K8 O/ {& H; L8 F9 u
  2446. )
    9 w5 o& b: `- M8 |# U
  2447. (setq pt1 (getpoint "\n Nhap diem dat:"))
    9 Z7 h+ B5 y0 G; x% v* f" J
  2448. (command "layer" "m" "Dim" "c" "" """")
    $ V3 B% S" ~& ?/ h
  2449. (command "osnap"  "")
    2 i1 P% `9 j" ?8 h% M  c
  2450. (COMMAND "COLOR" "7" ""): N& @0 T. G7 p
  2451. (command "circle" pt1 150 "")6 z$ v- N% A6 Z. l! r0 J( o
  2452. (setq pt2 (polar pt1 0 150))$ v; S3 y* [0 Q5 I) @
  2453. (setq pt3 (polar pt1 (/ pi 1) 150))# {$ L, j, p1 d8 u0 i
  2454. (setq pt4 (polar pt1 0 300))0 `4 l+ E- D9 T5 H
  2455. (setq pt5 (polar pt1 (/ pi 1) 300))
    % c; z* J  H7 u0 f: b9 J2 U9 g
  2456. (setq pt6 (polar pt1 (- 0 (/ pi 2)) 150))' C$ U+ @6 I$ n
  2457. (setq pt7 (polar pt1 (- 0 (/ pi 2)) 300))7 u5 _) f' k9 X8 r' J( H2 m
  2458. (setq pt8 (polar pt1 (/ pi 2) 150)): g0 o! y$ U+ J
  2459. (setq pt9 (polar pt1 (/ pi 2) 300))" s* Y, Z9 |& s# d# @
  2460. (setq pt10 (polar pt1 0 150))- G) J  B" g4 }; n8 I; x! b6 J: i
  2461. (setq pt11 (polar pt1 (/ pi 4) 150))8 ^& W1 p2 q; \: r4 T" c6 Q
  2462. (COMMAND "COLOR" "BYLAYER" "")
    / o( \) E; F9 Q7 d  W6 x
  2463. (command "line" pt2 pt4 ""). ?" j! o2 {$ o/ \& l
  2464. (command "line" pt6 pt7 "")' N4 s6 J1 R* T" a. ?, i1 E7 G
  2465. (command "line" pt3 pt5 "")- y. M0 n9 d) _3 r3 x/ g
  2466. (command "line" pt8 pt9 "")( }( C+ c2 j/ M1 I2 e( o# n+ }
  2467. (setq dk (strcat "\n Size:<"cont">"))
    5 O& e: |3 l5 Q/ K
  2468. (setq bk (getreal dk))
    ! k  H/ U* i6 J  U7 v  i
  2469. (if (= bk nil)% J/ P# z9 X( u# b3 q0 t
  2470. (progn6 q* i/ w; {8 \
  2471.   (setq bk (getvar "USERR3"))
    3 S. M4 s! A# u  `
  2472.         )$ h% c) m# l* F' u' t
  2473.   (setvar "USERR3" bk)6 K3 z4 i0 q6 |# x2 @
  2474.   )
    % n" ]4 z* `! p
  2475. (command "scale" pt4 pt5 pt7 pt9 pt11"" pt1 bk"")
    & ]' I; ]% D; F! N
  2476. (COMMAND "COLOR" "7" "")
    # m5 O! \6 c4 |  H
  2477. (COMMAND "STYLE" "Truc"  "impact" "" "" "" "" "")# t, P, c- N3 z6 l( T$ I
  2478. (command "text" "j" "mc" pt1 (* 150 bk) pt10 "A" "") ! i# o' a8 n& ]* M
  2479. (COMMAND "COLOR" "BYLAYER" ""). i% g# v3 u* L; O, w
  2480. ): V) e! p& Z# Q! z2 [& M3 B
  2481. % q/ e# P, b8 `0 A* o3 O- C
  2482. ;=====================================================================8 ]. ~1 x7 O0 z" o; o
  2483. ;CA - Reverses the case of text.  (Upper to Lower and Lower to Upper.)
    2 H) t; A1 }6 R/ X+ i9 A
  2484. ;) ]( }( A) d+ r9 n4 W4 z
  2485. ;Jeffery P Sanders; c4 q% Z' u) _* `4 y/ G/ g
  2486. ;6 Y5 ?9 m' L# B% Z' `
  2487. (defun C:CA(/ en enlist tx newtx cnt tp asc note)
    ( p) K$ J" B7 @3 c4 O3 _
  2488. (setvar "cmdecho" 0)
    1 W3 g- v+ _$ @
  2489. (if(setq en(entsel)), l5 x) v& Z, ?' J* D( V
  2490.    (progn
    , J; W  o$ z  R
  2491.       (setq enlist(entget(car en)))
    5 Y0 ]: @8 z- T' ~2 \" o  F
  2492.       (if(= "TEXT"(cdr(assoc 0 enlist)))
    # f( c. T& t: A- e7 Z0 `6 O, y. M
  2493.         (progn
    3 G! g8 _- p, P$ K
  2494.           (setq tx(cdr(assoc 1 enlist)). D9 {" J9 _- t' Q6 J9 o$ j1 k
  2495.              newtx "" cnt(strlen tx)
    9 J( L: v3 c+ Q* J' A
  2496.               note "\n...CASE Reversed. \n ", M8 z7 \9 j2 c; |* M
  2497.           )
    , j- U# G) S; N3 Q! x" g2 p
  2498.           (while (> cnt 0)
    ) B9 M* K3 ?; Z- R2 x
  2499.              (setq tp(substr tx cnt 1))9 P, i, r; R4 }3 X( h
  2500.              (setq asc(ascii tp))0 _  m* C8 q' Y3 j9 p( \
  2501.              (if (> asc 96)
    ! M- p2 A8 ^; a# _
  2502.                (setq tp(strcase tp))
    $ D6 M; U: r3 _+ c9 X) {/ m2 E# _% W
  2503.                (setq tp(strcase tp T))
    , b; i6 m" k% v8 Q
  2504.              )
    4 k( s5 y9 }4 v
  2505.              (setq newtx(strcat tp newtx))
    3 I# F& L. m# z% z8 J. J
  2506.              (setq cnt(- cnt 1))/ g. S! K. s1 O% J
  2507.           )
    . C* y& V6 q* b2 \% C3 _
  2508.           (setq enlist(subst(cons 1 newtx)(assoc 1 enlist)enlist))! l4 `& F3 e6 A! ^2 [- z
  2509.           (entmod enlist)
    / c/ _3 f* Y  q
  2510.         )8 U1 s% @) Z4 e% N
  2511.         (setq note "\n....Text Only Please. \n ")
    : h, l( y2 J/ W) k% `
  2512.       )
    ( n) b: K( y: }2 f( k* Q
  2513.    )
    9 h7 f4 a/ v/ l' T$ U9 y
  2514.    (setq note "\n....Nothing Selected. \n ")$ D4 u* Y( O4 r- i& Z! @
  2515.   )
    , p1 ?0 i* J! G# Z0 Z% p) y
  2516.   (setvar "cmdecho" 1)1 t9 Q7 H0 W- T, G
  2517.   (princ note)
    $ X* l+ L1 o2 Z% t8 d- f/ {
  2518.   (princ)
    % _" [8 F- n1 o2 }
  2519. ); K# F/ d* M/ m- a
  2520. / c3 O( E8 P  D/ Q8 W) B
  2521. ;=====================================================================* h3 @* H4 N/ g% M# l
  2522. ;==================== NEW TEXT STYLE UPDATE ==========================
    % B7 ~: Z+ }1 w! C% W
  2523. ;=====================================================================
    6 P+ ^' {  _0 d
  2524. ' W5 }, T: F4 L
  2525. (defun c:nS (/ tdt ssdt sodt index)" ?4 v7 `% F4 ^1 k) A5 d% K
  2526. (defun ObjName (ssdt /)
    % @; e5 D+ ?# [7 l) l
  2527. (cdr (assoc '0 (entget ssdt)))
    0 M9 R- g6 \0 _0 g* E2 u
  2528. )
    # g' r% o: s9 |6 R% _  h
  2529. (defun MoPL (ssdt /)
    " o& T1 z0 g: D
  2530. (= (cdr (assoc '70 (entget ssdt))) 0)
    ! \& j2 l3 d0 E
  2531. ), q+ K7 S) N% }: V7 d7 b0 z
  2532. (defun NoiPL (ssdt /)
      [0 ?* k3 S4 f$ T2 T
  2533. (if (MoPL ssdt)' |6 f  |4 d/ n. y, I% g% F
  2534. (command ".PEDIT" ssdt "J" "All" "" "X")
    : u) W* v8 [3 i% x1 y* O
  2535. )
    ! `( W6 j4 `: j' F1 ]
  2536. ); k7 R9 J% J* O( m) T: h5 G
  2537. (defun NoiLC (ssdt /)
    4 ]) h& S/ _* h4 r, q4 K
  2538. (command ".PEDIT" ssdt "Y" "J" "All" "" "X")
    ! K1 b: L! F, Q3 L
  2539. )
    ! c- `1 H. V  G* M3 L" g* e, T& L
  2540. (setq* }/ j% X* l% p5 z/ K3 h0 e- n
  2541. tdt (ssget)
    / [3 {  I2 [5 D% T' M, N1 h
  2542. sodt (sslength tdt)/ ?* X+ z- _" w! P9 i' d" V* f
  2543. index 0
    + H3 t. P  X' ~! A! ?! [' f$ |0 I
  2544. )3 C1 U  K4 G2 u, z
  2545. (repeat sodt
    9 p8 o# K! ?1 p0 r9 r
  2546. (setq: H& Y1 O* x8 s; s
  2547. ssdt (ssname tdt index)
    3 v5 Z  l& Y: J" t! S9 R
  2548. index (1+ index)( j/ y7 g; \  A/ c* D4 C
  2549. )  _- r& k8 ~, G. z' \$ @
  2550. (if (or (= (Objname ssdt) "LWPOLYLINE")
    0 n+ ^  g4 q* f; k
  2551. (= (Objname ssdt) "POLYLINE")
    % A* z& X* H2 n* S) k
  2552. )9 v3 x: t( H7 N& G
  2553. (NoiPL ssdt)7 ?) p% l# m; D" y/ w
  2554. )
    $ q) h9 b8 Y# S3 x* {1 J& f( S2 |
  2555. (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))! J) }7 h1 G. F4 W+ u' M# |+ k
  2556. (NoiLC ssdt), r4 s; @# b0 e# U- ^
  2557. )* S/ `' f/ r5 U: W9 q. h* v3 k0 G+ a
  2558. ); R! @) |* C* c+ Z
  2559. (princ)! w1 L. i( j( h+ a
  2560. )
    ! G/ F0 H5 n" g+ z9 p0 l5 f; l

  2561. & f) \- p# y' e+ K; R
  2562. ;=====================================================================& a* M5 V9 O/ Z% T/ }
  2563. ;;; AREAM.LSP
    $ w$ P, U1 r) e% `* G, [/ ~1 s; \2 v
  2564. ;;; Function: Calculates the total area of selected objects
    / ~, C0 {% E- O2 P+ Y/ D: K
  2565. ;;; By Jimmy Bergmark$ K, N: k0 {8 V; Y1 ^
  2566. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
    0 }7 D0 u: V; b0 h2 I4 x
  2567. ;;; Tested on AutoCAD 2000
    ! J2 j5 b% V) t& P- n3 |  O

  2568. 4 P5 u/ U  n+ C
  2569. (defun c:ea (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)
    ; e! Z: g6 n- ^4 \6 p9 Z! u
  2570.   (defun errexit (s)
    # P9 K* V6 B( U5 X  N
  2571.     (restore)
    / X4 H% q( ?( {0 D6 d
  2572.   )9 `9 Z' U# N2 ^

  2573. 9 w2 I$ b" c4 b' z6 B: {& {0 N- d
  2574.   (defun undox ()
    6 W! Z" N* u9 Q& \+ q
  2575.     (command "._undo" "_E")6 l9 Y4 p% j. `8 N! w1 B" r
  2576.     (setvar "cmdecho" oldcmdecho)
    7 u2 e: K" m( u5 \, K
  2577.     (setq *error* olderr)
    3 E2 w4 t' n8 p( T2 s, T- i
  2578.     (princ)6 s! `, s' D; s* L
  2579.   ); z5 _4 b7 Z% U/ G6 y8 F$ V- r
  2580.   Z9 H* L. N( n$ U9 Z$ @& T
  2581.   (setq olderr  *error*
    9 ?# O/ y7 h7 D- Z
  2582.         restore undox" w+ @9 `7 D' V# W* a% i4 ~2 r# k
  2583.         *error* errexit
    - ^$ z# Z* y& m, ]0 ?3 Q) P
  2584.   )
    0 U$ ^" F5 Z& i
  2585.   (setq oldcmdecho (getvar "cmdecho"))
    + |6 e! c, l. S5 a8 M
  2586.   (setvar "cmdecho" 0)* q2 |9 a4 d0 P( \
  2587.   (command "._UNDO" "_BE")
    # ?3 m& y! k8 A1 ?) F
  2588.   (if (setq ss1 (ssget '((-4 . "<OR")
    4 G/ k3 e  c$ `5 [8 G1 F7 W0 H
  2589.                          (0 . "POLYLINE")  z- ?( c6 Q/ j% i0 y* @8 H6 E
  2590.                          (0 . "LWPOLYLINE")! H" v; B1 K3 H5 X
  2591.                          (0 . "CIRCLE")
      j& s2 x5 B! K+ M
  2592.                          (0 . "ELLIPSE"). e. o8 q, ]+ N- T/ ~
  2593.                          (0 . "SPLINE"): s' k7 E4 ]3 W
  2594.                          (0 . "REGION")
    2 ^5 n, q7 {: ]2 L
  2595.                          (-4 . "OR>")( G& y8 n( `: k* \8 {8 X# E
  2596.                         )% g' Q, v* \% p3 {
  2597.                 )
    & g8 x, s1 U% s4 A
  2598.       )
    5 F7 L  j: d+ h4 Y# `
  2599.     (progn
    : _) P1 n) U" E
  2600.       (setq nr 0)
    3 Y8 s1 H7 ~- H
  2601.       (setq tot_area 0.0), }: u7 y* ]# A2 d
  2602.       (setq en (ssname ss1 nr))' Q6 }: o$ p- a6 j' D0 E1 C
  2603.       (while en
    % ?' L5 F2 Z8 H2 w
  2604.         (command "._area" "_O" en)8 Y. Z& c, X; o
  2605.         (setq tot_area (+ tot_area (getvar "area")))! C9 @" q& G/ q0 b& q, A5 v
  2606.         (setq nr (1+ nr))
    7 ^" {7 \" k# t; D: R4 Y
  2607.         (setq en (ssname ss1 nr))- ?) }- t. W  m! w4 o
  2608.       )
    0 o8 K6 B' o7 F3 ?5 ^
  2609.       (princ "\nTotal Area = ")
    % D5 D5 ^: P" ^  [3 l
  2610.       (princ tot_area)' I6 E8 w9 C3 N# f. Y
  2611.     )7 Q, e( g6 F  Y9 a; U; Q, a
  2612.   )
    ' a/ G4 w1 _3 |3 z7 g5 `
  2613.   (restore)) N* ^) ^- ?* _" V+ v5 i
  2614. )
    ( F  m* \6 v' C7 W0 v

  2615. % n$ T1 {) I! N. ^7 z* }! c' F, @) H
  2616. ;=====================================================================
    9 ^+ {( N5 E# F" s5 O5 k+ w" z6 N
  2617. ;;; By Jimmy Bergmark9 i* l4 D) O/ w* \, K
  2618. ;;; Copyright (C) 2008 JTB World, All Rights Reserved4 `& f% V" ^8 p" c1 t' A6 `
  2619. ;;;+ O  V( r1 K5 _
  2620. ;;; Created: 2008-03-31
    7 ~# d8 a2 l( J! ^
  2621. ;;;
    / |# f& c. n8 U! h$ N
  2622. ;;; Convert Attribute definitions to mtext' l; N2 b4 A. S. ~/ }8 h
  2623. ;;;* ^2 m8 s: n+ d; \

  2624. 3 ~  C  l! z4 F3 _, r8 w
  2625. (defun c:ATB (/ eset1 blkcnt en enlist tag1 ht pnt vl space)
    ; c/ V. [6 G$ S: s% @, Q
  2626.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))
    ( ^, `) V: P6 Q$ W; ]6 _/ r0 ~
  2627.         blkcnt 0
    5 O9 d' S% M/ Q- n4 `1 d, e. t- H
  2628.   )
    9 A/ P* H6 E0 E  ?$ P8 W" T
  2629. - u9 V6 W7 j. R, K
  2630.   (if eset1  z; h! x, i) O# Y8 i6 F
  2631.     (while (<= blkcnt (- (sslength eset1) 1))
      H3 G5 w$ ?4 b  ?) G
  2632.       (setq en           (ssname eset1 blkcnt)( u2 W7 f: v3 ]7 J3 d+ @0 v7 s3 n+ S
  2633.             enlist (entget en)0 j" P/ z$ ^; w' V, _+ e/ r
  2634.             ht           (cdr (assoc 40 enlist))) _' N) c" T. v/ e
  2635.             pnt           (assoc 10 enlist)) Y4 J- h0 R8 h6 o* q* z
  2636.             pnt           (subst (+ ht (caddr pnt)) (caddr pnt) pnt)
    4 K- D4 F) z! C' y
  2637.             space  (cdr (assoc 67 enlist))
    % u8 W! y! a, h
  2638.       )
    - R2 m9 }1 i3 q$ g# I
  2639.       (setq vl (list
    ' v% S8 I3 j( l9 K' Z
  2640.                  (cons 0 "MTEXT")
    " Y$ [# z  d% }! V( f$ ?  L* `4 O
  2641.                  (cons 100 "AcDbEntity")8 V" e) _: z5 H5 p* f) i
  2642.                  (cons 100 "AcDbMText")/ l* p: D6 u0 C1 \
  2643.                  (assoc 7 enlist)( C: f3 ]) m9 i2 c
  2644.                  (assoc 8 enlist)
    & \( c( k% B  w& t9 k
  2645.                  pnt3 w+ p6 E  z2 q* B. I
  2646.                  (assoc 40 enlist)8 ]4 u- K; N. |% T8 W* D
  2647.                  (cond ((assoc 62 enlist))+ P0 M, I9 f) J
  2648.                        ((cons 62 256))/ {$ M) s' c% b9 t" v- j
  2649.                  )6 H* N: n7 o8 z+ d7 x
  2650.                  (cons 1 (cdr (assoc 2 enlist)))
    # F8 [# }  ?9 N  @$ M4 t6 T0 V
  2651.                  (if (= space nil)
    ' D7 a, A/ R; s4 r+ t1 D
  2652.                    (cons 67 0)7 Q8 A% e; ~5 L$ _8 C* w$ h7 x) x- o
  2653.                    (cons 67 space)
    9 a8 u9 c0 i* q8 c0 W6 M2 M: U
  2654.                  )
    * |. M; \' L+ h* m" \
  2655.                )
    3 n% O; H9 E* O. b; D
  2656.       )
    6 y4 L; Z" \( d1 B0 o9 O
  2657.       (entdel en)
    ! X) k& T& M' i  \2 w
  2658.       (entmake vl)" S" P" u! a1 J  V" V5 \
  2659.       (setq blkcnt (1+ blkcnt))" X1 S+ u" F. g  b
  2660.     )
    ' J) e8 V1 F; e5 T: `
  2661.   )
    / h/ v% }) n1 \& X$ t
  2662. )
    1 R  @2 _4 m  z, m% [  P; T
  2663. - v  ?; [2 _" q/ O0 r- m
  2664. ;=====================================================================
    0 B3 ~3 v  Z9 w, ^- \

  2665. 6 j! P; a  S) i( ?1 \) {1 @* O: U" v
  2666. (defun c:xxx ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)0 z7 r7 c3 K: Q6 S: d6 W. @7 Q
  2667. ; Khoi dau cua chuong trinh3 N. E, @  j+ `. N5 p  F
  2668. (princ "\nCopy Inteligent...\n")
    * j9 k! n8 a0 `% ~
  2669. (setq         luuecho        (getvar        "cmdecho")0 C: z5 D. e7 h$ l( i2 x- \
  2670.         luu        *error*
    ' c1 ?$ r3 B& G/ N# o' i5 G, k3 r
  2671.         *error*        ketthuc
    " o$ G& G. y9 A- n
  2672.         cumdt         (ssget); j! }8 \6 k1 _
  2673.         dodai         (sslength cumdt)8 }/ o! A; C1 R# s. Q
  2674.         goc                (getpoint "\nSelect base point:"). {% |" g! z6 z/ [" p# j
  2675.         thoat                nil2 B% r: K: ^1 b$ Q; e& q$ D' Z
  2676.         dem                0
    / U9 H3 B- P- o6 D% n
  2677.         textxl                nil& S3 ]/ O, |; `- U
  2678. );
    5 q9 r* s# |8 y- ?; H
  2679. (setvar "cmdecho" 0)
    % z  e& b; S$ \  _! J
  2680. ; Loc ra duoc ong text de xu ly
    ( T$ e* {' \# V6 x6 C9 ?+ {
  2681. (while        (and         (= thoat        nil), F  a3 N! y% `" }! |5 m8 \
  2682.                 (< dem        dodai)5 o1 B* X2 b7 q. _% y: P/ u
  2683.         )) B1 H# E% @! H, w9 F2 O+ b. K+ {
  2684.         (setq         ten        (ssname cumdt dem)6 o! ~! \, ^' Z" H
  2685.                 dem        (1+         dem)
    # l$ r$ N5 c# L* w; |% j& |# B0 V! |0 w  p
  2686.                 doituong (entget ten)
    & y0 f  Q1 P% ]) e3 O
  2687.                 kieu         (cdr (assoc         0        doituong))                        8 k( G  I9 ?" z/ P7 K9 O* f* f
  2688.         )
    8 G, ]3 z3 \# w1 n* o
  2689.         ( e3 s, m. m7 f. V  P3 O
  2690.         (if (or (= kieu                "TEXT")
    3 M  K& F: x/ x  K  H( D) K
  2691.                 (= kieu         "MTEXT")        ; Q) ]: R0 h- t" P8 ]
  2692.                 )( G( T8 P% E# X" q$ F
  2693.                 (setq         thoat        T# B9 {. }0 w+ f, e0 S& B
  2694.                         textxl         (cdr (assoc 1 doituong))         6 i8 d' R) [! ?5 Q# n9 V& R
  2695.                 )' E: j7 ^8 y4 i: z7 _) W. ~
  2696.         )
    7 |7 O/ k7 }: k+ o1 A  l6 H
  2697. );
    " k4 d7 t, Q: K1 c& ~7 `5 K
  2698. (while T
    7 \" E6 S& M! d
  2699. (setq        toi                (getpoint "\nSelect next point: " goc)
    * z% r8 D9 K- [8 @8 s# z
  2700.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))" D8 P& T$ z6 c0 I
  2701.         dem                01 R: F4 ^! A" o$ m* H* d- M; W* G
  2702. )
    2 ?5 ?) ]3 X5 N1 T2 J
  2703. (while        (< dem dodai)% w$ m) a- o! [$ O6 J# g9 {: T
  2704.         (setq         ten        (ssname cumdt dem). I' |. C5 ~, ]
  2705.                 dem        (1+         dem)
    ( _$ V7 Z+ h/ V0 Z6 t  H; t  j. N' c
  2706.                 doituong (entget ten); u2 F0 d& o  ~# P% h
  2707.                 kieu         (cdr (assoc         0        doituong))                        8 T3 ~6 S; [% j, J
  2708.         )
      p1 ~( z; ?7 q5 ]
  2709. + _2 T, V! L. O) @4 X0 Z. x  u" ?
  2710.         (if (or (= kieu                "TEXT")
    " b( x: \  p. s: w2 m- ?
  2711.                 (= kieu         "MTEXT")        0 h' O. _8 a) U( _& X
  2712.                 )& H( T5 S9 _! Z& D8 @
  2713.                 (doitext        ten)9 A4 Z2 S+ C  n9 O3 w
  2714.                 (copy_dt        ten)2 ~/ ?$ B: A  a7 g( h3 ~) x# S

  2715. % c* X6 c+ L6 s) y  |- s; U4 R
  2716.         );if
    1 G) s' K7 y' r9 i
  2717. )
    - b% C; O& G, g! }( c+ ]! _
  2718. );while/ b7 v7 F& C1 ]1 h0 V* c0 O
  2719. (ketthuc)
    5 B5 R5 r& p/ e7 L* p* H
  2720. );defun
    ! r6 P4 f% g' h$ K3 O! z' Y+ }
  2721. (princ)
    6 t# r2 o) C* ?1 Q# s0 i" ?

  2722.   f0 U0 p1 Q$ h( }
  2723. ;=====================================================================0 M4 x0 l* n+ o! [5 q
  2724. ;;; By Jimmy Bergmark
    2 b  R( v+ n+ s  w/ d
  2725. ;;; Copyright (C) 2008 JTB World, All Rights Reserved0 j. M8 f8 S' \/ O4 Y4 a; ~
  2726. ;;;' @- G& G; `- [9 j( T
  2727. ;;; Created: 2008-03-31
    " |$ M5 d1 K+ g( h& c. l6 T
  2728. ;;;
    ! V" `3 C' A" t1 }- s5 {
  2729. ;;; Convert Attribute definitions to text
    . z: r) ]" u0 S0 O: ?
  2730. ;;;" O/ ~1 R- z# K4 _1 C
  2731. 0 B) o4 x  r5 f) f4 g( d$ ^2 F) ], H+ I
  2732. (defun c:ATT (/ eset1 blkcnt en enlist vl space)
    1 F* x! Y) F2 k8 |  C4 J' B
  2733.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))+ Y! O3 Y% Z+ P3 `7 r5 L% P
  2734.         blkcnt 07 L! u; n) _; N; P" a
  2735.   )
    * \  C# R, c* l" k* @

  2736. " }! t2 m0 N+ Y" |) u
  2737.   (if eset1
    1 \4 N& N. _4 ^  q6 x9 @
  2738.     (while (<= blkcnt (- (sslength eset1) 1))  c2 c# X9 a/ i+ B" n+ `- X% w
  2739.       (setq en           (ssname eset1 blkcnt)  n* i! @  S% B! o9 h3 B0 Q
  2740.             enlist (entget en)' b+ M, Y! O  @( `5 h, _) Q. o8 @
  2741.             space  (cdr (assoc 67 enlist))
    2 `' n- `- ]+ K
  2742.       )
    6 n/ e5 F- |1 M. d% i% v
  2743.       (setq vl (list$ n) l( Z( j: E
  2744.                  (cons 0 "TEXT")
    ; M8 }9 ]$ ~8 g3 g0 r$ B4 R
  2745.                  (cons 100 "AcDbEntity")" |% m* _" V/ |, U. a( m) }+ h
  2746.                  (cons 100 "AcDbText")8 K& j" I) c# S. e9 M+ q, w" t
  2747.                  (assoc 7 enlist)
    4 r4 v  s6 s$ G( L) L
  2748.                  (assoc 8 enlist); @: t0 x& C) e+ u' s6 Q# o
  2749.                  (assoc 10 enlist)
    ( a5 p) C9 i2 ^  L/ `! C# B
  2750.                  (assoc 40 enlist)9 o4 J. }1 F- k: j; L% v% C
  2751.                  (cond ((assoc 62 enlist))4 M4 y  a  Q0 Y3 j
  2752.                        ((cons 62 256))
    - s9 E7 ]4 H7 y8 j, u9 e: _0 t3 o9 V
  2753.                  )
    ( Y. r9 H2 x  A$ s1 e9 N
  2754.                  (cons 1 (cdr (assoc 2 enlist)))0 T, E, n( b" h/ M+ |7 G
  2755.                  (if (= space nil)
    . |8 S  M2 {' P  m6 k. u$ f8 R4 m
  2756.                    (cons 67 0)% H3 O6 R% J. Y, f9 p' q
  2757.                    (cons 67 space)/ i" _$ U% B6 Y
  2758.                  )
    2 z3 S7 _2 Z: ?: J* R
  2759.                )
    5 ?$ m3 S) N. A3 @- D! Y! C
  2760.       )
    5 T8 Q1 S/ z1 r3 d3 k+ H1 |) p6 ?- D- M5 `$ h
  2761.       (entdel en)) h2 k) s; V# l$ y; x- f
  2762.       (entmake vl)
    % y* m& }# `5 d0 b2 s/ ^
  2763.       (setq blkcnt (1+ blkcnt))
    ) r: X# ?) {) {0 ^( B7 u
  2764.     ); u4 J, t4 X- z$ k; W
  2765.   )
      ~. J! h8 r0 X( D9 I
  2766. )
    . f$ g6 H( C8 C4 `# ?* E' y
  2767. ;=====================================================================; y& ~- E1 n+ B6 Y' \
  2768. ;============================ Doi Truc ===============================* r+ b/ k1 V: X( m7 N7 f: b2 E. W
  2769. ;=====================================================================
    3 p$ w0 A$ G2 U

  2770. # B, D. t! a6 G
  2771. ;=====================================================================1 U* L% ?2 \( z8 \& d! Q' @2 u' M
  2772. ;=============== FUNCTIONS GA 1+3+5+7+9+11+13+15+17+19 ===============! P1 I. J8 w2 H/ c0 ]1 P# l
  2773. ;=====================================================================
    0 m7 N; s7 O2 T
  2774. (defun c:ga1 ()
    - K% W# B  n$ x5 y2 F
  2775. (setq a (getpoint "\nChon diem: "))
    ' N( Z4 i, Z1 S1 W
  2776. (setq b (getpoint a"\nChon diem: "))
    , P9 b8 ~# G8 A( ?" x! m
  2777. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))1 z7 u. @) w! K" |- {& `% r( l
  2778. (command ".circle" c a)0 C* y% V1 }8 P' A* c" p; ^
  2779. (command ".line" a c "")
    ) y7 N; U" R; Z! f( C
  2780. (command ".array" "last" "" "p" c "1" "" "")
    , J5 d. `: v$ g# Q9 b1 k
  2781. (princ))
    8 G9 [9 c. K9 b) e

  2782. " q, \4 W0 l" ~+ P% ~
  2783. (defun c:ga3 ()
    " O" F0 C5 G9 Y% c
  2784. (setq a (getpoint "\nChon diem: "))
      z- ~2 Z" T! C
  2785. (setq b (getpoint a"\nChon diem: "))5 J0 p  ^, p% T$ g! i2 c$ M
  2786. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    4 A/ m5 @0 W* o
  2787. (command ".circle" c a)
    $ J" A$ S" S1 x2 K' L
  2788. (command ".line" a c "")
    4 G% e+ j" I/ A7 E; B: I
  2789. (command ".array" "last" "" "p" c "3" "" "")
    ; h6 i# @: n5 F1 `
  2790. (princ))
    : B0 S  S9 _% c  ]

  2791. 2 w. C" v) G+ J, d0 E5 [
  2792. (defun c:ga5 ()
    ; y* y( Y/ S5 b) B1 r
  2793. (setq a (getpoint "\nChon diem: "))
    9 _5 K% F7 ^, M( e5 B
  2794. (setq b (getpoint a"\nChon diem: "))
    ! U5 K. b6 L1 Z1 d* C; h' w: g
  2795. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    , }1 B( ^4 U  O$ M( T; A# y1 }- u
  2796. (command ".circle" c a)8 L2 h9 \$ ?7 Q; A- y) P- P6 S
  2797. (command ".line" a c "")# ?* \  p8 J2 E5 U' Q' p
  2798. (command ".array" "last" "" "p" c "5" "" "")2 Q4 J5 W2 R8 R/ K& G
  2799. (princ))
    5 U# t. |" e/ h! m; V

  2800. - [& I9 P$ O. B, {& L
  2801. (defun c:ga7 ()
    2 J1 f7 \1 }; i& o3 `
  2802. (setq a (getpoint "\nChon diem: "))$ k. M; r  U/ C
  2803. (setq b (getpoint a"\nChon diem: "))
    8 c. l$ f* Q% C0 d8 X# z' D
  2804. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))6 u! \% Y( E  f6 ^3 E$ i2 E
  2805. (command ".circle" c a)! M- N+ V8 ~! ^& p
  2806. (command ".line" a c "")
    " H4 L# p  g& T7 A" q. a/ V
  2807. (command ".array" "last" "" "p" c "7" "" "")
    . m1 C- F* V* t9 T
  2808. (princ))
    2 E" D2 U# d% g8 Y, `3 N
  2809. 5 I, O4 w7 X0 C4 e
  2810. (defun c:ga9 ()
    : e7 w  p1 ~5 F: ~& @6 U/ z0 n  e
  2811. (setq a (getpoint "\nChon diem: ")); V( Z) p4 s' [9 L
  2812. (setq b (getpoint a"\nChon diem: "))% y0 W% D: w& s; ~8 k# }
  2813. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))1 d( s- d0 y. B3 c
  2814. (command ".circle" c a)
    1 Z7 j/ u2 G6 n+ X/ ^
  2815. (command ".line" a c "")
    # Q- }1 z: c# \! N3 ~- k) W9 \
  2816. (command ".array" "last" "" "p" c "9" "" "")
    0 e" D9 G. E( }- |& c
  2817. (princ))
    # P, @7 ^0 r/ M6 B& z

  2818. - ~! Y  v8 l, J: `/ {
  2819. (defun c:ga11 ()
    8 {# `3 e, w0 O" O3 T2 k
  2820. (setq a (getpoint "\nChon diem: "))
    ! ]  Y7 \8 ?" g+ A( B9 G, q1 g
  2821. (setq b (getpoint a"\nChon diem: "))
    + Z4 |$ n9 A7 _
  2822. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))4 Z& O* L3 D1 I( Z( G0 F( }
  2823. (command ".circle" c a)  K' q! h/ ]) k& E
  2824. (command ".line" a c "")# g1 b' ?5 j2 ~# _5 m
  2825. (command ".array" "last" "" "p" c "11" "" "")
      U" H# ?% i# m- H7 U- Z
  2826. (princ))! Y1 ]3 R' W0 `# \; {+ i

  2827. 7 E- N1 n2 e; i+ M2 G
  2828. (defun c:ga13 ()4 o& G# P1 A$ ^/ H2 \
  2829. (setq a (getpoint "\nChon diem: "))/ W: C# ^. {9 j3 O7 _- T1 C% u
  2830. (setq b (getpoint a"\nChon diem: "))2 A" `3 b7 R. I: {2 [: n
  2831. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    & A" \# i: j) [% S
  2832. (command ".circle" c a)' F) k% S- I7 E7 K+ M- G" b& e
  2833. (command ".line" a c "")
    6 Y1 H1 s! w  s& t; P" J% T3 |
  2834. (command ".array" "last" "" "p" c "13" "" "")/ f9 @/ Q0 R( D# I# v: c# u
  2835. (princ))
    4 A+ n  `1 `4 E2 ~& v5 m4 E

  2836. ' M0 |4 B/ x" C; U: v
  2837. (defun c:ga15 ()/ \' k, z' Y0 `) r+ f2 G
  2838. (setq a (getpoint "\nChon diem: "))
    . m* a! c8 w6 A  A! d; \) k
  2839. (setq b (getpoint a"\nChon diem: ")): s% Y5 W# D- X' n% a- Y2 c$ [) ?
  2840. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    9 {( ]! I# m; O8 W  Z1 z
  2841. (command ".circle" c a)& C5 @4 `6 E3 L0 v! p
  2842. (command ".line" a c "")  h' p( E. c, L0 R
  2843. (command ".array" "last" "" "p" c "15" "" "")
    2 Z: _' A2 i: I
  2844. (princ))0 c0 v) e. Z2 q& o4 \8 {( a' x
  2845. . L7 P8 U7 t! z4 |! `
  2846. (defun c:ga17 ()
    3 v7 |, `( [. s7 e
  2847. (setq a (getpoint "\nChon diem: ")): H7 n, J; g1 x" w: z4 s* q
  2848. (setq b (getpoint a"\nChon diem: "))! L. j( \# ^2 t4 i9 w: r6 R0 A( M& I0 q
  2849. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    8 ^* ~- G0 N* G/ ]3 i
  2850. (command ".circle" c a)' C) O) O+ N5 p# q! ]3 {
  2851. (command ".line" a c "")/ v4 ~# w$ a5 K  [+ X* `
  2852. (command ".array" "last" "" "p" c "17" "" "")5 y5 s2 [8 n5 M
  2853. (princ))+ m/ X7 ?$ ]% x" ?# l8 r

  2854. , V# ^- V, ~3 W: ]0 f
  2855. (defun c:ga19 (): k( b7 C, ?6 E$ K8 i, s$ K
  2856. (setq a (getpoint "\nChon diem: ")): W6 d3 q: f% r) ^) f8 k' q
  2857. (setq b (getpoint a"\nChon diem: "))8 K4 k/ z9 x5 R3 b
  2858. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    4 o1 m' z8 w7 s; c0 V9 V* h( U
  2859. (command ".circle" c a)
    2 t$ W9 C( `' L' u& X% I5 ?4 u
  2860. (command ".line" a c "")
    : p( H7 v! w7 D
  2861. (command ".array" "last" "" "p" c "19" "" "")4 o" G# L% O5 T  ]0 p: @5 T! g, S
  2862. (princ))- K7 y; M: Z( l
  2863. & G" O! _9 E' w. |1 S+ t. \
  2864. ;=====================================================================( |6 \8 K% D% H$ _
  2865. ;============== FUNCTIONS GA 2+4+6+8+10+12+14+16+18+20 ===============
    ; Z, O% [+ i* t0 C
  2866. ;=====================================================================
    5 c; w# T' X4 \; d
  2867. (defun c:ga2 ()1 j) B& E, \* X7 S7 }; W
  2868. (setq a (getpoint "\nChon diem: "))8 R1 i: O' k+ y- l$ K
  2869. (setq b (getpoint a"\nChon diem: "))* v0 k$ L$ }: S8 c% D' w' H
  2870. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))); W4 l  o7 k- B" i
  2871. (command ".line" a c "")* M- D/ I8 y5 r( u0 {
  2872. (command ".array" "last" "" "p" c "2" "" "")
    6 x0 ]9 I* }5 n2 d
  2873. (command ".circle" c a)  s* q& R* R( W+ w& j
  2874. (princ))3 p# R5 C/ b% F. t% c) z

  2875. $ p" @1 }- b  O: ~9 p# y/ @
  2876. (defun c:ga4 ()$ g) W0 A# r* z
  2877. (setq a (getpoint "\nChon diem: "))5 W; P- D2 z3 K$ z6 L& p" f
  2878. (setq b (getpoint a"\nChon diem: "))8 v: x4 l+ X8 Z! K7 n
  2879. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))5 @- M; Y' s, y; v1 i5 v
  2880. (command ".line" a c "")! O" x, \! _2 B' r0 o# d, j5 B/ a
  2881. (command ".array" "last" "" "p" c "4" "" "")
    2 I( A  ~; l# F0 ~3 A; d% Z3 ]
  2882. (command ".circle" c a)
    # ^8 Q7 T8 R4 D2 S: b2 k3 Z) Q; \
  2883. (princ))
    & C4 M) C: J' S& P( s5 J0 ?

  2884. - [5 Q7 F. [' x6 y/ Z; P8 d
  2885. (defun c:ga6 ()8 l7 S9 h# h( W( `
  2886. (setq a (getpoint "\nChon diem: "))0 t+ g5 B& m4 y  p
  2887. (setq b (getpoint a"\nChon diem: "))
    9 T, V5 J  |  {) g
  2888. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))). r* p- y) s; w4 |
  2889. (command ".line" a c "")! c, v8 Y# J: g
  2890. (command ".array" "last" "" "p" c "6" "" ""); |( ]. x( t) P
  2891. (command ".circle" c a)0 F$ `, O0 V2 |
  2892. (princ))
    . ~' i7 c3 L8 R+ _
  2893. ' z) h, F% {  }, O- G% c7 C$ ~
  2894. (defun c:ga8 ()
    + [0 ?# }# c- N) E. U3 d2 |8 f( v. m" y
  2895. (setq a (getpoint "\nChon diem: "))
    / U( P0 B6 L7 @/ O& D! l8 t
  2896. (setq b (getpoint a"\nChon diem: "))2 g3 @1 d. x  `* D* S+ E
  2897. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))  M- @! i! G& k( h, d
  2898. (command ".line" a c "")
    # r% x  ^1 K' U2 r7 M! J
  2899. (command ".array" "last" "" "p" c "8" "" ""). G* g: Y8 o7 u2 z& F! x- e& U
  2900. (command ".circle" c a): ^' e! n2 R* H. [) y
  2901. (princ))
    6 L8 ~8 `: C3 [( `2 o1 N0 K6 {
  2902. ) N' M$ {& @9 u% F, q
  2903. (defun c:ga10 ()
    8 ^" T; ?3 `! q2 Z
  2904. (setq a (getpoint "\nChon diem: "))& f% V+ V( W! m1 F; h" {" }
  2905. (setq b (getpoint a"\nChon diem: "))
    ' B- e' z: L! C. h! y1 |
  2906. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ( S) X' ~8 Q3 I
  2907. (command ".line" a c "")
    , W) J& ~6 @% E; R
  2908. (command ".array" "last" "" "p" c "10" "" "")
    ; [7 l( e9 ]5 V& b+ e3 \
  2909. (command ".circle" c a)
    6 _6 E& P( T' ]
  2910. (princ))- B, s5 N$ C' S$ j: ]

  2911. . T6 i: q- C- o' M  ?! k4 i5 e
  2912. (defun c:ga12 ()! a4 |( g( o. G  `/ V
  2913. (setq a (getpoint "\nChon diem: "))8 ^: M8 t! B1 D
  2914. (setq b (getpoint a"\nChon diem: "))( y. `4 r2 z5 c2 j" O
  2915. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))) n* P) ~  p8 K
  2916. (command ".line" a c "")5 K* @2 x  N! ]. n
  2917. (command ".array" "last" "" "p" c "12" "" ""): O+ N& r% L2 ~# w
  2918. (command ".circle" c a)
    ' @8 z& a+ r2 F1 g
  2919. (princ))
    * k9 N/ c  v% U& T% S) |/ W

  2920. - ^9 q5 W; y- E: ~$ s
  2921. (defun c:ga14 ()
    # ?2 _; i5 |# a6 }2 H' @
  2922. (setq a (getpoint "\nChon diem: "))
    * j3 |) ^3 s! |! B9 Q8 B4 Z
  2923. (setq b (getpoint a"\nChon diem: "))7 O; y: g& i8 Y; c" J3 [1 [: O+ m
  2924. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))7 F7 a+ T6 J& D! H1 \& C
  2925. (command ".line" a c "")! B' h% [  ]: a0 B# x( N
  2926. (command ".array" "last" "" "p" c "14" "" "")( i8 U# r& \& k- z/ K
  2927. (command ".circle" c a)
    + c* a  \' r0 v! L# [* b& I+ O. D
  2928. (princ))2 U$ |1 _. c: V
  2929. + _9 z. [& J# C# g
  2930. (defun c:ga16 ()
    3 z" v! g% i6 m2 b  K
  2931. (setq a (getpoint "\nChon diem: "))% }1 H+ d( o( m1 g/ ]
  2932. (setq b (getpoint a"\nChon diem: "))
    + ?6 h2 v, P, a7 C) l& V8 }# h& O
  2933. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))0 F; `% B# F; f/ D
  2934. (command ".line" a c "")
    - N6 H6 _9 g. Y. l
  2935. (command ".array" "last" "" "p" c "16" "" "")
    3 R1 K* L8 K- @2 n
  2936. (command ".circle" c a)
    + }$ _4 H8 G2 C, I
  2937. (princ))
      @9 H" |2 h2 E  b( z& u% v

  2938. : E: N1 F) V8 W, E, D/ K5 m8 ]
  2939. (defun c:ga18 ()
    ' E8 w1 a4 z. e
  2940. (setq a (getpoint "\nChon diem: "))
    - P+ `% V& U: B3 ?# V
  2941. (setq b (getpoint a"\nChon diem: "))2 z) ]1 l0 g9 W. W) T; l7 B
  2942. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ; F( w) l9 b- z' a. {" k
  2943. (command ".line" a c "")
      L3 ^# a, A4 y$ W5 R
  2944. (command ".array" "last" "" "p" c "18" "" "")
    ; m4 M3 e$ V" h+ R) u  m9 ^
  2945. (command ".circle" c a)3 J. }4 `& U! a3 Y
  2946. (princ))6 O- h4 f% v8 r" M

  2947. " l" D! p' I$ ^8 H; ], z" E
  2948. (defun c:ga20 ()
    3 t# ~( I2 r* ^
  2949. (setq a (getpoint "\nChon diem: "))1 _7 t0 `* {4 ^. b' o8 k/ w. p
  2950. (setq b (getpoint a"\nChon diem: "))/ h/ r4 O! K. }- F. T
  2951. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))) q3 h; x7 {& {! Y6 s3 c9 z# e2 {+ c) ~
  2952. (command ".line" a c ""), ]4 E; ~$ A9 ~2 n& M
  2953. (command ".array" "last" "" "p" c "20" "" "")
      `% b5 ]2 P( M5 Z$ K
  2954. (command ".circle" c a)  w9 R+ }/ d, u4 u8 B4 U
  2955. (princ))* U7 P# p& M$ r6 v; j
  2956. , ~3 h5 D6 ]) [5 ?# x
  2957. ;=====================================================================* V6 C2 M: ~) Y9 R2 c
  2958. ;============== FUNCTIONS GA TUY THICH : EVERYTHING IF ===============
    & `/ K) P3 k) ~. F1 h
  2959. ;========================== 06-11-2016 ~ 18h00 =======================
    ! A; ]( N6 s7 ?
  2960. ;=====================================================================4 q  o/ t5 H0 @2 ~% i
  2961. (defun c:ga ()
    & ~0 i- L, L3 [
  2962. (setq a (getpoint "\nChon diem: "))
    ) c0 q& k# s/ T5 i$ o8 N: k# Q! X
  2963. (setq b (getpoint a"\nChon diem: "))
    8 i: q9 x" ^  ~! p& m. \, k
  2964. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    $ k& ~/ U' q6 l/ v4 _2 V5 Q
  2965. (command ".circle" c a). _2 r9 @: Y& o* ]9 q; o
  2966. (command ".line" a c "")
    4 @! H$ [0 Y8 N1 I
  2967. (command ".array" "last" "" "p" c "NUM" "" "")
    , o9 N2 I; j' A
  2968. (princ))% R4 [! R, {9 Q, G4 X. F$ }" [
  2969. # m  ?# O2 q+ q7 e
  2970. ;=====================================================================
    4 `6 v/ a6 n8 |, I/ X2 [, x
  2971. ;=========== FUNCTIONS HOA THI TUY THICH : EVERYTHING IF =============6 y3 C1 G7 |! G# k; i( A& y/ e
  2972. ;========================== 06-11-2016 ~ 18h40 =======================" K# u# m0 \& B! E
  2973. ;=====================================================================" f- w  f' ]1 l' Z) t5 ?- @
  2974. $ R$ i" n: n( @/ T' I: f9 \, @
  2975. (defun c:hoathi ()  \& S- z# k: W- a& C
  2976. (setq a (getpoint "\nChon diem: "))
    * x6 f% j  C% _8 I- ]
  2977. (setq b (getpoint a"\nChon diem: "))
    3 a3 a* Y% {9 Y0 S" Y
  2978. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))7 E2 M, n" l! o' ~5 s% h/ _
  2979. (command ".line" a c "")
    : [' s: a! f0 J& X0 J
  2980. (command ".array" "last" "" "p" c "NUM" "" ""). ]1 }: _$ d  T& ^+ S* w2 e
  2981. (princ))2 W9 O) S; _" w/ F1 {
  2982. ! @/ p# L: o/ }8 J% Z7 I8 W
  2983. ;=====================================================================
      W: @) h% n5 @$ x6 g3 r0 I
  2984. ;============= FUNCTIONS CUNG TUY THICH : EVERYTHING IF ==============( y5 v6 U+ I& \3 s3 h" P' T% L
  2985. ;========================== 03-11-2024 ~ 19h33 =======================
    6 a& A1 l' J/ {/ E# M* O5 N
  2986. ;=====================================================================$ h8 U7 f, Z5 m8 s9 V! k$ L

  2987. " Z2 E9 x& e$ J" _# Y2 }
  2988. (defun c:cung ()
    ) f( d$ b1 |( g+ i
  2989. (setq a (getpoint "\nChon diem: "))
    % g8 ~9 x+ E* M
  2990. (setq b (getpoint a"\nChon diem: "))
    ; J) ~# V! C$ B) a
  2991. (setq c (getpoint a"\nChon diem: "))
    ( N3 [! l, v% H7 K7 S
  2992. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))0 E' X8 g( ^" z& {- ?, {. W
  2993. (command ".arc" a b c "")
    1 C+ w* s# T9 N0 ?# [
  2994. (command ".array" "last" "" "p" c "NUM" "" "")# s3 k% c# P/ o
  2995. (princ))
    3 v9 Q7 R" ?# H* F9 c+ {

  2996. " A- d: W/ G) n; p! M$ }  ]& z) ?" R
  2997. ;=====================================================================
    $ {5 \% @  v2 u2 _* @7 t
  2998. ;============ FUNCTIONS HECLOIC TUY THICH : EVERYTHING IF ============1 {; C% c- E: c* T" g
  2999. ;========================== 03-11-2024 ~ 20h02 =======================- Y) J0 s6 Z  @4 i0 {" c! q9 t7 j
  3000. ;=====================================================================
    # ?8 b. w0 y( q- K
  3001. 3 t/ w  b8 E9 q+ `/ b4 {
  3002. (defun c:hecloic ()
    + X- |- g$ R3 [" Q0 m: M
  3003. (setq a (getpoint "\nChon diem: "))
    , I" H( X' z6 {9 ?+ ]' O
  3004. (setq b (getpoint a"\nChon diem: multi "))
    % ]; U, j* C0 B+ \. c' ^
  3005. (setq c (getpoint a"\nChon diem: "))(princ)
    6 i2 s0 m2 c/ m% V
  3006. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))), m6 `- e9 N3 Z; \3 t+ D  t
  3007. (command ".arc" a b c "")
    4 F# D0 d3 V4 `0 Z; u; u, G
  3008. (command ".array" "last" "" "p" c "NUM" "" "")7 ?& k, i1 M  g1 H% a( m& [
  3009. (princ))2 s; u. t/ o1 t' A9 D7 b; [& r
  3010. 1 I, g" P! Z- G6 o
  3011. ;=====================================================================, h( f# Q' b$ A) e$ Q
  3012. ;============== FUNCTIONS GAY TUY THICH : EVERYTHING IF ==============
    ( H  S% N. n4 k, }
  3013. ;========================== 03-11-2024 ~ 19h38 =======================
    : Q4 n+ [+ t$ B- T- ?
  3014. ;=====================================================================
      P9 j- ^3 H& n) j- o

  3015.   ~' O9 \+ H3 W5 d+ z
  3016. (defun c:gay ()2 f4 M+ U5 N5 c6 ]( {3 @' H
  3017. (setq a (getpoint "\nChon diem: "))
    $ q! W- K$ ^6 b
  3018. (setq b (getpoint a"\nChon diem: "))4 {" I" S1 r7 n: W; D
  3019. (setq c (getpoint a"\nChon diem: "))(princ)
    4 j4 N! y9 {" {# W- J3 m5 C0 b1 \
  3020. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))' ]# L. T. ?  a+ D' E8 H
  3021. (command ".pline" a b c "")
    ! {- ~3 R9 D1 m. [9 I! i9 y$ T
  3022. (command ".array" "last" "" "p" c "NUM" "" "")- Q0 e+ O: H( q/ _# n: m
  3023. (princ))* b9 I6 b5 A: Z" w; V$ r4 _

  3024. 3 U0 K  w2 M& y# U, p0 c, M  y. G: @
  3025. ;=====================================================================, w: H4 i$ {" ^) f, j) ]8 M
  3026. ;============ FUNCTIONS HECLOIT TUY THICH : EVERYTHING IF ============  j( }/ _9 |& |* V
  3027. ;========================== 03-11-2024 ~ 20h02 =======================. S8 y! ]% N' d
  3028. ;=====================================================================
    + g+ K6 |/ c% F5 X  s9 [
  3029.   a0 p5 e. j; k$ w0 q% ]9 F) t# v
  3030. (defun c:hecloit ()
    $ F, T8 [! F0 _$ p# `  P
  3031. (setq a (getpoint "\nChon diem: "))
    3 P1 Q7 Q2 V" P, d
  3032. (setq b (getpoint a"\nChon diem: multi ")), Z" q3 R! T0 h8 E
  3033. (setq c (getpoint a"\nChon diem: "))(princ)
    9 G3 G/ g# c; T8 d  L9 z' |$ j* J5 E
  3034. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))4 Y; I* J1 k  I# C
  3035. (command ".pline" a b c "")# \, C+ {& m0 t" z
  3036. (command ".array" "last" "" "p" c "NUM" "" "")
    8 I2 W3 ?1 Y: R# ^5 u+ U
  3037. (princ))
    9 r% C2 [1 T# ]9 I. G( Z
  3038. & L, y- ]- a, E2 z4 F" c, w, m
  3039. 9 i$ S( B1 D0 ^" h
  3040. ;;; ============================ Merge Hatch =============================5 }2 X5 t1 ~# r3 s7 C' |  t

  3041. 2 u& Z1 _- E7 p  S2 G, {# D: E
  3042. (defun c:mh (/ ss entht sl i dt dtht)
    9 ^! {1 f; ~5 D6 B  H

  3043. * l) l2 S( K8 G& k0 N1 ]' B1 }
  3044.   (princ "\nMerge Hatch - free lisp from CADViet.com")
    ; u! O& ?) P& x/ N
  3045. 5 g' v1 ~$ K1 \2 W0 n
  3046.   (setq+ B# M+ F" J, U: ^/ i
  3047.     ss (ssget '((0 . "HATCH")))
    / ]  y/ U3 v: d  {# }$ H% o% z
  3048.     sl (if ss
    6 c! l# H& F2 o: J# D2 y9 }+ t
  3049.          (sslength ss), A% ^6 W# T+ a/ m: o7 g6 X8 s( T
  3050.          0
    ' u; j  g% h8 m# Z
  3051.        )4 }8 L7 E: C) P# r, d3 L: y
  3052.     i  0
    ( k1 H* s! d4 Z" r. s9 a2 L
  3053.     l  0
    0 s( V, l3 E; ^  C; C
  3054.   )7 j4 L) d  x& m9 q1 W

  3055. ' B2 x+ B1 _& X' D7 G
  3056.   (repeat sl6 x, L& o; _+ ^8 }4 c9 L) w* U
  3057.     (setq3 f! Z4 G( y8 A) @  R) L
  3058.       entht (ssname ss i)/ M. A: X# O2 s3 |' z% r
  3059.       dtht  (getbdata entht)
    0 S! i6 j4 H: H) M7 l3 x7 ]# _- s
  3060.       dt    (append dt dtht)) e2 {% Y; r& K# U$ R9 x, G! O7 j6 [( @
  3061.       l            (+ l (cdr (assoc 91 (entget entht))))
    & Y2 I2 I$ @, H$ c: ^8 }
  3062.       i            (1+ i)- I8 Z% v: v. Z% O" v
  3063.     )7 n0 A4 Z2 t+ r' R6 \
  3064.   )
    1 ?$ I# J7 Q* y& n0 B. G5 a
  3065. : [/ I8 U& w* |; K3 `' A/ B& Q
  3066.   (setq        ent  (ssname ss 0)
    7 ^& d, b! u; Z8 Q9 @$ r7 W  ?8 y  J
  3067.         ss   (ssdel ent ss)
    + y, [9 {7 y1 h4 F$ b1 [; o
  3068.         tt   (entget ent)1 o, a( d/ e; ?* h0 D
  3069.         duoi (member (assoc 75 tt) tt)
    $ T7 {. t& n& t+ t* ^$ X
  3070.         dau  (reverse (member (assoc 91 tt) (reverse tt)))
    # ^" p! v7 J" g) a( l0 ]
  3071.         tt   (append dau dt duoi)
    8 L5 a# y1 C6 E- @
  3072.         tt   (subst (cons 91 l) (assoc 91 tt) tt)( g( d4 p6 w; t3 ^6 D( G' r
  3073.   )
    0 s* O  x1 j+ ]+ d
  3074.   (entmod tt)$ j9 C9 r1 c; k7 E

  3075. ) L5 P  f4 ?8 e1 M. ]1 q
  3076.   (command ".erase" ss "")6 @7 }  j# L! n
  3077.   (princ)# H; ?4 Z% t, T; H9 G
  3078. )
    . O1 k6 ]- p. x2 `& R! x: G  f8 D$ p
  3079. " I4 h4 A, ^& c! z6 z
  3080. (defun getbdata        (ent)9 f3 a9 Z% a$ ~* k) C
  3081.   (setq        tt (entget ent)2 j4 t3 y5 Q$ f9 {7 O
  3082.         tt (cdr (member (assoc 75 tt) (reverse tt)))
    ) k: ?9 E. q8 G( P
  3083.         tt (cdr (member (assoc 91 tt) (reverse tt)))3 s7 g7 i6 A5 i5 z" C5 `
  3084.   )  C& j+ j! M! V
  3085. )
    ) ^2 O! o2 z3 I: [5 i* }$ w

  3086. $ z* I2 k  g4 d! W- E4 F4 i" u
  3087. : d# U& E3 ]! _
  3088. (princ)+ g( B% }0 w0 z& g* V! t3 @3 J  M! m
  3089. 9 L1 v1 O9 Y5 c- ?% u% d, g3 c
  3090. ;;; =========================== CAC LENH LAYER ==============================
    - Q9 A) K. n4 f1 R6 H! h" f) H
  3091. ;;; =========================== Layer hien hanh =============================
      V& X4 L& Z9 W* B
  3092. # b% d* X. Q* {' b. \1 g9 j. b
  3093. (defun layset (/ LAY) (setvar "cmdecho" 0)1 V. }7 ?$ d/ y6 x# y# H+ x- o8 O
  3094. (setq LAY (entsel "\nPick vao doi tuong muon Layer hien hanh la Layer cua doi tuong do : "))
    " L2 O' `) p% J3 e: T; v
  3095. (if LAY     (progn     - \: ~0 `0 z" |5 G1 @) I
  3096.   (setq LAY (cdr (assoc 8 (entget (car LAY)))))/ W$ J& J8 {2 k1 G0 z' q
  3097.   (command "_.layer" "set" LAY "") (princ (strcat "\nLayer : " LAY " da la hien hanh."))  )
    7 g0 Q9 n7 H) ]. W+ N/ l
  3098.              (progn0 C. Y- p  x( o: S) {9 S9 [
  3099.       (if (not ddlop) (load "ddlop"))  (if (setq LAY (ddlop)) # G( x7 d: W+ h8 H) M- E6 Z
  3100.              (progn- v) N! s3 @3 ]4 ]
  3101.             (command "_.LAYER" "ON" LAY "THAW" LAY "SET" LAY "")  (princ (strcat "\nLayer : " LAY " da la hien hanh.")) ) ) ) )(princ) )) L, {) f( `; A" u- x
  3102. (defun c:LLL     () (layset))(defun c:LAYSET () (layset))
    / q3 B# Y  h/ h& e( a: k
  3103. $ S7 g  Q# d  T& U# t
  3104. ;;; ================== Cap nhat doi tuong vao layer hien hanh ==================
    ) ~% q0 D1 G5 o6 V* ^9 G7 v6 [5 |
  3105. 0 n) O8 E& f) s" ]* q. ?" b" ?6 T
  3106. (Defun LAYCUR (/ SS CNT LAY)  (setvar "cmdecho" 0)' f5 o8 H6 W/ E' x# t6 e' D
  3107.   (if (not (setq SS (ssget "i")))
    ) E; s. n6 y  F1 I* Q- X
  3108.     (progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: ")6 r1 i% e7 f% f7 H6 @+ q' p6 _$ H
  3109.       (setq SS (ssget))    )  )3 W0 X, w  O3 `$ B/ G
  3110.   (if SS    (progn
    - C& i  a$ E1 h. O
  3111.    (setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " doi tuong tim thay."))                  (command "_.move" SS "")                     
    : _2 `6 ]9 c0 `! x
  3112.       (if (> (getvar "cmdactive") 0)               
    / R2 H* ^$ `1 Z
  3113.         (progn
    . u# m7 h$ d- H2 k+ h- ^
  3114.           (command "0,0" "0,0") (setq SS  (ssget "p") CNT (- CNT (sslength SS))    )   )9 P8 n- N7 S: T" p# _- W
  3115.           (setq SS nil)     )  (if (> CNT 0)                                 
    # j- Y5 O, Q' H
  3116.           (princ (strcat "\n" (itoa CNT) " doi tuong tren layer LOCK.")) ) ) )
    ! }2 ~/ [2 @& @" H9 S2 @* y
  3117.   (if SS    (progn
    ' r8 }) }1 F4 }* n+ c$ i
  3118.       (setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")
    ' G& M% ?! C' i! ]5 ^7 I, U& N$ F
  3119.       (if (= (sslength SS) 1)' j! x& R5 X  Q( [! x6 h
  3120.         (prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))9 _* k& E7 l; l
  3121.         (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) ))  (princ) );end$ h/ \2 ]5 Q8 X; p2 o& C6 k
  3122. (defun c:LAYCUR () (laycur)) (defun c:LHH    () (laycur))1 e5 ~2 ]& b7 m, h* ~9 X! C

  3123. 4 }. W; T! P8 c6 ^7 @* \3 Q1 X
  3124. ;;; =========================== Layer Iso ===================================: s1 g$ @1 u$ f' a1 y/ `
  3125. 3 c/ B$ j8 r/ J& C
  3126. (Defun LAYISO (/ SS CNT LAY LAYLST VAL)  (setvar "cmdecho" 0)1 c6 X* x- i' s; O* \- ~! [
  3127.   (if (not (setq SS (ssget "i")))    (progn
    0 p/ N/ a$ x4 p3 Z6 i2 @
  3128.       (prompt "\nChon doi tuong tren layer(s) muon lam viec doc lap: ")4 |3 O; P1 ~9 \* m
  3129.       (setq SS (ssget))    )  )
    9 [! s7 @  c. K5 H* k
  3130.   (if SS    (progn      (setq CNT 0)
    7 e8 z2 o% a1 D; `8 d( s- W8 J
  3131.       (while (setq LAY (ssname SS CNT))6 A( v1 L% W1 h8 j6 k; ^  g
  3132.         (setq LAY (cdr (assoc 8 (entget LAY))))# Y0 l" d# @" x
  3133.         (if (not (member LAY LAYLST))
    1 b+ q6 ^# ?% ]
  3134.           (setq LAYLST (cons LAY LAYLST))        )
    - l: d- S- Q2 W5 }# y
  3135.         (setq CNT (1+ CNT))      )
    2 f% t# }% ?* U- k- L2 ^
  3136.       (if (member (getvar "CLAYER") LAYLST)
    / }, y- ^9 q, {4 e" e
  3137.         (setq LAY (getvar "CLAYER"))) b  I7 `: V0 \0 k
  3138.         (setvar "CLAYER" (setq LAY (last LAYLST)))      )! t# I2 m! i/ Y, q  _. Q- \% y' y
  3139.       (command "_.LAYER" "_OFF" "*" "_Y")8 V1 i8 X5 X7 c9 k: C
  3140.       (foreach VAL LAYLST (command "_ON" VAL))
    5 v/ i% K- D7 M* P! p( y6 ]
  3141.       (command "")            (if (= (length LAYLST) 1)8 E) E( e- A+ R7 i7 S4 }
  3142.         (prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))
    + v+ {" u& R4 J9 b
  3143.         (prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "9 s' S* V) h( j1 b
  3144.                         "Layer " LAY " la hien hanh."   )  )  )  )  )  (princ) )) H) f; V& N& T' Q! C* \
  3145. (defun c:LAYISO () (layiso)) (defun c:LI () (layiso))
    2 T8 |0 M; P) h! d( }( v) h0 Z

  3146. # f8 @1 g! J) @: |8 f  m
  3147. ;;; =========================  Layer Match ==================================2 R& v0 Z4 C8 {

  3148. : t4 ^* d# o6 R& ]: L' U
  3149. (Defun LAYMCH (/ SS CNT LOOP LAY ANS)
    / c6 F! x/ Y8 x
  3150.   (setvar "cmdecho" 0)  ^. `" |1 f* {( v! |
  3151.   (if (not (setq SS (ssget "i")))    (progn
    . h) i1 m' C, W: C( p
  3152.       (prompt "\nChon doi tuong muon thay doi Layer : ")
    " b! ^' Z* I% Z
  3153.       (setq SS (ssget))    )  )
    * h1 o! x" d1 a5 R% Y
  3154.   (if SS    (progn
    - n: E5 g7 H0 f* r5 g
  3155.       (setq CNT (sslength SS)), T% D' W# f& b: ?
  3156.       (princ (strcat "\n" (itoa CNT) " found."))  (command "_.move" SS "")                        , ]" m$ w9 l+ K# Y2 x2 d  C* V
  3157.       (if (> (getvar "cmdactive") 0)   (progn
    3 `% [. x0 Y7 z! B: A+ P
  3158.           (command "0,0" "0,0")  (setq SS  (ssget "p")4 p8 ?- K  S9 `9 Q( a
  3159.                 CNT (- CNT (sslength SS))    )    )( C+ t5 E( g( `% X* z9 @: e5 f
  3160.         (setq SS nil)      )  (if (> CNT 0)                                    % c4 T9 I3 B0 B
  3161.           (princ (strcat "\n" (itoa CNT) " tren layer LOCK.")) ) )  )3 F3 H% j! k9 G% P' U# @" |
  3162.   (if SS    (progn
    1 n- H5 d$ P4 m; v  k
  3163.       (initget "Ten")  (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")  LOOP T  )
    , {9 U; Z% }6 p1 ]
  3164.     (while LOOP        (cond& a+ E3 y$ @  c7 x6 L4 o. p# v
  3165.           ((not LAY)7 Z9 k: r$ B8 \" M- [
  3166.             (prompt "\nKhong chon doi tuong.")
    1 @' X8 r! K6 f$ z! r5 h; L7 n. m, L& X, v
  3167.             (prompt "\nSu dung layer hien hanh? <Y> ")
    , Z+ Y& |7 [( R# S' F9 g" H' k; e
  3168.             (setq ANS (strcase (getstring)))# ?# g6 V& T6 q2 Q- ~
  3169.             (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))
    1 z5 d1 n/ T, ^. p% E
  3170.               (setq LAY  (getvar "clayer")  LOOP nil )  )  )
    . q) j; I7 \" }  g. J
  3171.           ((listp LAY)  (setq LOOP nil) )$ I' U; y/ s6 v& X, N, u
  3172.           ((= LAY "Ten")
    7 }  [0 O8 C4 t
  3173.             (setq LAY (getstring "\n>Nhap ten layer: "))6 x( `0 R! B8 L
  3174.             (cond
    6 g+ V, x8 T) i2 F
  3175.               ((tblsearch "LAYER" LAY)  (setq LOOP nil)   )0 |# i% z' J. }1 S. g/ o
  3176.               ((/= LAY "")
    $ R; N+ y$ X: Q: P+ F. d/ n+ Z
  3177.                 (prompt "\nLayer chua co trong ban ve. Tao layer moi? <Y>: ")
    * k# Y* X' Q( B
  3178.                 (setq ANS (strcase (getstring)))
    6 v* ^9 L2 C+ `: E: Z2 L& O* C7 F
  3179.                 (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))6 m. |- g$ `) k! j" s, i, s- `
  3180.                     (progn, r; b) u5 e, R) d/ h# T' ^; _
  3181.                         (command "_.LAYER" "NEW" LAY "")# F0 [2 a# g& \  r1 i
  3182.                         (setq LOOP nil)   )
    1 x9 J  [1 I) o- w
  3183.                     (prompt "\nLoi ten layer.")   )   )  )  )   )* F' ^  M% U* J; t6 g
  3184.         (if LOOP  (progn (initget "Ten")3 e- Q$ t( \1 t7 a4 c* r
  3185.             (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")) ) ) ); while LOOP" T) n5 X5 F$ H; B- }. |: v6 f
  3186.         (if (listp LAY)3 Z6 I8 L* F' O; A2 z4 z7 J
  3187.         (setq LAY (cdr (assoc 8 (entget (car LAY)))))      )
    9 e( _  k7 Q3 e. V
  3188.       (command "_.chprop" SS "" "_la" LAY "")
    1 x% ~7 F8 i% N( u5 g: @/ k% L+ ?/ k
  3189.       (if SS  (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong thay doi toi layer " LAY )) )
    6 ?  g# Z2 Z5 [5 a# }; X3 k
  3190.       (if (= LAY (getvar "clayer"))- \! l1 c2 d% o% T
  3191.         (prompt " (layer hien hanh).")  (prompt ".") ) ) )  (princ) )
    # Z0 G# w1 e  T- y
  3192. (defun c:LAYMCH () (laymch)) (defun c:CLL    () (laymch))" L, ?. A/ n$ ?( x) p( B- _. V

  3193. ; M0 q( d5 `( s' j% v, t
  3194. ;;; ============================ Layer OFF =================================3 F+ N& i5 G4 ^  b* D; k# o

  3195. ) f5 [. A& V# u. E+ J7 ^9 j
  3196. (DEFUN C:LJ (/ SSET SSL ENT LAY I MODE)
    8 {" @& K* H, W( J  X
  3197.    (SETQ SSET (SSGET))9 G' w& N1 Z. V0 O! ]
  3198.    (IF (/= NIL SSET)
    . M& m- l+ h1 U9 G
  3199.     (PROGN
    6 r. V+ h5 v- E
  3200.      (SETQ SSL (SSLENGTH SSET))% ^; H3 o0 g. J. @/ }# f* y# f3 ~
  3201.      (SETQ LAY "")
    % {. {2 k+ A/ h2 W% C
  3202.      (SETQ I 0)
    . |1 @% }7 m2 U
  3203.      (SETQ MODE 0)
    ! |9 A0 @. f2 t0 d
  3204.      (WHILE (< I SSL)
    6 r8 G$ q2 D5 {* g) Y* T' U
  3205.                  (SETQ ENT (ENTGET (SSNAME SSET I)))3 c2 P  s7 U5 h) k
  3206.           (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )8 ^+ l0 W# Q; h
  3207.           (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )), C+ P% C  L! N
  3208.           (SETQ I (+ I 1))8 i& g8 U4 c. E
  3209.      )% e0 F0 {0 @$ J# q% K/ A$ s# t
  3210.      (COMMAND "LAYER" "OFF" LAY "")$ A% W" m8 q/ E
  3211.      (IF (= MODE 1) (COMMAND "") )
    3 W# u; Z0 Z# s; ~% s2 B3 r) ]& l
  3212.     )9 e4 a- Z+ M& V7 G
  3213.    ); B& b3 |0 L: O' |7 H
  3214.    (PRINC)
    , j& a; m) L. ~5 S
  3215. )
    2 `( o0 ?! r4 [  L

  3216. . C, |) g. C3 Z: n* _
  3217. ;;; ================================ Layer ON ==============================. A% m$ c. N' }+ ~: X- F/ Q- m

  3218. 9 I' q" V& Q3 {: b4 e0 v+ B
  3219. (Defun LAYON ()  (setvar "cmdecho" 0)2 `$ \; q, ~& X+ b) B( a# t
  3220. (setq Lay loff1) (setq Loff1 Loff2) (setq Loff2 Loff3) (setq Loff3 Loff4) (setq Loff4 Loff5) (setq Loff5 Loff6) (setq Loff6 "0"), k0 U# h8 g0 K$ n- h0 K
  3221.   (Command "LAYER" "ON" Lay "") (princ (strcat "\n      Layer : " LAY " da ON."))  (princ))
    / S; j' H. P8 H3 c: x
  3222. (defun c:LAYON () (layon)) (defun c:LOO   () (layon))$ |! v% H& \/ [8 ~0 D
  3223. (Defun C:LO () (setvar "cmdecho" 0)  (Command "_.LAYER" "_ON" "*" "") (princ "\nDa ON toan bo cac Layer !") (princ))
    % U; e2 G3 a6 Q
  3224. # m& E# P% h5 ?/ z2 Q& Y! |
  3225. ;;; ============================== Layer Freeze ===========================
    ( `* r1 E- b3 g% L) q+ v& J! m
  3226. $ f  l  l# L" `( t& J1 A  ?/ R
  3227. (Defun LAYFRZ (/ LAY TEMP)(setvar "cmdecho" 0) : A- U) N, c. T* ]
  3228. (prompt "\nChon doi tuong tren layer(s) muon FREEZE: ") (SETQ SSET (SSGET))! T, @1 n. I0 H* Y: g, P
  3229. (IF (/= NIL SSET) (PROGN
    - G; m: e) q0 ~* R- }$ P
  3230.      (SETQ SSL (SSLENGTH SSET))  (SETQ LAY "") (SETQ I 0) (SETQ MODE 0) 7 C  K  b' {/ ?2 P; K5 H  L
  3231.      (WHILE (< I SSL)% J* Z) E1 _( Z0 `
  3232.        (SETQ ENT (ENTGET (SSNAME SSET I)))& A! r3 Y, M5 c# n( |( |1 Q7 H6 E
  3233.        (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
    % y! Y& i4 Z# t( P& I9 n
  3234.        (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )) (SETQ I (+ I 1)))" K  T, ]$ C9 ]* p6 C
  3235.      (COMMAND "LAYER" "FREEZE" LAY "")
    - {" U$ l7 Q) N
  3236.      (IF (= MODE 1) (COMMAND ""))))
    4 X# N4 j1 H: R4 _- k% [! q, V
  3237. (setq Lff6 Lff5) (setq Lff5 Lff4) (setq Lff4 Lff3) (setq Lff3 Lff2) (setq Lff2 Lff1) (setq Lff1 LAY)
    : w' c  ]/ A) \2 a5 A, n
  3238. (princ (strcat "\n      Layer " LAY " da FREEZE."))(setvar "cmdecho" 1) (princ) )
    ! s5 y0 Z+ p) U7 }0 g2 w
  3239. (defun c:LAYFRZ () (layfrz)) (defun c:LF     () (layfrz))3 O6 r' X! Z; H: Z
  3240. 9 c) r6 F) z4 g$ S, W5 Y8 t% u0 K
  3241. ;;; ============================== Layer Thaw ===============================
    6 z! U5 F* l; s' B: A! {
  3242. 1 b- h. a5 E6 x3 v$ t
  3243. (Defun LAYTHW ()
    & U' L' O/ {' M' n: S% N" c3 E
  3244.   (setvar "cmdecho" 0)  K9 j4 l' F1 b7 @4 K4 K
  3245. (setq Lay lff1) (setq Lff1 Lff2) (setq Lff2 Lff3) (setq Lff3 Lff4) (setq Lff4 Lff5) (setq Lff5 Lff6) (setq Lff6 "0")
    & K6 J1 F7 m# Y
  3246.   (Command "_.LAYER" "_THAW" LAY "")6 F  |& @$ ~+ U4 `
  3247.            (princ (strcat "\n     Layer : " LAY " da THAW."))
      h% D  @9 T3 m+ R1 w
  3248.            (princ) )1 `; e/ c8 _4 U$ q# n9 s7 @2 N
  3249. (defun c:LAYTHW () (laythw)) (defun c:LW    () (laythw))$ a% d8 Q7 g7 Q& f

  3250. 9 R6 ], y, I, k) \  c! p
  3251. ;;; ============================== Layer Lock ==============================
    - A' l# _( n: w1 c* B
  3252. 0 ~1 D* \- u6 W( N
  3253. (Defun LAYLCK (/ LAY)
    + U- I9 x# t% S" d6 c7 p" c% @- w" R
  3254.   (setvar "cmdecho" 0)  H% A- l! P/ {3 V
  3255.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon LOCK: "))* E' L5 \0 @6 w8 \  z+ h
  3256.   (if LAY; G8 Q' `* f. i2 S9 ?- G' k
  3257.     (progn% c4 a0 p% D+ E+ P' @! b# u5 A
  3258.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))
    3 l' X( X0 E: ]+ a% U& r+ F
  3259.       (Command "_.LAYER" "_LOCK" LAY "")
    ; E9 o' _8 A1 l/ l8 ?! _
  3260.       (princ (strcat "\nLayer " LAY " da LOCK."))    )  )  (princ) )& w0 |1 d0 I6 |( B
  3261. (defun c:LAYLCK () (laylck)) (defun c:LK     () (laylck))
    ' K8 G/ V3 O7 J& W( b* Y
  3262. ) y$ x5 N2 n7 H6 r) y: L0 E6 Q+ C
  3263. ;;; ============================== Layer UnLock ==============================8 ~  ^) f; U" Z$ f4 |0 E
  3264. " ^/ s, J$ F, B3 f( w
  3265. (Defun LAYULK (/ LAY): y, U, {4 n1 a+ C  D9 K" p5 Y) E8 Y
  3266.   (setvar "cmdecho" 0)3 N3 |2 I3 B7 r; e. H3 O; _
  3267.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon UNLOCK: "))0 j7 h9 Y1 I" L  @2 m) d
  3268.   (if LAY8 J# H4 q% |' [: X2 C
  3269.     (progn
    9 R* O* G0 J8 [$ i" Y
  3270.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))
    6 ]/ a3 B6 C9 t  J7 n
  3271.       (Command "_.LAYER" "_UNLOCK" LAY "")4 |* Y: X. A* s& Y/ X! W0 |
  3272.       (princ (strcat "\nLayer " LAY " da UNLOCK."))    )  )  (princ) )3 P7 M9 o6 u) I3 p
  3273. (defun c:LAYULK () (layulk)) (defun c:LU    () (layulk))
    ) ^; y6 m1 A4 F

  3274. ! v7 p! B9 W  R/ G% r9 X
  3275. ;;;===================== Delete all objects of Layer ========================
    ( i% d' |5 o2 G. n9 w/ k
  3276. 2 i6 S# w6 K2 K* y" h# [8 @
  3277. (defun DELAYER (/ ocmd L S)
    9 D, Y) b5 P8 a' D! ?
  3278.   (setq ocmd (getvar "CMDECHO"))2 z& O) B. O3 @5 U0 T( q" y0 ^
  3279.   (setvar "CMDECHO" 0)
    1 l, V3 p) d5 n
  3280.   (setq L (strcase (getstring "\nLayer(s) to delete: "))). S: G; G. r3 R* y" P6 O
  3281.   (setq S (ssget "X" (list (cons 8 L)))) $ c( E; @& q. t5 b( l7 s& t
  3282.   (if S 2 A$ H0 Y5 d; c$ q8 N6 q9 T
  3283.     (command "ERASE" S "")            
    7 r% p6 b; k6 A3 P
  3284.     (princ "Layer empty or not a valid layer name.")  ) 0 E; K1 N' N+ W/ [: O
  3285.   (setq S nil)                        
    6 X  f. Q* ?5 a: h6 S
  3286.   (setvar "CMDECHO" ocmd)             6 H9 d1 _2 ^$ v) c
  3287.   (princ) ) 0 G) ?/ D* u1 X9 F& I% u/ k( Q. C
  3288. (defun c:DELAYER  () (delayer)) (defun c:DELLAYER () (delayer)) (defun c:DEL      () (delayer)). i; Q  g2 L7 ?# D8 ~
  3289. 9 ?% p7 w: U  n: i- m& z, J
  3290. ;;; ========================= HET CAC LENH LAYER ===========================* M/ f; z  X) s! d6 U8 r
  3291. ' h5 p* z0 L0 @
  3292. ;;;====================== EXTEND NHIEU DOI TUONG ===========================
    * s9 B& t9 J# t8 L5 e( Y

  3293. 7 z; [4 b6 ^7 F+ b
  3294. (Defun C:EET ()
    ' ^; }: |* m- [5 m$ d
  3295.   (Setq CVAR (Getvar "CMDECHO"))  (Setvar "CMDECHO" 0)
    " D" T# ?( M! g3 O0 Y
  3296.   (Prompt "Chon doi tuong dich cua EXTEND :")  (Setq CUTEDG (Ssget))% N. @  A8 A9 D* k- z& Z2 g
  3297.   (Prompt "Chon doi tuong de Extend :")  (Setq SS (SSget))  (Setq LEN (SSlength SS))
    * C0 u; j3 ^& f( Y: T8 m
  3298.   (Setq I -1): I1 l5 k9 d; [* O0 w
  3299.   (Setq SIDE (getpoint"Chon phia de EXTEND"))  (Command "EXTEND" CUTEDG "")" J2 _- R3 Q# F0 m- d/ m1 I5 x
  3300.   (Repeat LEN9 C/ Z- ?! T1 j  o
  3301.    (Setq I (1+ I))  z9 S* O# C6 c; K+ _% s
  3302.    (Command (List(SSname SS I) SIDE))  )  (Command "")
    % t0 x; r3 }; @# F
  3303.   (Setvar "CMDECHO" CVAR)  (Princ "Da Extend xong moi ban lam tiep")  (Princ) )6 H, w% i( I3 ^3 P# W2 U; Q5 N" W

  3304. / O+ v$ ]9 P# a" [, C6 Q
  3305. ;;; ===============  EXTEND 1 DOI TUONG THEO KHOANG CACH ===============
    4 ?' q; a7 `( p5 q/ T0 c

  3306. 3 [0 S2 K4 T! Z2 r4 q9 J  n: w3 n
  3307. (defun c:ETT ()  (setq os (getvar "osmode"))  (setvar "osmode" 512)0 _& }. n) p; |4 s
  3308.   (setq pt1 (getpoint "\nKich vao 1 dau doan thang can EXTEND  "))
    8 V4 K/ [0 e9 n8 e  N0 f; x: ^: a, X
  3309.   (setvar "osmode" os): g* \& V3 _( i
  3310.   (setq dis (getdist pt1 "\nKhoang cach can EXTEND :"))* ~3 s6 a8 ]7 w4 b  _
  3311.   (command "circle" "endpoint" pt1 dis)  (command "extend" "last" "" pt1 "")  (command "erase" "last" "") (princ))9 `9 i: P: Y2 R4 P* d8 }

  3312. & a$ m; Z% R' v1 J+ Q- C3 x
  3313. ;; ================ Change width of polylines =========================7 \% I: W# `4 ]5 h, r' E

  3314. 1 j# D7 u: \0 x3 M4 F
  3315. (DEFUN wp (/ a b sophantu sodem list1 ha:wid)
    & Y" Y2 a9 E# I. W, @5 r2 P, L
  3316. (PRINC "\n         Chon doi tuong can thay doi do day (Width) !")
    $ s; ?" x! h4 j5 Z
  3317. (setq b (ssget))
    ' u1 C6 ?7 A: N
  3318. (setq sophantu (sslength b))
    & R. \9 j4 b( z" H# a; x5 I" U
  3319. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))
    ! E/ G7 x) g3 K; J" z7 c2 }
  3320. (princ "\nDo rong polyline <")
    # f" t3 E  a- ~4 Y1 e+ w0 G9 g6 u0 Q2 U
  3321. (princ ha:wid)2 m% o) Q+ q! D6 R; U$ M! `
  3322. (princ ">: ")
    4 x+ S1 U4 ]4 x+ [* _; N9 p2 `
  3323. (initget 4)2 T9 _+ L) T, H7 j0 S& a
  3324. (setq ha:wid (getdist))
    ; _! D! ^7 B" y7 O
  3325. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))
    4 V$ t) Y7 Y8 I( M7 _
  3326. (setvar "tracewid" ha:wid)( Z1 p% [/ ]' x" P9 y; N
  3327. (setvar "cmdecho" 0)
    0 V  ]/ k6 s" R6 a
  3328. (setq sodem 0) # m) `, `$ e3 ^* [1 W, W  ]3 Q8 S
  3329. (repeat sophantu1 w0 @+ i+ T( R) O
  3330.   (setq a (ssname b sodem)). w8 x& y& k) J$ C& R% i
  3331.   (setq list1 (assoc 0 (entget a)))
    + Z6 m. K! K& }5 z
  3332.     (cond2 b1 Q* O; }3 E2 G! m3 I" h( E6 Q# M
  3333.      ((= (cdr list1) "POLYLINE") (command "_Pedit" a "w" ha:wid ""))" A* J% U" r/ [) \) f$ H# A
  3334.      (PROGN (command "_Pedit" a "" "w" ha:wid ""))    )
    ! p4 G: Q, e. o" R2 u+ y- }+ I, Y& ^
  3335. (setq sodem (1+ sodem)) )(SETVAR "cmdecho" 1)(princ))
    6 [. K! p0 I- {% w& n$ y
  3336. (defun c:wp () (wp)) (defun c:pw () (wp))
      c+ M* d7 ]- U0 i+ K% B- l

  3337. & U+ Y$ H" o+ G* k. n7 Q- Q$ x5 |
  3338. ;; ================ Change radius of circles ==========================% q* D; _- M2 C5 a8 ~$ H

  3339. & T) o. k" G' a) L8 o7 z$ |
  3340. (DEFUN C:CHR (/ SSET SSL M RD I)   (PRINC "\nSelect Circles :")   (SETQ SSET (SSGET))' @( ~4 t4 d3 X0 X
  3341.    (IF (/= NIL SSET) (PROGN  (SETQ SSL (SSLENGTH SSET))  (INITGET 4 "")  (SETQ RD (GETDIST "\nNew radius : "))
    7 G% V* W  g8 z& p0 n% ~& m
  3342.    (IF (/= RD NIL)  (PROGN (SETQ I 0)9 s$ ~8 Z+ g) t4 ~- V' @
  3343.    (WHILE (< I SSL) (SETQ M (ENTGET (SSNAME SSET I) ) )
    ' o0 L, y* a# q# C: Z9 u: g
  3344.    (IF (= (CDR (ASSOC '0 M)) "CIRCLE") (PROGN
    ; K2 F& c  W5 ~, i
  3345.   (SETQ M (SUBST (CONS 40 RD) (ASSOC 40 M) M))  (ENTMOD M) ) )  (SETQ I (+ I 1)) )      )   ))) (PRINC) )
    ) ]$ F" a: S; C  u

  3346.   P& A! q1 ~0 s/ Q
  3347. ;;; ============================== TEXT Hight ===============================
    ' }+ G0 t4 z& [
  3348. , L4 P5 _8 `1 n5 Y/ W4 l
  3349. (defun texthght (/ ent hght)2 [# V2 B' I& H0 z- u
  3350.   (setvar "cmdecho" 1)& \$ g) y/ `) B1 P
  3351.   (prompt (strcat"\nSelect text entity with required text height"))
    . r9 d- c8 _2 `
  3352.   (prompt (strcat"\n."))
    9 |+ t  D8 {# M0 d6 R- I3 ]8 w
  3353.   (setq ent (entget (car (entsel))))
    : O; T' i2 b: b1 V
  3354.   (setq hght (cdr (assoc 40 ent)))! d  `& o4 a% p0 M, V
  3355.   (prompt (strcat"\nText height now set at "))(prin1 hght)
    6 j' w9 D3 K0 b: [& N. U6 j
  3356.   (prompt (strcat"\n.")) ' F, E& H' Y$ G% f0 B( P
  3357.     (setvar "cmdecho" 1)) I* y: m0 \% f3 k) @" `: X
  3358.     (command "DTEXT" PAUSE hght "") )
    9 K5 E5 J" r+ Q
  3359. (defun c:teh () (texthght))  (defun c:texthght () (texthght))
    0 H+ A6 l0 K" R5 c2 F  ^

  3360. % D  R" T' w( o) q' Q5 E
  3361. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================" z5 @  }. P8 [% o3 y

  3362. / r7 m4 O5 k) m5 i
  3363. (defun c:tuu ()  (setvar "cmdecho" 0)
    7 @/ q9 b$ d- x' Y# Y# E
  3364.     (prompt "\nHay chon dong TEXT can gach chan ")$ v! `8 u/ @" [7 K
  3365.     (prompt "\nSelect objects: ")7 q% I9 n" Z* ?( ]
  3366.     (command "select" "au" pause)
    ) d& u% F' ~3 ?% y
  3367.     (setq sstxt (ssget "p")7 w; \5 \4 f1 R: O3 \/ P
  3368.           sslen (sslength sstxt)
    1 a9 G5 h  P# g- p! g8 k# e
  3369.           ctr 0    )! R4 I; _" v( f2 S* O+ c
  3370.     (command ".undo" "mark")
    & r& J3 ]. v! v5 Z0 G0 a
  3371.     (while (< ctr sslen)
    2 O' l: Q9 d) ?
  3372.            (setq listxt (entget (ssname sstxt ctr)); t' C) A; Z0 Q- C
  3373.                  txttxt (cdr (assoc 1 listxt))5 V2 R. J2 Q) G% T( l2 j0 C
  3374.                  enttxt (cdr (assoc 0 listxt))   )
    5 z7 `1 Q5 ^! |. ]
  3375.            (if (= enttxt "TEXT")0 Y: q0 p/ Y) w2 o$ x9 m; P
  3376.                (progn2 p0 g( m2 T) f2 h* U
  3377.                    (setq testxt (substr txttxt 1 3))
    - u& r) O. d* k4 C
  3378.                    (if (or (= testxt "%%u") (= testxt "%%U"))
    1 u2 i/ ~9 \, F, f% l
  3379.                        (setq newtxt (substr txttxt 4))
    $ y( K! b/ h+ N) s
  3380.                        (setq newtxt (strcat "%%u" txttxt))    ). U# W5 d3 Q* t6 p, V8 q3 U
  3381.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt)); d# l% h% X  W; C7 X& k+ g1 O
  3382.                    (entmod listxt)                ) )6 M9 ~# \  `' x" ?0 n; K9 i
  3383.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))0 E2 W. |" W1 Z- y: v" A: u  P( a" g
  3384. ) R3 S. N( ^- l" H) o$ b
  3385. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    * U& f& ]! R4 m8 K( y' U& S" M
  3386. & [( [2 c, y6 K, W. l
  3387. (defun c:tob ()  (setvar "cmdecho" 0)
    / U# K8 f# @+ R$ w9 D
  3388.     (prompt "\nHay chon dong TEXT can gach tren dau ")- `% |, g$ |" i
  3389.     (prompt "\nSelect objects: ")
    7 a+ H# ?; t1 D/ n2 b9 y, m8 e
  3390.     (command "select" "au" pause)0 e  G+ Q/ v  W# V0 ?- U
  3391.     (setq sstxt (ssget "p")
    ' t* l2 p. r' l7 y
  3392.           sslen (sslength sstxt)
    5 z. l4 z1 ?; G) T
  3393.           ctr 0    )( K! a9 U0 K7 P
  3394.     (command ".undo" "mark")
    4 T% s0 Q" v+ D2 L
  3395.     (while (< ctr sslen)
    ; i0 a0 P  k4 ?7 g( l
  3396.            (setq listxt (entget (ssname sstxt ctr))
    6 v( Z" G* p5 c5 x( L5 H
  3397.                  txttxt (cdr (assoc 1 listxt))! [  M9 Q" Q$ g* Q( n5 [
  3398.                  enttxt (cdr (assoc 0 listxt))   )
    - y( c$ f: M8 k7 i( b/ ?: N
  3399.            (if (= enttxt "TEXT")7 L3 b8 @  v4 B7 d
  3400.                (progn
    ; A6 s$ z" @0 H0 |
  3401.                    (setq testxt (substr txttxt 1 3))
    ; M9 M  t( \$ F( l
  3402.                    (if (or (= testxt "%%o") (= testxt "%%o"))
    , G, C9 i/ v1 r2 Q5 _. S
  3403.                        (setq newtxt (substr txttxt 4))
    * j0 @1 {! n- B
  3404.                        (setq newtxt (strcat "%%o" txttxt))    )
    ) o- L9 i0 m8 B1 Y# B
  3405.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))# j" J# U: |# L+ F; P
  3406.                    (entmod listxt)                ) )+ j9 h: k- ~* Q1 k# P7 ?
  3407.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    8 Z2 \" y; N7 D0 i0 h
  3408. ' ~# h$ O( E' q) N
  3409. ;;; ========================== Tim & thay the TEXT ==========================
    : Q& [: Q- g3 W3 }  Y& W* V

  3410. 8 {6 ^+ Q9 d7 e6 h$ ^) ^
  3411. (defun frstring (str search replace / str1 str2 index find)0 f: c- c) |! m: Z$ j( |
  3412. (setq index 0) (while  (<= index (- (strlen str) (strlen search)))  (setq index (1+ index))
    7 ]  {" p3 v8 p. o* T
  3413. (setq find (substr str index (strlen search)))  (if (= find search) (progn    (setq str1 (substr str 1 (1- index))). t" \4 q6 i: f  i8 _3 {1 ]
  3414. (setq str2 (substr str (+ index (strlen search))))  (setq str (strcat str1 replace str2)) )  ) ) (setq str str))
    " Q" H% `2 e+ ?2 N
  3415. (defun hai (/ dial)  Y; q" P) M1 ~
  3416. (setq dial (load_dialog "hai.dcl"))       ;;goi dialog
    ; z8 @0 U. w9 I0 Z, @# g
  3417. (if (not (new_dialog "find" Dial)) (exit)) ;;/ y' J- \) ?4 I2 ?" U, q
  3418. (mode_tile "find" 2); Tao dau nhac tai hop thoai5 K! @% Y5 \2 ^1 E; F1 n
  3419. (action_tile "find" "(hai1)")6 C' d* K; p  r: J/ [6 M
  3420. (action_tile "replace" "(hai2)")
    1 X$ t/ X+ B/ I7 ^' U
  3421. (action_tile "cancel" "(done_dialog) (exit)")
    ( H; K8 T1 \6 X6 b' E) [
  3422. (start_dialog)      : h  w0 c! _- l
  3423. (unload_dialog dial))* ?, K9 }' G6 p1 K* O& z
  3424. (defun hai1 () (SETQ str1 (get_tile "find")))* `- e; C" Z& \9 I( {' v
  3425. (defun hai2 () (SETQ str2 (get_tile "replace")))
    ) |# P: e+ k9 ^  }$ s3 _
  3426. : h: w" ~% T9 u8 z
  3427. (defun c:TTT (/ a str str1 str2 newstr taphop sodem)
    1 K4 n, L2 R- \, m- _! ?% K
  3428. (hai)
    ! D+ F# e$ d, u4 P& J9 s& Q
  3429. (if (or (null str1) (null str2)) (princ "\nDu lieu khong hop le")
    $ E: i) }3 J0 ]
  3430.   (progn
    + r  \; [1 e' H5 ]# ?2 m5 A
  3431.    (setq taphop (ssget '((0 . "TEXT"))))
    , c! d3 [# G/ {, q2 Y- w
  3432.    (setq sodem 0)/ v" w* i) y' R! w
  3433.    (if taphop
    & Y' a* L6 o, j1 l
  3434.     (progn
    * z0 q! @8 B* Z, W* i
  3435.      (Repeat (sslength taphop)
    : o- m' V' Q$ E; w  c
  3436.       (setq a (entget (ssname taphop sodem)))
    2 t( ?3 C+ d  [/ W
  3437.       (setq str (cdr (assoc 1 a)))
      T: p* R9 S3 g9 s3 w: ~: Y
  3438.       (setq newstr (frstring str str1 str2))
    ' k% I: G9 y* a/ Z. O
  3439.       (setq a (subst (cons 1 newstr) (assoc 1 a) a))- x* Z7 P8 e$ Q- V0 _; J/ j+ E
  3440.       (entmod a)
    : n1 ]8 F1 n% H* Z$ m" B" Y
  3441.       (setq sodem (1+ sodem))     )    ). j5 h( l7 n. o) G- S2 S8 `
  3442.     (princ "\nNone "TEXT" selected")   )  ) ) (setq *error* olderr) (princ))
    - S' W& ~/ v. c. H( ^% x/ Q3 M
  3443. / q; V" \  V# q* w/ Q7 c
  3444. ;;;=============================  CHTEXSTY.LSP =============================
    . V2 R/ M0 ]6 m7 H
  3445. + Z" v  O: I! n" z1 P0 h3 Q
  3446. (Defun C:TXS () (Setvar "Cmdecho" 0) (Initget 1 "SE ST ")
    " ^, z+ D) r; k& I1 v( c8 z/ L
  3447. (Setq G (Strcase (Substr (Getkword "STyle/<SElection>:")1 2)))  r. M' Z" H" t; i4 j9 A
  3448. (Cond ((= G "SE") (Setq A (Ssget)) (Setq B (Sslength A))5 s3 Q2 B) s+ [! d
  3449. (Initget 1) (Setq C (Getstring "\nEnter new text style: "))+ Y; P6 Q( U6 c) A
  3450. (Extang C) (While (> B 0) (Setq B (1- B)) (Setq D (Ssname A B))/ B9 F4 w& _# Q$ i% A
  3451. (Setq D (Entget D)) (Setq E (Assoc 7 D)) (Setq F (Cons 7 C))# U- a7 ~  N; k( k
  3452. (Setq D (Subst F E D)) (Setq H (Assoc 51 D)) (Setq I (Cons 51 J))
    ( [4 F3 y# o% ?
  3453. (Entmod (Subst I H D))) (Setq A nil)) ((Or (= G "ST") (= G ""))
    7 P( u" O7 D( R
  3454. (Initget 1) (Setq A (Strcase (Getstring
    $ e  Y" _: ~3 B0 t! e0 u
  3455. "\nEnter text style to change: "))) (Initget 1), |4 |' ^7 V! z  ?
  3456. (Setq C (Getstring "\nEnter new text style: "))(Setq D (Entnext))" _* m0 F5 y1 {; \( T% Y
  3457. (Extang C) (While D (Princ ".") (Setq E (Entget D)) (If5 z- v5 _$ c6 ^  x' \# f
  3458. (And (= "TEXT" (Cdr (Assoc 0 E))) (= A (Cdr (Assoc 7 E))))
    ; f4 z! k+ L! j8 }
  3459. (Progn (Setq F (Assoc 7 E)) (Setq G (Cons 7 C))
    2 G2 o' x  e$ V( z: `1 ?; C) q
  3460. (Setq E (Subst G F E)) (Setq H (Assoc 51 E)) (Setq I (Cons 51 J))- y# G8 v3 g6 w
  3461. (Entmod (Subst I H E)))) (Setq D (Entnext D))))) (Princ)); |* o) c% G1 U4 P$ Q! [

  3462. ( }6 c4 \. Y/ g# M; f/ q. o
  3463. (Defun Extang (A) (Setq A (Tblsearch "STYLE" A))
    . N/ H) a1 t" ]# n, B
  3464. (Setq J (Cdr (Assoc 50 A))))
    6 R# f( ^  Q8 n9 t& j  \
  3465. ( }! i( Z+ W8 _# P) \3 V
  3466. ;;; ============================ DRAW CLOUD =============================
    7 c1 c2 l3 i! H7 U
  3467. 3 Y' ?3 R% E+ L  P
  3468. (defun CLOUD (/ pt1 pt2 arc1 cnt ss la)    (setvar "cmdecho" 0)
    # T- t+ m* f  |. R& X
  3469.     (prompt "\nVe cloud (may) khong khep kin - Tu khep kin ve diem dau!")
    ! E0 h5 ?( \7 A! Q
  3470.     (setq la (getvar "clayer")); V5 E9 ]1 M5 N% V
  3471.     (command "layer" "m" "cloud" "c" "5" "" "")
    6 s7 y, h0 h2 Y) k3 ]
  3472.     (setq pt1 (getpoint "\nEnter first point of Cloud: ")), z% ?  K. E) {
  3473.     (if pt1 (prompt "\nProceed in a COUNTER-CLOCKWISE direction..."))
    - Z. i& b: {1 z4 g' v& ^
  3474.     (setq cnt 1 ss (ssadd))7 u9 u. H6 E" e, W: Q8 t7 I  J+ o
  3475.     (while pt1 (setq pt2 (getpoint "\nEnter next point - and close: ")): m+ _/ K9 N2 [6 [$ l
  3476.     (if pt2 (progn (command "arc" pt1 "e" pt2 "r" (/ (distance pt1 pt2) 1.75))
    2 W! T$ e) _4 L( d) v5 ?1 m0 M6 f' R* n8 Q
  3477.     (if (= cnt 1) (setq arc1 (entlast) cnt 2) (ssadd (entlast) ss)) ))( G* V. g3 Z) i6 J4 [9 S  W
  3478.     (setq pt1 pt2) ) (setvar "highlight" 0) (if (> (sslength ss) 0)
    4 ~! _6 D2 V0 j/ i$ e- }" t
  3479.     (command "pedit" arc1 "y" "j" ss "" "x")
    8 m  z( i! ~) S
  3480.     (if arc1 (command "pedit" arc1 "y" "x")) ) (setvar "highlight" 1)
    0 o0 E4 N, @7 u/ I2 y
  3481.     (command "layer" "s" la "")    (setvar "cmdecho" 1)    (princ))  
    0 `! F- P+ Z! M3 b+ x1 k
  3482. (DEFUN C:CLOUD () (CLOUD)) (DEFUN C:CLO () (CLOUD))
    7 ~3 s" @% l, X, d
  3483. 2 n% J" ~& p5 ^' V! ~' c
  3484. ;;; ================================ Funtion-Dulieu ========================/ ^- e7 }+ c" `) _- Z
  3485. ;;; ================================ Funtion-Dulieu ========================
    3 f# a# `6 K" t. f: @$ C" t
  3486. ;;; ================================ Funtion-Dulieu ========================
    : M0 M# S' I& a0 o/ Z) @" p
  3487. 1 j9 P8 _, Y1 b9 q' H8 w# C
  3488. (defun ha:nhap (kytu thamso) (princ kytu) (princ thamso) (princ ">: ") (setq key (getint)) (if key (setq thamso key)) (princ thamso) )  U/ L0 g) A+ z( F1 z! h
  3489. (defun ha:thoat () (reinit) (setq Temp "Da thoat khoi chuong trinh"))
    3 `3 J0 {6 w9 {5 m$ B, W: N
  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))
    1 l& o4 |' _; Q7 j8 F; {/ ?
  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) )
    ; G/ \% F4 @4 Z/ E: f5 x
  3492. (defun hauon (hauon1 hauon2) (command "fillet" hauon1 hauon2)). n6 i8 `4 Z( T2 Q( t2 y8 }
  3493. (defun init () (setvar "blipmode" 0) (setvar "cmdecho" 0) (setvar "angbase" 0))
    6 H9 }! l# J" t% e2 L1 M
  3494. (defun reinit () (setvar "cmdecho" 1) (setvar "osmode" 0))
    9 C4 J8 J) a7 ?  {5 B
  3495. (defun tichvecto (vecto1 vecto2) (apply '+ (mapcar '* vecto1 vecto2)))
    # ^  W! `" U) d4 l0 `. m  V
  3496. (defun vectophap (v01 v02 / vectochiphuong) (setq vectochiphuong (mapcar '- v01 v02)) (list (cadr vectochiphuong) (* -1 (car vectochiphuong))))
    * b/ B  s+ Z0 _' c
  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)))
      M  |! m6 ?' t+ g, y
  3498. (defun dtr (dtr) (* pi (/ dtr 180.0)))5 L* r' w4 Z. [
  3499. (defun rtd (rtd) (* 180.0 (/ rtd pi)))* C% w6 ]- _8 I% z9 a- O

  3500. 8 U$ i, L7 t. f& J. q# H$ o
  3501. ;;;==============================PROGRAME===============================
    & y  g9 |* q9 k% R% G% J2 d1 M. d1 v
  3502. ;;;=====================EditDiM Hien Hop Thoai Dep======================
    ) Z6 f7 x! I" [7 b9 Q
  3503. ;;;==============================PROGRAME===============================
    " r* W$ m" z9 z' B; _6 J
  3504.   h# m$ h4 |' x) y3 G/ [5 q
  3505. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)1 e* p: ?( J' r+ `  [; H
  3506. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl
    3 s  ~* j* \+ N; U1 l
  3507. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)
    . K/ w4 Z8 w( |4 I& e. ]$ }5 z
  3508.   (Setq Oldlis (Entget (Car Chon))
    + Z) X. A$ u+ A1 Q
  3509.         Pt10 (Cdr (Assoc 10 Oldlis))
    - E, N( {( M" d2 J$ o  F
  3510.         Pt13 (Cdr (Assoc 13 Oldlis))
    * P! h  ?) [/ e& H) v
  3511.         Pt14 (Cdr (Assoc 14 Oldlis))
    # v; L- b6 D/ Q: U. H
  3512.         St  (Cdr (Assoc 70 Oldlis)), q- X1 o( ~# d% l5 M% m: W
  3513.         Dimdefault (Cdr (Assoc 1 Oldlis))3 q# |, O- R5 H+ h0 i% D. S
  3514.         )
    ! {5 F- i6 N, [" C$ d
  3515.   (Cond
    ; ^9 K) O" k' ?! D
  3516.     ((Or (= 32 St)(= 0 St)(= 160 St))
    5 j3 I, ?, X% V/ t' c4 o3 s
  3517.      (Progn
    + v9 O# U" Y* c( h
  3518.        (Setq Ang (Cdr (Assoc 50 Oldlis))* [; j- W' A+ S
  3519.              Pt (Polar Pt13 Ang 500)2 v4 s% ~; J/ h: t, o" X+ w( x
  3520.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)( Z) ^7 q! n8 C7 ?% h) i0 D' T
  3521.              Dis (Rtos (Distance Pt13 Hc))/ A) d4 M* ]6 s# O
  3522.              )8 ]; x( o+ Q3 A2 T9 n  h% [
  3523.        )
    " L( R/ E6 Y( I# y9 i
  3524.      )
    0 H6 v, k, v( D0 f! P  i) |3 ?
  3525.     ((Or (= 33 St)(= 1 St))2 I* {7 |# l, y$ N% b
  3526.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))7 V! a. E; |1 |8 q1 L# A
  3527.     );;End Cond! g1 M8 F' N9 V
  3528.   (If (= Dimdefault "") (Setq Dimdefault "<>"))
    / _: u, }0 i! L5 J# w, G& P
  3529.   (Setq Dial (Load_Dialog "Hai.Dcl"))
    2 r0 z5 Y: E: u' _2 }
  3530.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    4 l* {, Y4 N2 I" _
  3531.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))8 O% b. g) x5 M% Z( J3 b% f" l
  3532.     (Set_Tile "text" Dis))
    " Z: Z6 u! W+ j1 p
  3533.   (Set_Tile "ha:edim" Dimdefault)2 p4 c$ d& v4 e/ s( s
  3534.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai1 E3 R# d1 v: M( Z# u
  3535.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")" D7 n5 o7 [2 [$ f, e
  3536.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    2 V: W4 b$ I/ ~2 U3 Z6 t1 J0 k
  3537.   (If (And Str (= 3 State))
    / r( c) I& r# M
  3538.     (Progn
    # q: v0 x% {! }0 C3 J/ r
  3539.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))6 n& X) P* @$ i% j
  3540.   )
    / q6 o8 O3 J1 k" f/ t) R
  3541. (Defun C:EH (/ Chon Name )
    : Y+ C  ]* D6 a" u
  3542.   (Defun *Error* (Msg)
    1 T- o5 w* I7 }9 _" }
  3543.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")0 i8 m6 ]+ a! \  Q
  3544.     (Start_Dialog)(Unload_Dialog Dial)( g/ n1 U$ I) C! b% C
  3545.     (Setq *Error* Olderr)(Princ)
    ; k& f7 U3 U+ b5 E2 x) Q! E
  3546.     )3 Q5 W; e9 T; r( m; F' d9 Q
  3547.   (Setq Olderr *Error*)0 P% w0 o8 U, H" d( E. X, I
  3548.   (Setq Chon T)+ e% Z8 e* X* y- n, Y! c
  3549.   (While Chon! |# [0 j& Q. I7 P
  3550.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    ; [5 G. k% N& C' H! i: V
  3551.     (If Chon# Y7 K, j# G) @; g- ~# }
  3552.       (Progn7 E/ S0 ?& h. {, j  o
  3553.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))9 }. }$ y6 m- i& j6 u3 r3 ?' }% Z
  3554.         (Cond
    ; K6 r/ A6 R, g3 n% E( T
  3555.           ((= Name "INSERT")(Command "Ddatte" Chon))
    % a( s2 F2 N+ j
  3556.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))
    3 i$ a2 d9 F/ D4 q
  3557.           ((= Name "DIMENSION") (Hai_Edim Chon))
    % H. C/ u! {/ w5 y
  3558.           )
    + ?. S* M, O" {  a4 O% Q- O" A& g
  3559.         );End Cond5 a# D( p9 }: J2 o: C6 r
  3560.       );End Progn
    - L) ^4 ]! G: L+ E! y" ^6 `5 v, G
  3561.     );End While) ~# d: }( a" m, p( i
  3562.   (Setq Olderr *Error*)(Princ): l7 F. M8 |2 U6 c9 U) \7 v
  3563.   );End Program
    : i- h) o' E% k: }) t/ g  R3 A
  3564. * _  g( D3 B1 F; V4 \. K
  3565. ;;;====================DDeditDim=====================# l, j  H: Z7 n' g8 A
  3566. ;;;=====================Hai.DCL======================! i) l" R3 C9 o3 ?' l
  3567. ;;;====================DDeditDim=====================
    : Q9 l: z6 o( r

  3568. 1 \- r; [+ c: I& ~7 r; [" q
  3569. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)
    5 s# ]* ]8 N* ~. e% e
  3570. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl, a  @/ n" K' v  g( ~( v- T
  3571. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc): U1 }4 N3 w3 b6 A
  3572.   (Setq Oldlis (Entget (Car Chon))
    / F# i" D5 p1 d
  3573.         Pt10 (Cdr (Assoc 10 Oldlis))/ b, l% }8 E5 ?2 ]' _
  3574.         Pt13 (Cdr (Assoc 13 Oldlis)): A/ N. ~+ A* S$ [( I4 c
  3575.         Pt14 (Cdr (Assoc 14 Oldlis))
    / s. u$ g" ^# K3 h- b5 n* m
  3576.         St  (Cdr (Assoc 70 Oldlis))) Z' i' p# e) M3 S5 c
  3577.         Dimdefault (Cdr (Assoc 1 Oldlis))
    ' ^- |  ^! W7 `: K" S1 P" B
  3578.         ): L) q) Z, s" @* Q! s
  3579.   (Cond: u4 B) p3 k4 B% k. q
  3580.     ((Or (= 32 St)(= 0 St)(= 160 St))
    3 o; z# e- ?7 q& S! H
  3581.      (Progn
    0 z8 A% [6 [- i5 B3 X
  3582.        (Setq Ang (Cdr (Assoc 50 Oldlis))
    8 q& D: ~: B( `; S$ K
  3583.              Pt (Polar Pt13 Ang 500)
    6 B' y- F# o- p( C) R5 |  A) ]% V
  3584.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)7 t9 `; }) \8 r% I0 ~- `; s1 v
  3585.              Dis (Rtos (Distance Pt13 Hc)); B0 w+ {  H! d9 R
  3586.              )0 l8 N/ V% o/ B  f0 Y
  3587.        )# r0 \, m9 b% U" |2 \4 `0 T: |
  3588.      )
    # I; w( L; r9 N+ f
  3589.     ((Or (= 33 St)(= 1 St))" r6 x+ b# i6 ^, R, T+ d
  3590.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))3 g' X1 t0 W; G7 B& h
  3591.     );;End Cond/ g1 e5 ?. m+ Q2 m+ N8 r
  3592.   (If (= Dimdefault "") (Setq Dimdefault "<>"))
    1 P4 m4 C8 r/ b) ^8 |5 m' E
  3593.   (Setq Dial (Load_Dialog "Hai.Dcl"))
    3 O. v7 S& J( B. G) K/ V5 D2 y
  3594.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
      p1 e: c2 @; u- {
  3595.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))
    9 `* }8 U$ B4 _3 r+ M  o% U7 ~8 h) ]
  3596.     (Set_Tile "text" Dis))
      o: T$ X+ B# P: }" I
  3597.   (Set_Tile "ha:edim" Dimdefault)
    . B  C' O8 J; V
  3598.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai- A7 S4 I& z: q( {: u
  3599.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")7 d7 Y+ x5 r9 c0 y8 i9 ]
  3600.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    ) i& q' j2 J# R% ?: t( @* Y
  3601.   (If (And Str (= 3 State))
    0 a3 b2 {; e. r0 d
  3602.     (Progn
    0 k( z1 g* M# @% k6 u7 h& Q( f; O
  3603.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))) Q6 w# J8 G! X; b+ ^' H8 s8 o
  3604.   )
    2 m; V  d7 ^# X
  3605. (Defun C:EH (/ Chon Name )1 P- e  i' T( d+ l1 f1 E* o8 B3 h

  3606. 1 ^6 C. [' @# O5 ~& m
  3607. ;;;********************Du Lieu********************3 Z. B, w6 a* F. x! B
  3608. " A) R$ q: j# W. n7 z; q, {
  3609. (Defun Ha:Thoat () (Reinit) (Setq Temp "Da Thoat Khoi Chuong Trinh"))
    % O2 A+ T8 l, {+ L
  3610. (Defun Hacat (Hacat1 Hacat2 / Hacat3 Chon)& q/ V$ Y( g$ w9 o# R* u2 m
  3611.   (If (And (/= Hacat1 Nil) (/= Hacat2 Nil))6 w9 s2 K; F6 V  Z1 Z. n
  3612.     (Progn
    1 l& y# a7 O$ z4 l; F5 s
  3613.       (Setq Hacat3 (Polar Hacat1 (Angle Hacat1 Hacat2) (/ (Distance Hacat1 Hacat2) 2)))" j; z2 j0 L: B% e
  3614.       (Setq Chon (Ssget Hacat3))' _# j4 x2 L& r! z7 G+ @2 L' H- V
  3615.       (Command "Break" Chon Hacat1 Hacat2)
    , S$ @7 o/ \3 v# S
  3616.       )% t1 A9 z1 _$ a% K
  3617.     )
    5 e! Q5 n! ]; t/ p3 p% a2 v. G
  3618.   (Princ)
    : a( L* ^! p+ ~  n9 I* u
  3619.   )& `! b* H; J9 e! c7 |) @
  3620. ;;' z0 C/ H, [! n: C
  3621. (Defun Hauon (Hauon1 Hauon2)(Command "Fillet" Hauon1 Hauon2))1 ]) |' K/ ^. }/ u7 r
  3622. ;;
    . }$ o; Y$ o* q2 F
  3623. (Defun Taolop (Mau Lop / A)(Setq A(Tblsearch "Layer" Lop))(If (Null A)(Command "Layer" "_N" Lop "_C" Mau Lop "")) (Setvar "Clayer" Lop))4 u  A8 I2 x; v- y& X1 u6 Y; l
  3624. ;;
    ' u7 l# D% Y- p
  3625. (Defun Init ()(Setvar "Blipmode" 0)(Setvar "Cmdecho" 0)(Setvar "Angbase" 0))
    7 H4 S$ F) ?6 I* c
  3626. ;;; L! d* Y* W& Z8 Q% M- e
  3627. (Defun Reinit ()(Setvar "Cmdecho" 1))
    # l4 x( J# z; x1 V" B  a! _' x
  3628. ;;) x; A) R0 t: I% e% O5 R
  3629. (Defun Tichvecto (Vecto1 Vecto2)(Apply '+ (Mapcar '* Vecto1 Vecto2)))
      ^$ {, Q5 n9 u# l+ a4 X
  3630. ;;
    ( y( w, R2 u' P/ Y9 Q
  3631. ;;Cho 2 Diem Tinh Ra Vec To Phap
    5 |0 Q) @4 ^0 s4 ?; {. s
  3632. (Defun Vectophap (V01 V02 / Vectochiphuong)(Setq Vectochiphuong(Mapcar '- V01 V02)) (List (Cadr Vectochiphuong) (* -1 (Car Vectochiphuong))))
    / r& v; x. b* Z4 g5 u
  3633. ;;Xac Dinh Vi Tri Hinh Chieu 1 Diem Len 1 Duong Thang1 k: L7 ~, A) m5 M
  3634. ;;Da Biet 2 Diem Thuoc Duong Thang
    / t0 D8 M6 q& N, y, \, E
  3635. (Defun Lay_Hinh_Chieu (Dc1 P1 P2 / Hc Dc2)" y0 F. c* [$ h; `
  3636.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)2 A) l5 g) Q% g$ J: F" P6 D0 p
  3637.         Hc (Inters P1 P2 Dc1 Dc2 Nil)))
    2 w! f- Y( m/ ], |2 d# f
  3638. ;;Xac Dinh Khoang Cach Tu 1 Diem Len 1 Duong Thang% u! b- O5 t: y" S. D( F' D  J
  3639. ;;Da Biet 2 Diem Thuoc Duong Thang
    8 q1 m( ?# D% L0 F( `' X
  3640. (Defun Khoangcach (Dc1 P1 P2 / Dc2 Hc)
    0 ?" e% ~( u2 n. `; p% x  C
  3641.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    * O% _: Y( I) x: m; S
  3642.         Hc (Inters P1 P2 Dc1 Dc2 Nil))
    & B' i# m* W$ l: v
  3643.   (Distance Dc1 Hc)# _8 L$ O8 o. s% g  J
  3644.   )
    : z7 c/ k  ^2 n& D  a2 g) ]4 H
  3645. (load "nhapcua.lsp")" j' l& i, i, U! @4 j; E1 c) s3 k2 T  d
  3646.   (Defun *Error* (Msg)
    % S$ m+ |0 `9 m; ]7 w$ p$ ?8 |
  3647.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")$ ?. |- Z! ~/ p2 s6 ?  Z
  3648.     (Start_Dialog)(Unload_Dialog Dial); `. g0 c  n$ e: V% E
  3649.     (Setq *Error* Olderr)(Princ)  [) F2 G2 @' ]$ b4 d0 S8 r
  3650.     )/ c8 ~6 s$ O9 i
  3651.   (Setq Olderr *Error*)
    3 l& d& P! o$ b2 C; u# [
  3652.   (Setq Chon T)
    3 I; e0 Q  U) p9 p3 O' g
  3653.   (While Chon
    1 U6 \+ i, R- q% R* q' X
  3654.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    1 X, {7 A+ ]/ r# |: ?# o
  3655.     (If Chon
    7 B5 F& ?& H  S/ M, @
  3656.       (Progn
    ) D! |+ }1 F( N; n3 R9 |. {' E
  3657.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))' |& j# d+ }" i; t0 M; p2 Y/ z
  3658.         (Cond6 h& M, D) I: s
  3659.           ((= Name "INSERT")(Command "Ddatte" Chon))
    1 S" S$ r9 c9 \! A
  3660.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))
    " E, s, s6 K$ S+ w# v
  3661.           ((= Name "DIMENSION") (Hai_Edim Chon))
    7 K+ F+ D2 A+ `0 G) }% a
  3662.           )
    4 }2 z+ a/ L' J9 O/ b
  3663.         );End Cond
    3 \- |- n/ W7 r2 ~, h+ N
  3664.       );End Progn3 k9 I; b* c' r% }5 y8 T8 k
  3665.     );End While
    * K# w) B$ f4 y+ P, M9 w7 S
  3666.   (Setq Olderr *Error*)(Princ)
    4 a: t) Q  Z& B6 i6 v1 r* `
  3667.   );End Program
    7 @/ z! ]9 x& ], z* O  n0 i
  3668. 0 g% z3 q' p, D$ i0 U
  3669. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================4 o+ [% Z8 u8 ?0 m- T/ U6 I
  3670. ;====================================Nhapcua.LSP====================================
    - \! P# ~' J" a5 g3 ]
  3671. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================% j' p2 V. _8 Q
  3672. 2 T5 j7 i5 L$ C. q" b7 ]

  3673. / }) O/ X4 x& \

  3674. ; a: Y% M* Y( @6 o
  3675. ;*******************;*******************;*******************;*******************$ A- I7 w, B$ a& I# h9 R% E2 T
  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****, F0 r  X% J! }, Y( }
  3677. ;*******************;*******************;*******************;*******************! ]0 j  K- J1 d1 j
  3678. 8 h2 B3 B; v# a2 s4 f& s& a; i
  3679. ;VE HINH BINH HANH6 l* q7 v9 e& i' `9 c
  3680. # Z# u/ N  W5 m
  3681. (defun c:binhhanh (/ p1 p2 p3)
    7 I) V# `' `- {. v! g& t* U; w
  3682. (setq p1 (getpoint "\n Nhap diem thu nhat:"))# @+ X) c: j. K, E& J
  3683. (setq p2 (getpoint p1 "\n Nhap diem thu hai:"))' [6 `4 b% y+ W
  3684. (setq om (getvar "osmode"))
    ! K+ a8 X$ a% ?' }7 l, v1 J8 z9 W( A
  3685. (setvar "osmode" 0)6 C) C6 g- g8 X* O4 Z- t
  3686. (command "line" p1 p2 "")
    & g! Z$ y5 K5 h9 f/ ~
  3687. (setvar "osmode" om)5 v# r$ s# Q. ?  ], M! z9 g4 U/ z
  3688. (setq p3 (getpoint p2 "\n Nhap diem thu ba:"))
    8 T" ~! [* G2 m
  3689. (setq a (angle p2 p1))( W" {1 j. |6 z. H, L, n
  3690. (setq d (distance p1 p2))
    0 n, q+ a& a" G0 g4 T; M. J
  3691. (setq p4 (polar p3 a d))
    9 g" J+ O6 O1 q8 y
  3692. (command "OSNAP" "none")
    2 H/ W. ]7 J; l. {& ]' K
  3693. (command "erase" "l" "")- U1 `- _  q8 @" J
  3694. (command "pline" p1 p2 p3 p4 p1 "")
    3 @; v- v9 R: J: m8 v- b% W9 B0 c
  3695. (setvar "osmode" om)
    ) P/ e! E- ]( @1 k2 N( }
  3696. )
    # Z8 }2 N! a: h9 X
  3697.   [: ]: _" r9 l6 H; e% v2 s. w  v
  3698. ;VE LUOI COT
    . L2 i' J( \# u

  3699. 6 w( `7 {, N2 A
  3700. (defun c:LuoiCot ()/ Z0 y1 ?0 ~' h6 {2 A+ w. s# K
  3701. (setq om (getvar "osmode"))& v2 S$ n# W% w0 m5 ^& y
  3702. (setvar "osmode" 0)3 I: s  _, k; e# r, N
  3703. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    " V' c. O/ v) N! O+ Q6 y$ O6 L
  3704. (setq p0 (getpoint "\n Chon Basic Point:"))
    ; X% r& A( I7 p/ |& o, ~+ a8 y. }
  3705. (setq nc (getreal "\n Nhap chieu ngang cua cot : "))
    1 D2 C5 f( P2 ~% N
  3706. (setq dc (getreal "\n Nhap chieu doc cua cot : "))& R4 q6 Z4 g% F+ L# R0 u
  3707. (setq p1         (polar         (polar p0 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    ( a4 a, }3 U- r$ w. F$ h4 a
  3708. (setq p2         (polar         (polar p0 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )1 s2 u! c0 h8 o5 P. |) P
  3709. (command "rectang" p1 p2)
    4 e% F/ q- A8 S8 k
  3710. (command "hatch" "solid" "l" "")& `( Z0 f4 Z; P9 d- H$ f9 l
  3711. (setq bcn (getreal "\n Buoc cot theo phuong ngang : "))
    6 Q' G% k7 M4 D# A( Q" z# ]; P
  3712. (setq nn (getint "\n So buoc cot phuong ngang : "))
    ; i0 C# r( Z: }& M
  3713. (setq w1         (polar         (polar p1 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    ( ^) v6 n: f. Y: y& b1 h
  3714. (setq w2         (polar         (polar p2 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )
    / y) t( b2 @: v- m% C
  3715. (command "select" "w" w1 w2 ""), M0 ^  E  {& u# _# U4 Y
  3716. (command "array" "p" "" "r" "1" (+ nn 1) (/ (* bcn hstl) tile) )
    ; v3 A9 Q1 P3 Q( B8 L0 l$ E
  3717. (command "line" (polar p0 pi (/ (* 1000 hstl) tile)) (polar p0 0 (/ (* (+ (* bcn nn) 1000) hstl) tile) ) "")
    - f2 F6 O9 @' t0 I* o' l% E) G
  3718. (setq w1 (polar (polar p0 pi (/ (* hstl 2000) tile)) (* pi 1.5)  (/ (* hstl 2000) tile) ))7 z5 v4 A, V: o5 l) E$ h
  3719. (setq w2 (polar (polar p0 0 (/ (* (+ (* bcn nn) 2000) hstl) tile) ) (* pi 0.5)  (/ (* hstl 2000) tile) ))" {" r3 @5 M. _8 k! ?6 ]# d
  3720. (command "zoom" "w" w1 w2)- u! s+ C* \* O( X2 _
  3721. (command "select" "w" w1 w2 "")7 D; `. f. P* l- m. d) u! ~! L/ U8 h3 X
  3722. (setq bcd (getreal "\n Buoc cot theo phuong doc : "))8 u& i& w) G3 V  _% k$ n) P1 ]+ f
  3723. (setq nd (getint "\n So buoc cot phuong doc : "))0 Z# l1 n* \- ?. m
  3724. (command "array" "p" "" "r" (+ nd 1) "1" (/ (* hstl bcd) tile) ). G4 t9 b4 t$ J0 T
  3725. (command "line" (polar p0 (* pi 1.5) (/ (* hstl 1000) tile))  (polar p0 (* pi 0.5)  (/ (* (+ (* bcd nd) 1000) hstl) tile))  "")9 t! Q) q$ ]- ^+ L2 s  r8 \
  3726. (command "array" "l" "" "r" "1" (+ nn 1) (/ (* hstl bcn) tile) )
    & c' ~3 s+ i" b9 d
  3727. (setq w2 (polar w2 (* pi 0.5) (/ (* (+ (* bcd nd) 2000) hstl) tile))  )  
    3 N: x* E" U0 @% g
  3728. (command "zoom" "w" w1 w2)' }! Z: y9 f9 @1 x% \4 v
  3729. (setvar "osmode" om)" m- @$ s5 K( @9 V( a. W
  3730. )7 R1 d2 G5 c) Y( ?8 N, ?3 G# y
  3731. ; s  \2 A. b) m. }& }) Z' \
  3732. ;VE CUA DI: E: x( Z* v# `2 }# ]* X

  3733. $ g) \' E3 a7 a* X3 }
  3734. (defun c:cuadi ()* v' O1 @* i  A- G; b. t
  3735. (setq om (getvar "osmode"))
    2 Q. D5 j: ]# g( o: s$ T
  3736. (setvar "osmode" 0)8 s2 w4 c% w/ I  j
  3737. : x: j4 O; `$ E; ~
  3738. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    & j5 @4 j: X4 G# U# \
  3739. (setq b (getreal "\n Nhap be rong cua : "))
    ' Y' q( ^+ R5 d( a
  3740. (setvar "osmode" om)
    % m, q: y) x; m
  3741. (while (< 0 1)2 j4 U3 ]* y" ~  s! @7 J" J- n
  3742. (progn
    + y7 P0 x3 [: p2 }: @: R4 x
  3743. (setq p0 (getpoint "\n Chon Basic Point:"))' D1 i% f/ V" B8 _2 k) D
  3744. (setq p1 (getpoint p0 "\n Chon diem de xac dinh huong cua cua:"))
    / J+ u, D& M5 J4 H$ j! n
  3745. (command "osnap" "none")
    ! M% e2 z! B$ F) e
  3746. (setq p2 (getpoint p0 "\n Chon diem de xac dinh huong mo cua:")): J$ P7 Z$ P( D  e  X+ m- h
  3747. (setq a1 (angle p0 p1))
    " K" n5 ?; E4 e
  3748. (setq p1 (polar p0 a1 (/ (* hstl b) tile)))( n. I. s( `) ]
  3749. (setq a2 (angle p0 p2))
    3 m0 f. ~. _; T
  3750. (if (< (- a2 a1) pi) (setq a3 (+ (/ pi 2) a1)) (setq a3 (- a1 (/ pi 2))) )5 H) m8 b8 t3 }) D4 d
  3751. (command "pline" p0 "w" "0" "0" p1 (polar p1 a3 (/ (* hstl 40) tile)) (polar p0 a3 (/ (* hstl 40) tile)) p0 "")
    5 L" w) @9 y3 ?9 ]% Q+ V4 `
  3752. (command "rotate" "l" "" p0 (/ (* (- a3 a1) 180) pi))4 h) c( j1 k6 d( i2 b
  3753. (command "arc" "ce" p0 p1 "a" (/ (* (- a3 a1) 180) pi))
    # ~* m* z3 \; j& u
  3754. (setvar "osmode" om)
    / \' z. I) E8 \4 m+ {8 k2 z
  3755. ))7 O2 }0 ?+ ]( i8 B- @
  3756. ): d* [2 s, d6 t  j# U
  3757. ; h1 [2 a7 G  J& y: S
  3758. ;VE CUA SO
    1 H" P! M' y! U" |6 W& Q

  3759. 9 l: u$ _" W+ G, X4 T
  3760. (defun c:cuaso ()
    . K" O0 T+ X" e* ^# G0 z1 I9 U
  3761. (setq om (getvar "osmode"))
    3 A+ V' |# J. @) `, r+ A% {
  3762. (setvar "osmode" 0)
    ' z/ D# P! J1 L. y9 d- |  U3 ?
  3763. ' V6 w) d; h& S; ~" Z: a% ]
  3764. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    9 r. `; {$ g2 A4 U7 @  c% ^
  3765. (setvar "osmode" om)% u4 C& g# t" d3 H% j7 q  R
  3766. (while (< 0 1)5 m8 b& J4 k3 N4 F4 H0 Y$ r
  3767. (progn
    9 s+ K- j: N1 P( y' u# t  }5 J7 ]
  3768. (setq p0 (getpoint "\n Chon Basic Point:"))6 L4 h/ u" A: h% r: M
  3769. (setq p1 (getpoint p0 "\n Chon diem de xac dinh be rong cua:"))
    6 `5 W6 i. q& K% ^( D
  3770. (command "osnap" "none")/ g8 P9 P0 {* q0 i  {0 V3 K) P; v
  3771. (setq p2 (getpoint p1 "\n Chon 1 diem o trong nha de xac dinh huong cua so:"))
      v( |) U: z4 Q* Q! ^1 D& K& c' t
  3772. (setq b (distance p0 p1))
    - D2 J: g7 }" M: O4 q: ]( A
  3773. (if (< b  (/ (* hstl 600) tile)) (setq du 50))
    + n  y& `% B) u4 K
  3774. (if (> b  (/ (* hstl 600) tile)) (setq du 150))
    - x) ]! m/ m0 |# |' X
  3775. (if (> b (/ (* hstl 1800) tile)) (setq du 200))+ Z( c, |; o& U( n
  3776. (setq a1 (angle p0 p1))1 B/ }6 M8 `: m8 p/ f+ t
  3777. (setq a2 (angle p0 p2))
    9 z' l# V$ C4 n( b( F
  3778. (if (> a2 pi) (setq a2 (- a2 (* pi 2)) )  )
    $ l; d9 T% t+ |$ R3 ~
  3779. (if (> (- a2 a1) 0) (setq a3 (+ (/ pi 2) a1))  )
    / z( o) M  e# e* n; |9 Q7 }* B; y
  3780. (if (> (- a1 a2) 0) (setq a3 (- a1 (/ pi 2)))  )4 K! ]7 u3 T% v% P
  3781. (command "pline" p0 "w" "0" "0" p1 "")
    3 N3 U% |6 [( Q# U. x
  3782. (command "pline" (polar p0 a3 (/ (* hstl 50) tile)) (polar p1 a3 (/ (* hstl 50) tile)) "")
    ( N$ i' f7 p7 c- f
  3783. (command "pline" (polar p0 a3 (/ (* hstl 100) tile)) (polar p1 a3 (/ (* hstl 100) tile)) "")* b- B0 q. ]/ F; f3 I& V, Z
  3784. (command "pline" (polar p0 a1 (* (- du) (/ hstl tile))) (polar (polar p0 a1 (* (- du) (/ hstl tile))) a3 (* -100 (/ hstl tile))) 0 n# K4 O- O' p4 `
  3785.                 (polar (polar p1 a1 (* du (/ hstl tile))) a3 (* -100 (/ hstl tile))) (polar p1 a1 (* du (/ hstl tile))) "")0 u8 s5 V3 \, e" f. D: B7 {
  3786. (setvar "osmode" om)' h# X% D% M" C) J  b: y& ^0 g
  3787. ))
    # ?/ \) i/ U& ]8 N8 k
  3788. )
    ' w/ C# R/ d8 O0 F' p

  3789. 1 U5 ]5 A- K: y2 A; \
  3790. ;;;=== General Utility Functions ===
    1 w0 B9 Z6 E* [/ {1 ]) A; {! @$ G- p( h
  3791. 2 _2 |7 U3 @- \0 O- t3 a/ i7 b
  3792. ;   R12 compatibility - In R12 (acad_helpdlg) was an externally-defined
    , O# Q! }) c  C: K3 @' L2 ^
  3793. ;   ADS function.  Now it's a simple AutoLISP function that calls the " V/ v/ Y" J! U" N
  3794. ;   built-in function (help).  It's only purpose is R12 compatibility.  
    7 Y; ]& F* i- m8 B' k6 s: J/ D
  3795. ;   If you are calling it for anything else, you should almost certainly & P( ~9 {: N) |( y* @! v& v2 x
  3796. ;   be calling (help) instead.
    / p3 v3 a% I3 |  K& b7 W/ H" `
  3797. " k0 Y: @; t# R
  3798. (defun acad_helpdlg (helpfile topic): H% H  B: p4 Q  @4 Q
  3799.   (help helpfile topic)0 ^% O: @6 T' q% ~. a- ?
  3800. )# a$ N: [9 ~6 R2 L" C' x

  3801. & V1 P% U9 R2 q2 Y& w' g
  3802. + y2 ~1 _7 j* A% G. Z7 _
  3803. (defun *merr* (msg)
      J' ^4 s- {, i. D; {2 n
  3804.   (setq *error* m:err m:err nil)
    - H) q  V+ N- }2 y+ [
  3805.   (princ)
    2 D  [+ V/ S$ v6 E5 V) s
  3806. )
    : X, Q' ~& C' O7 w0 d5 K4 n* ]

  3807. 1 i- }; L& Q: P9 M
  3808. (defun *merrmsg* (msg)9 o- j' q) |$ H  \$ W: Z
  3809.   (princ msg)
      D8 X! q1 C0 O# B0 c9 A
  3810.   (setq *error* m:err m:err nil)
    , Q, ]; m( s/ E' J# O( L& l  K
  3811.   (princ): _" f1 z% M5 z0 W: w( Y
  3812. )
    * r/ J' J  e( ]
  3813. / f/ ^$ E+ l( y6 p
  3814. ;; Loads the indicated ARX app if it isn't already loaded6 c) u6 s9 y. ]$ Q6 Q" b
  3815. ;; returns nil if no load was necessary, else returns the9 a5 X5 W- m! I% x/ F3 U
  3816. ;; app name if a load occurred.
    + w1 j. f' h6 s3 \: ?; i
  3817. (defun verify_arxapp_loaded (app) 4 z+ R5 }% q5 r% y4 F
  3818.   (if (not (loadedp app (arx)))
    0 t: J. m0 j" B
  3819.       (arxload app f)
    + C, \% v0 d: ]; E  q4 `6 U1 M
  3820.   )
      ?9 k) k# f  Q- N& K2 w
  3821. )
    1 U1 W' }* H' {8 O/ f$ D
  3822. ( F+ o/ n2 k% r6 `
  3823. ;; determines if a given application is loaded...
      t! k; {2 L& n" Q9 Q+ f4 n# [
  3824. ;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....% f) s6 l8 N- c& |' d9 ^
  3825. ;;
    * o, P/ w1 M" z; ~
  3826. ;; app is the filename of the application to check (extension is required)7 t7 n) }9 F& D
  3827. ;; appset is a list of applications, (such as (arx) or (ads)
    . X2 H0 o  M. f, O4 E* M
  3828. ;;
    0 H" H% E. O2 Y+ H0 o
  3829. ;; returns T or nil, depending on whether app is present in the appset
    / q( s+ ]% z/ f/ w4 p5 q' L
  3830. ;; indicated.  Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"
    ( @# P% K" M6 x
  3831. ;; Also, if appset contains members that contain paths, app will right-match* y4 i& Y. @# n7 s$ i
  3832. ;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that, u! y4 \& L; E. u& r; s( L& D% g
  3833. ;; "bar.arx" will *not* match "c:\\path\\foobar.arx.", i6 u  `6 K) x$ @: w8 w, |) u
  3834. (defun loadedp (app appset)
    1 ^: F5 d/ @  s/ p$ N
  3835.   (cond (appset  (or 0 X- U; ~" c! @7 i9 F# r2 V
  3836.                      ;; exactly equal? (ignoring case)2 j6 t  E! \- v6 Q0 n- A
  3837.                      (= (strcase (car appset))  \* p/ u; F6 o: G! ?& G
  3838.                         (strcase app))% r' M: M! t" A& T! e& [+ c
  3839.                      ;; right-matching? (ignoring case, but assuming that9 C, R9 w- Y5 w6 i# D- ]
  3840.                      ;; it's a complete filename (with a backslash before it)
    ! S* ^6 s  J* o9 o! C7 d# N% t
  3841.                                          (and
    % |& ~; K. J* L- a/ X* e
  3842.                                              (> (strlen (car appset)) (strlen app))
    0 [9 G& Y; p! F
  3843.                              (= (strcase (substr (car appset)
    2 p# @9 X& C( L% N, w
  3844.                                                  (- (strlen (car appset))
    ) p) J6 o  A5 ?  {$ Y" y
  3845.                                                     (strlen app)
    : a  X2 U/ b( ~. p% u
  3846.                                                  )
    ! ]8 s9 S4 n. w
  3847.                                          )
    8 q# M( ?3 w: C+ o/ p5 ?" s
  3848.                                 )
    8 G- ^; _0 g5 \
  3849.                                 (strcase (strcat "\\" app))2 B0 {% Z, N/ z1 Z
  3850.                              )/ X$ a- O8 t. }: q# g8 U, {! U' _
  3851.                                      ). T3 Z# T0 A4 t" ~5 p+ P- f
  3852.                      ;; no match for this entry in appset, try next one....9 \  _7 z7 |  O% a- S7 e1 ^4 j
  3853.                      (loadedp app (cdr appset)) ))). i* B/ [6 p: O( p* {9 n
  3854. )
    / o9 J7 C( w0 B) }& ^( X
  3855. 5 h: ~( W  K) v- W- S' m
  3856. : _2 ~6 y# Y2 b$ y  k- k
  3857. ;;; ===== Single-line MText editor =====% I# U$ N1 @% B9 E; Q
  3858. (defun LispEd (contents / fname dcl state)
    # V# C% @2 A5 A
  3859.   (if (not (setq fname (getvar "program")))
    ' m( a. X. c& t+ a1 P
  3860.      (setq fname "acad")
    3 o- P/ T+ Q4 @8 i% m
  3861.   )
    ! d5 a& N! J/ L* M
  3862.   (strcat fname ".dcl")0 r. K2 \7 H: j# P# ?
  3863.   (setq dcl (load_dialog fname))* a) H- L" N2 z: S* g
  3864.   (if (not (new_dialog "LispEd" dcl)) (exit))5 y+ `& e7 w* F. a! u
  3865.   (set_tile "contents" contents)3 h" I& _% n  }6 B% F/ E  a: O
  3866.   (mode_tile "contents" 2)
    : p! E. ]6 {2 y  r' z8 E( ]
  3867.   (action_tile "contents" "(setq contents $value)")2 O- M! f+ m0 i  N6 B
  3868.   (action_tile "accept" "(done_dialog 1)"); Q) E1 l% M9 x/ a0 x( W% o
  3869.   (action_tile "mtexted" "(done_dialog 2)" )
    8 E: ^8 E" n9 r0 Y2 m# Q
  3870.   (setq state (start_dialog)): |! R; u) G, w
  3871.   (unload_dialog dcl)( V; C8 I! ~- u
  3872.   (cond
    % I& @  Y" b4 g1 p% j. _) x" k+ ~
  3873.     ((= state 1) contents)
    % H6 k8 ]$ I7 U  C4 `. D
  3874.     ((= state 2) -1)
    : d+ ]5 S$ ?, L, B6 v# @  B+ |4 z" O
  3875.     (t 0)
    ' K) }! h/ t8 D% ~* _6 j
  3876.   )1 K8 ?6 N; J7 v, h& z5 N- z
  3877. )
    ) ^4 _4 g* T3 g3 {

  3878. , o$ w" I; Q3 C1 O) |7 R3 Z7 g
  3879. ;;; ===== Discontinued commands =====
    - [9 w7 ^! X! {1 I0 R6 B; {) L# i# E
  3880. (defun c:ddselect(/ cmdecho-save)
    . w" S" _) a* z
  3881.   (setq cmdecho-save (getvar "CMDECHO"))7 T3 ]2 k* i2 ^
  3882.   (setvar "CMDECHO" 0)6 D: t9 I7 h& S) a) E% @+ l
  3883.   (command "._+options" 7)
    / q: P8 T, [! Y' h- A# i
  3884.   (setvar "CMDECHO" cmdecho-save)
    1 [9 W0 l; Z2 ?0 G5 l; n# P' `* @) X
  3885.   (princ)
    * e  K/ n. W: K+ d6 V  m# P, Q
  3886. )
    , y& q' M# W% m! T* ?) u4 I. H

  3887. & n" m* d# D8 g$ L8 f2 Y
  3888. (defun c:ddgrips(/ cmdecho-save)
    7 N2 o' P1 X2 T5 s4 O4 }
  3889.   (setq cmdecho-save (getvar "CMDECHO"))! n1 k- d1 }& z+ h' q% B
  3890.   (setvar "CMDECHO" 0)
    # M8 Z4 H- F& s
  3891.   (command "._+options" 7)
    $ ~8 `. O+ i9 v
  3892.   (setvar "CMDECHO" cmdecho-save)
    0 M& _$ {( Y) f2 g& H6 t
  3893.   (princ)3 [# D" k5 C/ L. @% q2 Z  l
  3894. )
    * |2 |% k; s, @9 x8 O

  3895. ( w  O( j. |# T
  3896. (defun c:gifin ()) R; d+ k5 r6 k8 [. _, h7 ?" E: C5 |
  3897.   (alert "\nThe GIFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")) e: a  z6 X5 O" i& X4 B- q% z
  3898.   (princ)4 A/ M' a+ d) N1 b- L  P1 i
  3899. ), e7 {$ v- L& D1 X4 m5 d! h8 W) k
  3900. 2 Q( A7 i5 h7 G2 T7 a
  3901. (defun c:pcxin ()
    2 e% T6 z6 T& e) Q: A% W; i
  3902.   (alert "\nThe PCXIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")- S2 [5 n' |8 X- v. U) Z; ^% u: z" W
  3903.   (princ)
    4 M, w9 v, H9 M) e" k- t/ g" D
  3904. )
    1 J6 u" R0 c; Q2 u! V
  3905. . F1 f0 N+ E) w$ e
  3906. (defun c:tiffin ()
    " A2 w+ |! H6 z9 [6 j0 j
  3907.   (alert "\nThe TIFFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
      @, ~3 \5 K6 I, Q2 [0 |
  3908.   (princ); ]+ H& C" h( y2 m" v  |
  3909. )
    * ]: ]5 N5 j7 r% n4 n8 s% V! M  x
  3910. 2 h$ O, ?( W4 g5 N( a
  3911. (defun c:ddemodes()7 [2 {& Z' {% U+ Q
  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.")0 X- ?/ H. T0 N6 d  A
  3913.   (princ)" l1 J# P- R& W, s  J* I" r
  3914. ); K' s) X) F( h* S+ H
  3915. 7 {* y2 S, p# w
  3916. (defun c:ddrmodes(/ cmdecho-save)$ w2 w4 y# ^3 W9 I. i+ U$ }7 V
  3917.   (setq cmdecho-save (getvar "CMDECHO"))
    % v: x0 d) J* h4 W
  3918.   (setvar "CMDECHO" 0)
    . l* V2 x( p) E2 ^
  3919.   (command "._+dsettings" 0)
    * R* ^; V1 O6 f" f3 S
  3920.   (setvar "CMDECHO" cmdecho-save)1 X, J; _( X& y: C& x8 S% F# j7 t
  3921.   (princ)
    ) e. c8 q7 R: M  O& t6 ^
  3922. )
      ]( V6 M; V: t

  3923. 3 s6 }/ f; k& k6 n8 n" A4 a
  3924. ;; HPCONFIG
    $ C5 ?. [- o& q( q# Y% _1 H: [* D
  3925. (defun c:hpconfig (/ hlppath)
    - r& i6 U* h8 F. v# t  V
  3926.   (if (not (setq hlppath (findfile "acad.hlp")))
    : M6 L3 d% {  \: O8 v
  3927.     (setq hlppath ""))# U" T$ u3 d& U! m# e( ?; P. _
  3928.   (help hlppath "hpconfig")
    ( H+ r- L' A% R, m' D' y4 ]
  3929.   (princ)
    5 }$ T+ j4 h# T% l& w( m- j# [
  3930. )
    1 H& m; P/ E; {& e+ [- `, L) k
  3931. ' B  D6 E! W/ _* ?& P  g- M
  3932. ;; OCECONFIG
    % w& q. V& A1 S& F! \
  3933. (defun c:oceconfig (/ hlppath)
    0 ^0 y, @) {9 O/ l8 z) a: n5 o
  3934.   (if (not (setq hlppath (findfile "acad.hlp")))
    % i% L4 I& E4 e. L: R6 p, _8 }
  3935.     (setq hlppath ""))  `: i- y6 ^- _* d6 C! q5 E
  3936.   (help hlppath "oceconfig")
    0 w: S" _1 n7 g& u( b
  3937.   (princ)* p$ ^- B9 ~, G0 E! ~+ A
  3938. )
    9 c- `2 b9 [! U- o+ F/ g

  3939. + E1 j# W$ v/ [6 o9 A# e( d9 v
  3940. ;; CCONFIG  ]- v' _& h" S/ \7 ^$ `
  3941. (defun c:cconfig (/ hlppath)8 g$ S0 w$ o0 U7 X9 o8 I! I; o
  3942.   (if (not (setq hlppath (findfile "acad.hlp")))' i) c4 t% S% O% s7 h* |
  3943.     (setq hlppath ""))) T6 }. S! u( r# K
  3944.   (help hlppath "cconfig")! P  h, L: k/ k$ N4 e
  3945.   (princ)% Z8 F) U  j& I% R5 p6 R! u& ]( ^% \( `
  3946. )7 O3 B% h/ _: K( a; f+ d
  3947. 2 @+ U. F% W4 v7 \# X* h: W, H
  3948. ;;; ===== AutoLoad =====
    + z# ]' N4 w( N6 V9 p

  3949. ' g4 k8 u% ~1 j- T5 Y# n
  3950. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
    * d3 x! @5 ]" y8 O
  3951. ;;; for the name of a certain appplication <appname>.& H5 @# \7 B; x, T" T6 ]. O
  3952. ;;; Returns T if <appname> is loaded.2 `: W! {1 R0 [( o" a* {- r
  3953. & R) W/ n7 [4 q
  3954. (defun ai_AppLoaded (appname apptype)7 Q0 a( H; U, n) j% _/ P% F' N4 \
  3955.    (apply 'or
    1 r: S, c4 j( G. Y$ v- X+ T
  3956.       (mapcar
    ! ?  K$ o* w# |/ m6 A) j# v
  3957.         '(lambda (j)0 k6 _1 Z: J- t5 w
  3958.             (wcmatch( g$ m9 d. @! d- r; T0 x/ E; r" Z
  3959.                (strcase j T)$ Y% P8 ]) s% X! p; [5 l" n
  3960.                (strcase (strcat "*" appname "*") T)& \( @6 P% Q/ h7 b4 R' G- Y
  3961.             )   
    & Y  W2 H) |: b7 B; h
  3962.          )
    & J0 }! f6 U# N% u/ i1 R/ |
  3963.          (eval (list (read apptype)))6 n* x8 P% A2 L# r" L; x! H
  3964.       )
    5 V- x) g  _$ \2 k
  3965.    )
    # |$ s( y4 W0 m/ Z  {
  3966. )9 b. f* H  X+ r9 X6 E1 e
  3967. + \/ [7 T. \3 w' ~
  3968. ;;  
    9 E; q* U+ b- O% n
  3969. ;;  Native Rx commands cannot be called with the "C:" syntax.  They must 5 Y( D! C8 E! z8 F8 T: p
  3970. ;;  be called via (command).  Therefore they require their own autoload 3 E% p* W' _) g1 @' p) M9 E
  3971. ;;  command.+ ~; x0 n9 N3 E6 K8 C' ]
  3972. 2 I, a6 r& S+ |
  3973. (defun autonativeload (app cmdliste / qapp)+ S, M  E! n% i6 z
  3974.   (setq qapp (strcat "\"" app "\""))3 {. @  K, c% v% C. z  \* d
  3975.   (setq initstring "\nInitializing...")
    2 E" Z+ d. |3 i9 ^
  3976.   (mapcar
    + x# A+ X% l* g* L7 {
  3977.    '(lambda (cmd / nom_cmd native_cmd)' m. @4 T# O* U% X
  3978.       (progn; q+ Y) g6 ?, C, @' m* ~
  3979.         (setq nom_cmd (strcat "C:" cmd))2 n" d% N6 y- @! e* x( E) H
  3980.         (setq native_cmd (strcat "\"_" cmd "\""))2 @# ?/ V  V1 x5 D* f1 j
  3981.         (if (not (eval (read nom_cmd)))! |: `& w2 h% \( ]! u8 U5 w
  3982.             (eval9 A' w' m3 K# e
  3983.              (read (strcat
    ; Q2 w& l; u- N  H& ~& O5 e& f
  3984.                     "(defun " nom_cmd "()"
    % T: q. ]5 j# _0 X0 L2 m8 V, D
  3985.                     "(setq m:err *error* *error* *merrmsg*)"
    ( F, ^! H  r$ n+ X( m' [# V
  3986.                     "(if (ai_ffile " qapp ")"
    4 k1 p* V5 r9 M2 p
  3987.                     "(progn (princ initstring)"
    6 s) a6 W4 ?4 {# O, I0 j
  3988.                     "(_autoarxload " qapp ") (command " native_cmd "))"
    $ G, L2 W/ e! Y: A, D5 b7 W
  3989.                     "(ai_nofile " qapp "))"& i( E. F1 q) h6 _4 ]# Z
  3990.                     "(setq *error* m:err m:err nil))"6 e0 R# I  d: l
  3991.                     )))))): j( X6 g  W9 d0 H
  3992.    cmdliste)
    2 t: N% n, y6 N5 V
  3993.   nil" J3 Y$ \+ L/ a0 N, O/ \
  3994. )" J; ?+ \% c* Z8 i9 ^4 T

  3995. 0 W- d3 f( F" l( ^- ]
  3996. (defun _autoqload (quoi app cmdliste / qapp symnam)# u7 \, W+ S6 V; g) g6 {/ D
  3997.   (setq qapp (strcat "\"" app "\""))
    + N7 X# ]% X+ D; O0 v
  3998.   (setq initstring "\nInitializing...")9 s- y) i1 C1 v6 a' L2 n
  3999.   (mapcar' w" M& e6 l) Y& c
  4000.    '(lambda (cmd / nom_cmd)
      t2 L% ], u5 I; U; c1 }! H1 {
  4001.       (progn) B4 e8 b% ^5 k  p9 u3 l" P3 V2 U
  4002.         (setq nom_cmd (strcat "C:" cmd))
    ' y  @) s+ y; T; q. [  T
  4003.         (if (not (eval (read nom_cmd)))
    4 `, i; L: {! ?7 j4 K8 I! E
  4004.             (eval
    & C" g( V+ m* b5 c6 W7 V" I
  4005.              (read (strcat
    9 p/ }. |5 R7 Y6 y' S
  4006.                     "(defun " nom_cmd "( / rtn)"1 Y3 O+ K  n9 n; m8 N* C
  4007.                     "(setq m:err *error* *error* *merrmsg*)"6 |0 X$ o+ ]; h/ k( \* {
  4008.                     "(if (ai_ffile " qapp ")"
      a* o% T; z# z2 V" T% w
  4009.                     "(progn (princ initstring)"
    3 `* I& k. k+ T
  4010.                     "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"7 _/ `! _- E3 c: \
  4011.                     "(ai_nofile " qapp "))"
    ) P: }4 v2 w2 P) r" i* m" A- C/ O& X
  4012.                     "(setq *error* m:err m:err nil)"
    2 W$ i$ _# _$ [! F$ K
  4013.                     "rtn)"9 c7 Q' K8 N  b+ W  B, C* B
  4014.                     ))))))
    6 E; m) D' v+ E  i8 w8 _2 X$ m' y
  4015.    cmdliste)7 B) G& q# J/ l# I$ o; c) ]
  4016.   nil3 R9 C2 K4 T: |
  4017. )
    $ g0 G' U% w6 u% S+ {" f
  4018. + [8 A' l. C4 U) b
  4019. (defun autoload (app cmdliste)3 Z7 y8 D' ]9 X* T8 g  c
  4020.   (_autoqload "" app cmdliste)
    $ T: i, v3 q: Y. l4 A
  4021. )
    $ ]; @$ r* H6 c  ?( T" V

  4022. + [; w3 S' N- D' f( T0 o; h
  4023. (defun autoarxload (app cmdliste)
    0 G# y6 B9 W- U' }' Q$ q
  4024.   (_autoqload "arx" app cmdliste)
    . B6 @( D/ A3 u. {# l  M  x0 i
  4025. )& V" o5 s4 }7 V& C
  4026. 1 t' x1 ?+ F& |4 s6 p
  4027. (defun autoarxacedload (app cmdliste / qapp symnam)1 w7 G* v; J& `7 Q% o
  4028.   (setq qapp (strcat "\"" app "\""))
    : C8 X$ ^; U: v. }. i7 G
  4029.   (setq initstring "\nInitializing...")
    + P/ c. x6 |% }, V& _. x0 `" F
  4030.   (mapcar
    ! \$ p6 a+ G" v7 E9 M, _
  4031.    '(lambda (cmd / nom_cmd): D! P" s4 f2 B5 v" z; N1 n
  4032.       (progn7 o9 X- ?0 X$ \; ]8 _
  4033.         (setq nom_cmd (strcat "C:" cmd))
    4 m! x8 L3 ~( a2 U  W3 x; Y
  4034.         (if (not (eval (read nom_cmd)))) U0 D6 c) i$ E# Y! w
  4035.             (eval' l1 W& b( K6 t* U- Q9 x
  4036.              (read (strcat2 \, v5 x& R/ K0 V% K8 x: P7 z
  4037.                     "(defun " nom_cmd "( / oldcmdecho)"
    $ w7 ?; e/ c% V; ?
  4038.                     "(setq m:err *error* *error* *merrmsg*)"
    ) `7 |/ a/ |# m5 B
  4039.                     "(if (ai_ffile " qapp ")"
    / ]; B; T1 [2 r' y; a
  4040.                     "(progn (princ initstring)"
    ) ]9 u5 i4 g% F' r4 ^6 d& W
  4041.                     "(_autoarxload " qapp ")"+ `% k# |2 k& K" I* r2 G& v$ G$ g) b
  4042.                     "(setq oldcmdecho (getvar \"CMDECHO\"))"6 w0 q8 t/ B. s! y
  4043.                     "(setvar \"CMDECHO\" 0)"' C3 _5 H0 ]; W% C: a
  4044.                     "(command " "\"_" cmd "\"" ")"4 b1 D! h9 Q  c4 ~! N2 _: u+ z
  4045.                     "(setvar \"CMDECHO\" oldcmdecho))"2 a( c$ G- }/ ?( N" u5 l
  4046.                     "(ai_nofile " qapp "))"
    1 \* V" n6 y5 V& N0 }% ]3 L8 u
  4047.                     "(setq *error* m:err m:err nil)"
    3 ~# L9 N5 X  A% ^4 |7 z
  4048.                     "(princ))"
    $ z9 S' l- ^" C( l0 {
  4049.                     ))))))
    0 p5 I: p3 A  l$ n
  4050.    cmdliste)
      F/ e* f9 j: T( a; r+ L
  4051.   nil
    6 Q/ ]5 q, H) {& t) p
  4052. )
    5 n4 G# X" ~- P5 [* p
  4053. 1 N4 m5 Q  B4 j- O. ~
  4054. (defun _autoload (app)
    8 ]: s7 E7 [9 j) Z' v: N
  4055. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)& h, ]& F7 D# }: d% B
  4056.   (load app)
    * J! U, c6 L/ Z
  4057. )
    % _" D  ], j6 U
  4058. 2 Y' W' R: U" \) ?
  4059. (defun _autoarxload (app)+ m7 G  {( h$ F6 j6 n2 P3 C
  4060. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)
    ( M) e% r# _9 `: A: ?) t
  4061.   (arxload app)* N& Y/ n+ h! h+ F/ S# ~
  4062. )) j8 W6 \3 ?: e5 N- F
  4063. ' V# ^; Z: P; t' h+ U: Z' V; a
  4064. (defun ai_ffile (app)% a# a# F- l5 j$ P- }- U2 J0 j
  4065.   (or (findfile (strcat app ".lsp"))! J( x$ y4 j/ z
  4066.       (findfile (strcat app ".exp"))
    7 \7 @% @0 V8 S5 l: t
  4067.       (findfile (strcat app ".exe"))# u) k' n! @' m# n5 P4 O
  4068.       (findfile (strcat app ".arx"))
    8 b9 @) {6 e9 u' A) n+ L
  4069.       (findfile app)
    % F4 |9 ?8 J5 |( H5 z& T; ?
  4070.   )
    8 D4 Z: [7 W* q8 v& u" l% f
  4071. )! D- I$ G8 R; r* K$ q  S& I
  4072. " I2 z! s$ i+ F; M4 n2 |' X+ S
  4073. (defun ai_nofile (filename)1 M# t2 t  D6 v8 {: T4 K
  4074.   (princ
    4 G( e) _' I) p+ }2 A
  4075.     (strcat "\nThe file "
    " n8 {! r, S0 \4 [& A5 g7 R
  4076.             filename
    & j6 |3 a, H5 c) M3 f
  4077.             "(.lsp/.exe/.arx) was not found in your search path folders."
    ' W% w1 u( s3 U. S' D3 t# q
  4078.     )! P7 v2 L0 x3 L! x1 D
  4079.   )
    ) T1 w; _5 L" T; V1 a
  4080.   (princ "\nCheck the installation of the support files and try again.")
    * h9 o0 r) R2 i
  4081.   (princ)9 f# _9 j3 N4 S& o
  4082. )+ @* V7 R8 m  y+ D# h

  4083. ) Y" Z6 M5 l) V

  4084. / p2 `  @3 o/ P5 A# H/ X0 u
  4085. ;;;===== AutoLoad LISP Applications =====
    + Z- Q: J! i0 b  |6 W6 K, a
  4086. ;  Set help for those apps with a command line interface3 s% M% R! L$ G" Q2 x, y
  4087. : |% C$ L+ W$ I5 T5 I
  4088. (autoload "edge"  '("edge"))
    0 @6 t' U) b: M7 y4 t0 b: l0 d
  4089. (setfunhelp "C:edge" "" "edge")8 I# Z9 p9 \7 W

  4090. 2 q1 O2 _0 b9 _" p0 Y) y
  4091. (autoload "filter" '("filter " "filter"))! p* a4 i; ]4 Y- z) `+ F% ^. S9 u

  4092. + t: e% J1 Y  a4 i! ?) Y
  4093. (autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"
    , y: B: _9 i7 J2 X, n
  4094.                  "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")3 @5 z8 ~! O. L
  4095. ): [( `; A- }3 F0 Q, K" s) k
  4096. (setfunhelp "C:3d" "" "3d")
    . Q. h3 p/ f4 U8 \, B# M. t
  4097. (setfunhelp "C:ai_box" "" "3d_box")
      y9 U: U! G7 I7 F1 W
  4098. (setfunhelp "C:ai_pyramid" "" "3d_pyramid")! T6 K/ K- H8 l# \; r+ @) S
  4099. (setfunhelp "C:ai__wedge" "" "3d_wedge")
    ! a# y2 J4 P0 q/ R$ a  J; y
  4100. (setfunhelp "C:ai_dome" "" "3d_dome"); I7 \& r  [- w
  4101. (setfunhelp "C:ai_mesh" "" "3d_mesh")
    3 \3 D- Q" T1 a" V
  4102. (setfunhelp "C:ai_sphere" "" "3d_sphere")
    ; q- ~* m/ w- D2 Q6 [
  4103. (setfunhelp "C:ai_cone" "" "3d_cone")% |  o$ q8 A' s1 @+ e9 \/ u% b
  4104. (setfunhelp "C:ai_torus" "" "3d_torus")
    ' C2 r7 ?4 a  g- r
  4105. (setfunhelp "C:ai_dish" "" "3d_dish")4 I3 e' W* X! [5 s" u1 F: D+ N" u

  4106. 4 _# S5 Y3 Y! {! B) Y1 a" g
  4107. (autoload "3darray" '("3darray"))1 _* Z* m% ^" C
  4108. (setfunhelp "C:3darray" "" "3darray")' \" E$ @) r% d6 e: @4 u( s8 i% b
  4109. - z/ u( v5 f; W
  4110. (autoload "ddvpoint" '("ddvpoint"))3 |8 K- s6 G' O6 |5 B* k
  4111. : k) l' L# |0 A4 d5 K) ?
  4112. (autoload "mvsetup" '("mvsetup"))
    1 G1 [8 Q; W& Q9 {( f- Z: d
  4113. (setfunhelp "C:mvsetup" "" "mvsetup")/ Q: j2 T8 s" ]5 D" {& l1 ~
  4114. & H9 M& e# M2 [' I& i6 [7 k% U
  4115. (autoload "ddptype" '("ddptype")); {5 p8 T2 |5 v5 g
  4116. 4 E8 o9 W! [/ D% x$ S; v
  4117. (autoload "attredef" '("attredef"))
    9 ]( n7 p; Y% Y& X+ V* C( n4 p# N; K" G
  4118. (setfunhelp "C:attredef" "" "attredef")
    * f$ F- |) U1 p3 |# A& _
  4119. 0 L9 W+ R" t6 a! I' N
  4120. (autoload "xplode" '("xp" "xplode"))
    & l: ]# U0 v. }) T2 U) |
  4121. (setfunhelp "C:xplode" "" "xplode")9 f- C( `9 \  h& E. L/ o! j

  4122. 1 E+ q2 g# m! S' O2 z, P$ I4 {1 I
  4123. (autoload "tutorial" '("tutdemo" "tutclear"
    $ t* r- M' w( i" i) Y: _
  4124.                                        "tutdemo"
    . ?2 \  q7 E. i) T
  4125.                                        "tutclear"))
    $ ~, _+ m# F* ~! Q7 g1 `3 {, t

  4126. 4 e# |( v' O% a
  4127. ;;;===== AutoArxLoad Arx Applications =====% h9 G7 @# F1 i9 S1 r) q) O. [
  4128. 8 p! g+ \; k/ M/ K8 S6 G
  4129. (autoarxload "geomcal" '("cal" "cal"))
    / f+ V7 m+ N) w) w( f3 u2 q

  4130. : O5 V/ Q' j9 E
  4131. (autoarxload "geom3d" '("mirror3d" "rotate3d" "align"/ K# `+ c% A' i9 {0 \9 |
  4132.                       "mirror3d" "rotate3d" ! Q- f4 r/ }8 ?2 Y$ y/ O' n. ^
  4133.                                  "align"))( G5 a: |5 B$ O" ], i
  4134. # d9 T6 e; x; R+ z

  4135. ) G& e) ]- J9 ?2 |
  4136. ;;; ===== Double byte character handling functions =====
    * ]! k: K- W; L

  4137. 7 m! _" G1 J. ?1 [6 K
  4138. (defun is_lead_byte(code)" _( Y' V' [; W
  4139.     (setq asia_cd (getvar "dwgcodepage"))( M* @8 t- g/ c6 s$ T; E; E
  4140.     (cond3 Q% d+ O5 v: O1 ]3 ?
  4141.         ( (or (= asia_cd "dos932"); ^& M9 T' [/ w
  4142.               (= asia_cd "ANSI_932")$ _6 }: _+ t0 q# }- d6 _
  4143.           )& c3 H6 {6 h7 _2 @6 d# U: l
  4144.           (or (and (<= 129 code) (<= code 159))- E' x) t* ]: h5 [& K; p
  4145.               (and (<= 224 code) (<= code 252))7 B/ {  m4 w/ a. Q4 V) q: O4 A, i
  4146.           ). T# n; V' K% ]* w$ e  u1 I
  4147.         )
    8 |. c. r3 S) q: h; s& Q
  4148.         ( (or (= asia_cd "big5")
    # t2 S3 M$ Y8 {' h; {3 y8 L
  4149.               (= asia_cd "ANSI_950")* g( _6 G2 `8 V1 s
  4150.           )+ o* n+ v# k' R- P" ~( \) h5 v
  4151.           (and (<= 129 code) (<= code 254))
    % [9 h% q$ {. j* Y
  4152.         )
      Z+ T, T' I2 ^/ ?
  4153.         ( (or (= asia_cd "gb2312"): T5 m3 M) I( L, u! W' T5 J6 V5 X
  4154.               (= asia_cd "ANSI_936")
    + K1 p, ]3 H) ]6 g6 P, r# H7 g
  4155.           )4 j" u. H" F" K' E: I/ D# T  h# Z+ y
  4156.           (and (<= 161 code) (<= code 254)): r6 ]' d! q3 i4 ?' G
  4157.         )
      h% j0 V/ ?; M
  4158.         ( (or (= asia_cd "johab")
    1 _& a& |5 a! m! q" E6 ?# k% r
  4159.               (= asia_cd "ANSI_1361")5 }  Y# d- A8 H
  4160.           ), P: O; t% M% u. K8 x) C! u
  4161.           (and (<= 132 code) (<= code 211))
    ! h+ Z3 }: H, c0 F. C9 K( ?
  4162.         )
    + S8 U2 {. \8 B1 u3 ?- a% Y
  4163.         ( (or (= asia_cd "ksc5601")
    1 p4 l9 ?! g$ K5 }0 }; E3 ?( Y
  4164.               (= asia_cd "ANSI_949")
    ) ]& e; {% _* ]; J1 ?: J0 U
  4165.           )9 |. b; R) _5 {1 x
  4166.           (and (<= 129 code) (<= code 254))
    6 _; N# s7 z, k" Y
  4167.         )
    ( f" N- T9 ?$ Q' |; K
  4168.     )6 K7 i) Z5 u) m$ I
  4169. )6 V; ]" ~8 X/ Y- S* L( f; ?& Q

  4170. $ F. C" d0 l1 E; g
  4171. ;;; ====================================================4 U9 S2 R9 W  ~) d; W+ ]9 @5 {

  4172. 5 Z) H# |7 O& l8 t" B5 h4 {
  4173. 6 n" y, s5 c6 c3 |( n+ \/ F' D5 p
  4174. ;;;
    , y3 U( K  Z: V7 T* B" v0 m3 I0 z
  4175. ;;;  FITSTR2LEN2 p4 d/ O* ?9 O) e* x! I+ b
  4176. ;;;' U+ H: I) n8 ~- O
  4177. ;;;  Truncates the given string to the given length. ! ~2 ~. {# y7 T# ~: E/ _) v5 g" I0 l
  4178. ;;;  This function should be used to fit symbol table names, that3 |1 A* h& R2 ^
  4179. ;;;  may turn into \U+ sequences into a given size to be displayed
    4 W% d6 i1 _0 I# l. G' T  j& |
  4180. ;;;  inside a dialog box.
    3 t8 k) t6 i! Z' O) q; {4 L
  4181. ;;;
    1 ?# y5 h4 n4 s# ^, l
  4182. ;;;  Ex: the following string:
    ( w( o( U9 d) `- V* K: D) S
  4183. ;;;  C& Y( Q; O1 C8 g3 \7 m
  4184. ;;;      "This is a long string that will not fit into a 32 character static text box."2 v) B: o) ?8 C# I; U
  4185. ;;;1 g' Q' S& Y. T  B; f+ P) W
  4186. ;;;      would display as a 32 character long string as follows:# A5 A) H( q6 R$ L4 A5 p
  4187. ;;;
    7 a+ q) s1 S% Q) a' Y: f
  4188. ;;;      "This is a long...tatic text box."1 z9 h+ k; ~' H# P; M
  4189. ;;;; r2 }3 [" D) Y8 ]+ D1 O
  4190. + o% r, E( B) U; a
  4191. (defun fitstr2len (str1 maxlen)0 c# c0 R' M+ I

  4192. 8 o& \3 v' S& k, L" |# k& }7 H" u
  4193.     ;;; initialize internals- I, N0 z5 L/ y0 {/ l
  4194.     (setq tmpstr str1)
    % R0 J& H2 d5 s$ \# q( @
  4195.     (setq len (strlen tmpstr))
    & E, m. |* d+ k, O

  4196. 9 A* B( u& Z' y
  4197.     (if (> len maxlen) ( f" N0 \) r7 d2 [- c$ |. p
  4198.          (progn
    , B' f. m( ]9 D: I8 Y0 D/ U
  4199.             (setq maxlen2 (/ maxlen 2))
    - D2 Z; H: y! ^1 w# V& Z$ ^
  4200.             (if (> maxlen (* maxlen2 2))
    7 m7 P2 D- g0 |& B3 d) H( O
  4201.                  (setq maxlen2 (- maxlen2 1))# j( [9 U  B: x( o  |$ ?# Z8 {
  4202.             )6 r0 w4 I: x6 a( [- p" D& K* {
  4203.             (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))
    ; Y7 r  \) c( ~! h5 u5 `" m
  4204.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))/ _  b) i: E% ?4 `5 K$ A# y
  4205.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))
    0 h* D, K7 n! \0 v# T6 M+ W7 U+ r% Q
  4206.             )
    6 _$ j  O  t- i2 R* b: F9 S, k
  4207.             (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))
    ) i% o) A; E4 y0 b& e
  4208.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3)))): d6 F2 I5 Y4 T7 k
  4209.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))0 b: v/ q; A7 p# L; T4 X6 ?0 ?" U
  4210.             )
    1 W. D& h8 b' H6 X8 ~! |8 W! b0 v( O
  4211.             (setq str2 (strcat tmpstr1 "..." tmpstr2))1 p* Q& q! [, J! j8 P
  4212.          ) ;;; progn) ?) ~1 w4 t" X
  4213.          (setq str2 (strcat tmpstr))
    ' G# j! T/ _- G9 W& [- U
  4214.     ) ;;; if$ X; g) A. K( F- H
  4215. ) ;;; defun6 C+ Y0 ]3 r$ A% d; M% J, \3 e
  4216. 0 ^* ]$ \$ d8 p# C

  4217. , e( u4 G  r! }) ^" h- f7 P6 Z
  4218. ;;;- ]( m* Z0 ?2 o, C) i# |
  4219. ;;;  If the first object in a selection set has an attached URL  r6 a6 l7 H8 c! t8 [4 ]5 f
  4220. ;;;  Then launch browser and point to the URL.
    : @1 M- D! t4 d9 f) m4 c' _+ L4 I
  4221. ;;;  Called by the Grips Cursor Menu. c, O( U( Z4 {. Z3 {' r
  4222. ;;;
    " ^/ W( L6 }, T4 m

  4223. 2 V& s; d3 F# S: G. ^
  4224. (defun C:gotourl ( / ssurl url i)
    " J, \" n4 \0 {. ^9 c- _) q' F
  4225.    (setq m:err *error* *error* *merrmsg* i 0)
    # T$ a, g/ [  L9 a1 u, z
  4226. ; U4 z- J1 u6 [0 h
  4227. ; if some objects are not already pickfirst selected,
    + t: `9 r9 E' w: X( G0 @5 }/ T
  4228. ; then allow objects to be selected0 j2 u0 F. q# v# ~0 M; `; n; u
  4229. & Q1 h0 G) E( Y+ {# Q
  4230.   (if (not (setq ssurl (ssget "_I")))
    7 T$ k: B+ a% A8 K, a, W# y; d3 Z
  4231.       (setq ssurl (ssget))
    " h( F: c- g4 s
  4232.   )+ J1 j: s. Z$ D  S  J: n: s
  4233. ' N; t# D; _+ g% h" q
  4234. ; if geturl LISP command not found then load arx application5 D6 w! f0 G6 |+ t; \9 ^
  4235. . s3 ?( P! K; K/ }4 z! o
  4236.   (if (/= (type geturl) 'EXRXSUBR)
    , y3 ?- z5 S& i6 i( a  E
  4237.     (arxload "dwfout"); Y/ T2 c8 a4 [9 c( Q
  4238.   )$ ^2 a$ U6 [- K( F! _" h
  4239.   - R0 s8 H" S& |2 D4 s- b& l
  4240. ;  Search list for first object with an URL3 s, ~  o+ s* E& h1 X1 u1 b$ \
  4241.   (while (and (= url nil) (< i (sslength ssurl)))
    , B3 o) y% V- P' Z5 v
  4242.     (setq url (geturl (ssname ssurl i))
    7 b' j8 l7 o- i6 l- y
  4243.           i (1+ i))
    % @& c3 c. ^; o' H8 E1 A% B
  4244.   )
    7 v" K" w  v) `' M; K) _) ~
  4245. - `1 R, W% U5 G3 d$ |$ ~
  4246. ; If an URL has be found, open browser and point to URL$ R( @( c0 F# z5 G) e
  4247.   (if (= url nil)
    6 u: b! W0 I) T& U0 _8 G
  4248.     (alert "No Universal Resource Locator associated with the object.")
    ( a( H1 r) b2 a) L/ C) c
  4249.     (command "_.browser" url)7 o' @! t9 D+ o/ w
  4250.   )
    7 _, g, k4 w& i! ]- L: I  g

  4251. 1 H# S7 ^* J% _
  4252.   (setq *error* m:err m:err nil)
    . S4 h2 p$ L( P3 i3 U; o, t
  4253.   (princ)
    ' [/ l3 M, ~' Z  l# k/ Q  x
  4254. 2 P' l7 M6 |# l+ p
  4255. ), M* {! I1 W# v9 U( B$ P
  4256. 3 p8 O- U+ \" Y( }
  4257. ;; Used by the import dialog to silently load a 3ds file
    6 Z2 ~/ |( F8 R7 ]; ]! x
  4258. (defun import3ds (filename / filedia_old render)
    6 @9 H, I$ E6 `+ i, B$ _, _) r
  4259.   ;; Load Render if not loaded
    8 g6 d/ Q8 @- }4 p9 I2 j  y
  4260.   (setq render (findfile "acRender.arx"))7 U# D; Q& V0 U5 R: V7 ?$ F. u3 ]( {' d
  4261.   (if render
    6 q% o0 J) x! Y: G
  4262.     (verify_arxapp_loaded render)
    5 \  J% Y% p! W
  4263.     (quit)" b( {& J! N. @: X4 h# [/ ~
  4264.   )
      G3 ?+ V7 F! [; d: c' R

  4265. : H6 |6 x1 X" |& N0 o4 P" g" w3 A$ J
  4266.   ;; Save current filedia & cmdecho setting.
    ' W5 e, ^* o) r+ f) r+ O# h6 S7 v- \
  4267.   (setq filedia-save (getvar "FILEDIA"))
    ) @; C, U3 c8 g$ G* x
  4268.   (setq cmdecho-save (getvar "CMDECHO"))
    ! W. I9 |3 T, C, C1 v% B( x
  4269.   (setvar "FILEDIA" 0)
    , }7 h( B9 I# A' A, T" w' F5 w
  4270.   (setvar "CMDECHO" 0)4 O& F) |; ~# {7 d
  4271. ) B& W% M5 D0 y) i5 n; l0 w/ w4 R% }
  4272.   ;; Call 3DSIN and pass in filename.
    8 |) p; O5 J' F  M) Z
  4273.   (c:3dsin 1 filename)
    % N: h) Q2 K- I% H) W

  4274. 9 \4 j% c2 H) {# |3 A2 m* Z
  4275.   ;; Reset filedia & cmdecho! F* O1 w5 ^9 @8 Q- d; z! Q2 H5 h
  4276.   (setvar "FILEDIA" filedia-save)$ m4 R4 V# a3 K: v
  4277.   (setvar "CMDECHO" cmdecho-save)7 V; Q* B3 t( W# h
  4278.   (princ)
    + W) G  L4 T$ r" w! f+ _! {
  4279. )
    * U. l2 y, k3 `( A
  4280. : J# L, _  C( i! p  n$ d4 t5 \0 ~% O
  4281. ! j$ s: E$ a4 p$ J
  4282. ;;;=== Menu Functions ======================================
    ! u. P+ I* h. |- T6 g$ K* g
  4283. ) `9 f2 j/ S' k  Y+ c, |
  4284. (defun ai_rootmenus ()
    , P7 D1 M3 H8 e, f. N; q' z* Z1 g
  4285.   (setq T_MENU 0), Y  t( [: o& N7 s
  4286.   (menucmd "S=S")6 G  U) P. ^- q  Z$ |
  4287.   (menucmd "S=ACAD.S")
    6 o& {0 u& _; K% ^) _8 M3 P) j! K  n
  4288.   (princ)
    * p8 u) S/ X0 K4 A
  4289. )7 v. i; Y6 r# F* u

  4290. 7 V$ s4 x  s) P3 B9 a
  4291. (defun c:ai_fms ( / fmsa fmsb)
    ( |1 r  `5 B4 s" ~6 a4 ?6 m
  4292.   (setq m:err *error* *error* *merr*)
    $ F( h1 z. {! k/ ~6 }
  4293.   (ai_undo_push)5 G7 ?& Y/ s. [
  4294.   (if (getvar "TILEMODE") (setvar "TILEMODE" 0))
    & o% ~# N' t6 F5 {6 v# h7 G" @) C6 q/ Y1 O
  4295.   (setq fmsa (vports) fmsb (nth 0 fmsa))( J: x+ M. `3 b" A; ^; K) v
  4296.   (if (member 1 fmsb)
    6 ^- n8 G1 X- ^+ y+ f0 S' ]
  4297.     (if (> (length fmsa) 1)/ t. B: G9 w% I, O# L
  4298.       (command "_.mspace")
    5 g* ^: x' @9 M4 V+ }' v
  4299.       (progn
    ' l4 Y7 E# i% s4 v7 r7 D. a: t; R/ |
  4300.         (ai_sysvar '("cmdecho" . 1))! x6 }, r/ }" \! U6 @7 c* P
  4301.         (command "_.mview")
    0 N8 T8 P/ F6 M* J7 Q' e/ d
  4302.         (while (eq 1 (logand 1 (getvar "CMDACTIVE")))' {5 ]( }0 x& ?! j1 \# c* |% m
  4303.           (command pause)$ k* e  ]1 y4 O  m- i) i
  4304.         )7 H. G( S0 P( v+ I5 _' \3 C. H
  4305.         (ai_sysvar NIL)( S1 P8 D8 \& Z: @7 P+ ~
  4306.         (command "_.mspace")
    7 Q  m/ E5 u% A
  4307.       )
    # ^" t) I$ |: U1 N8 `5 i( Y
  4308.     )' ]0 u7 t! t: i" @3 H: O
  4309.   )! O- g, L. h$ c- e, `# I9 K6 v
  4310.   (ai_undo_pop)$ [/ ?% J9 r8 {1 u9 R+ m
  4311.   (setq *error* m:err m:err nil)8 q% V  r3 l. x# X, w: ?; x. i* a
  4312.   (princ)
    % w& }5 o: u& Y
  4313. )1 v7 X  W) H/ z$ U* X' G, o
  4314. 6 ^" |- K" d5 I8 \
  4315. (defun ai_onoff (var)2 E( n8 U- U* H' ^! I* Q! k
  4316.   (setvar var (abs (1- (getvar var))))+ a( m0 H, K+ y" z1 G- y: D, J) M
  4317.   (princ)' S5 |1 h; x2 j& d3 T4 `. ]  P( I
  4318. )5 b( s* V4 V5 l6 h  K
  4319. 7 e* N: `! J! _: T
  4320. ;;; go to paper space* S- f$ B; q4 L7 s7 t- k+ h/ K- G
  4321. (defun c:ai_pspace ()6 Q! b9 {& n: I" m1 X( [
  4322.   (ai_undo_push)! `7 C. d- k. D( ~3 @
  4323.   (if (/= 0 (getvar "tilemode"))7 K' C+ M$ L4 k6 m0 j
  4324.     (command "_.tilemode" 0)
    + Y0 Z+ ]% T/ B# ^( B
  4325.   )
      R% i" _' v1 X* T
  4326.   (if (/= 1 (getvar "cvport"))% O% p5 d+ T4 f# o' e
  4327.     (command "_.pspace")
    # q% j5 |4 V& t1 S+ e6 M
  4328.   )
    * Q; w# }# J# g: M# k* ?3 A
  4329.   (ai_undo_pop)
    4 v  }. t2 N2 H0 j) a5 a6 `
  4330.   (princ)$ f( Z( T9 c1 X0 W, x
  4331. )
    1 s4 L. a6 s& u! o) D" C( u9 D
  4332. 4 E, K7 i8 e8 I$ X7 U6 [/ {: F
  4333. ;;; go to tilemode 1" G1 @5 _1 u; Z8 I
  4334. (defun c:ai_tilemode1 ()% h8 o/ ?) d6 A- X/ _
  4335.   (ai_undo_push)
    3 @6 d3 F( d9 Q- N: B4 W4 l. C, l
  4336.   (if (/= 1 (getvar "tilemode"))
    ) Q5 a1 ^% U9 l  y7 t6 \
  4337.     (command "_.tilemode" 1); c: N' Z2 o, `, S8 l! j
  4338.   )+ |9 U* Y0 l  Z" i" q6 X
  4339.   (ai_undo_pop)9 f# K$ U+ Z2 k+ E' X
  4340.   (princ)
    : \) n; [) C! `# c( J' {0 t- F! N
  4341. )3 j5 h4 e+ {! ]* G" b8 _
  4342. - r* Q/ V0 D, c6 C
  4343. ;;; Pop menu Draw/ Dim/ Align Text/ Centered( f  W+ {9 e" i' R: \5 D3 U
  4344. ;;; Toolbar Dimensions/ Align Text/ Centered. i$ l+ X4 c% Q) i( F% A* Z
  4345. : v3 R3 ]+ t$ U5 T. Q
  4346. (defun ai_dim_cen (/ ai_sysvar ai_dim_ss)1 D9 O9 m3 N2 R6 a  O
  4347.   (setq ai_sysvar (getvar "cmdecho"))
    ' ], k, b* a- F; \( Z1 {
  4348.   (setvar "cmdecho" 0)$ v6 ]4 H8 A" u' v% C9 u; ~
  4349.   (cond; H! a, n$ \5 Q5 {5 Y  ^5 n7 M! i2 x- {0 G) y
  4350.     ((setq ai_dim_ss (ssget  "_P" '((0 . "DIMENSION"))))
    5 D$ L8 n/ F, o/ M; A* k
  4351.       (command "_.dimoverride" "_dimjust" 0 "" ai_dim_ss "" . C1 ~. u1 m" O  E: I% r
  4352.                "_.dimtedit" ai_dim_ss "_h"), h, A& K2 B& o1 o# d
  4353.     ). \6 L2 H* U4 X- O" Y
  4354.     (T nil)1 f3 S' \. g% Z* j' L% e' S
  4355.   )4 S; m0 }+ N; x5 Q1 r: m5 n4 V3 G" A
  4356.   (setvar "cmdecho" ai_sysvar)
      M% e* }4 i2 n1 g0 D- E' m0 Y& v
  4357.   (princ)4 K1 H$ @# _- d
  4358. )
    3 p; Q* x8 A; L: Z$ e

  4359. & Z8 j4 q. B# t' ]$ a; G: U
  4360. ;;; Shortcut menu for Dimension Text Above 6 ]8 G7 y: z9 t) o+ @5 Z( F
  4361. - ~7 _3 N) ^' |# z( J
  4362. (defun c:ai_dim_textabove (/ ss)
    / l) ^5 ~6 j% s: e/ w1 n& }8 I
  4363.   (ai_sysvar '("cmdecho" . 0))
    % @- X! Z- K, E  e
  4364.   (if (setq ss (ssget "_I"))
    $ }8 ?: I' H% X, X
  4365.     (command "_.dimoverride" "_dimtad" 3 "" ss "")
    ; d9 Y( O  T; Q; S
  4366.     (if (setq ss (ssget))
    5 \. w( a$ U5 L! P; ]% j8 Q
  4367.       (command "_.dimoverride" "_dimtad" 3 "" ss "")
    1 W; S2 }0 p  _0 w6 O# F$ Z
  4368.     ); ?" ?+ I" _& b. k. \/ h
  4369.   )
    " F2 z- ~. }1 z  h, q% W! F) H
  4370.   (ai_sysvar NIL)8 o: D: H) A0 K. }: Q4 k& u$ E: a- ?* t
  4371.   (princ)6 I5 J1 ?7 S9 _5 ~, u$ q
  4372. )/ m$ I0 p; A2 c, i* g$ U
  4373. 2 S9 D5 U$ |4 n' ]' c) _
  4374. ;;; Shortcut menu for Dimension Text Center / x8 ^9 @. S: `

  4375. ; F2 `3 j1 P6 j6 f
  4376. (defun c:ai_dim_textcenter (/ ss); J3 F% F2 r4 Y. r. o! N4 e0 z
  4377.   (ai_sysvar '("cmdecho" . 0))3 B" d, ]% s& D# \5 R* ?
  4378.   (if (setq ss (ssget "_I"))2 ?. R5 x( w) H
  4379.     (command "_.dimoverride" "_dimtad" 0 "" ss "")/ L5 X, Z4 n3 B
  4380.     (if (setq ss (ssget))) r6 H$ L, A5 \6 l* T
  4381.       (command "_.dimoverride" "_dimtad" 0 "" ss "")
    ' j! }0 R  q1 ?; j. V% V
  4382.     )
    9 L1 d  ?* b& H6 z. j
  4383.   ): \; i- y8 a  T; N" g  k- o
  4384.   (ai_sysvar NIL)% Q& Y" j3 r7 F
  4385.   (princ)
    6 z7 M" @" b& ~& \
  4386. )
    ! L2 k7 t$ y: w: l5 Q% j

  4387. % W- G6 d6 s2 R
  4388. ;;; Shortcut menu for Dimension Text Home
    ! s6 _1 s  u$ J6 h) J( P4 P* K
  4389. 4 o2 E7 U* G% G+ ~6 `
  4390. (defun c:ai_dim_texthome (/ ss)
    / u* _8 Y4 @. q
  4391.   (ai_sysvar '("cmdecho" . 0))7 @* w5 r& ^- K' x/ }' j
  4392.   (if (setq ss (ssget "_I"))2 {2 U( J3 A1 Y4 s: ^" l5 L: m7 e
  4393.     (command "_.dimedit" "_h")
    4 A, i+ {; G7 D' T7 ^. X+ b. _. m
  4394.     (if (setq ss (ssget))
    7 g% t% x$ b9 I  R( ]
  4395.       (command "_.dimedit" "_h" ss)7 R4 ?/ P8 i- O0 S: V
  4396.     )
    # h  R7 n2 D6 N. X1 z+ ]- ^6 ?9 j
  4397.   )
    & ]4 x# T5 V  z9 Z  o# y* n+ [& j) F
  4398.   (ai_sysvar NIL)  I$ [% L; h6 e, ?( @6 n" [
  4399.   (princ)- Q8 |8 A3 Q' P9 F! W$ {5 d
  4400. )
    $ _5 E+ Q7 ~' E4 I- e3 j) I

  4401. " Y% y8 Y* u2 F% D) Y

  4402. ' f3 ?$ h, t$ I' J; U" s3 z- G
  4403. ;;; Screen menu item for CIRCLE TaTaTan option.- e- M8 T' l! j  x3 _% U
  4404. ;;;     first, get points on entities3 I3 R8 V5 @4 o' a- T
  4405. (defun ai_circtanstart()
    / k/ d! a2 M: e3 c/ t
  4406.    (setq m:err *error* *error* *merr*)* T: E5 I5 f! {: W
  4407.    (ai_sysvar
    ; Z1 ?/ `$ h* W1 @9 E
  4408.       (list '("cmdecho" . 0)+ p1 K' c6 J' g! c& x: r( Z
  4409.          ;; make sure _tan pick for CIRCLE gets same entity
    ; m, ^8 m% @, a$ C1 P* @& Q" `
  4410.          (cons "aperture"  (getvar "pickbox"))
      o9 p0 m8 A, Y' ^( z( u% y! r
  4411.           )- c8 \& O$ ]( k1 @0 a, F: X
  4412.    )
    / v3 _- y# @# ~- x9 H# s
  4413.    ;; prompts are the same as CIRCLE/TTR command option
    ' {2 b) ?4 l8 X$ G6 m
  4414.    (setq pt1 (ai_entsnap "\nEnter Tangent spec: "  nil))7 W$ D2 y  P0 i0 x
  4415.    (setq pt2 (ai_entsnap "\nEnter second Tangent spec: " nil)); q: c, W  {3 }, i5 m6 R
  4416.    (setq pt3 (ai_entsnap "\nEnter third Tangent spec: "  nil))
    " V4 [( m9 {% O0 N
  4417. )
    * G" i- F+ U1 I1 a
  4418. ;;; Command-line version5 _( G; z! Q; B0 k! u) u* x8 l. @
  4419. (defun c:ai_circtan (/ pt1 pt2 pt3)
    * O+ O8 X3 a5 u2 ~1 u- L) X& a
  4420.    (ai_circtanstart)! Z! L1 L8 \- ?0 J
  4421. $ R; m& a& m" G) `9 v0 U' X
  4422.    (ai_sysvar '("osmode" . 256))5 J' z$ G4 x7 i+ W( G
  4423.    (command "_.circle" "_3p" "_tan" pt1 "_tan" pt2 "_tan" pt3)' ~9 J3 p6 P; Y  m/ P
  4424.    
    - F  T# H9 v0 n; k; f$ c! Z
  4425.    (ai_sysvar nil)
    5 L$ X6 B5 M: t
  4426.    (setq *error* m:err m:err nil)& F7 X5 @4 G1 R5 r$ F) Z) U! H$ f
  4427.    (princ)
    ( A& {4 h' E  P
  4428. )
    ) H( n2 s  u; P" Z( J% Y$ h
  4429. ;;; Use this if CMDNAMES == CIRCLE3 j3 G) V( ~3 [* [9 F2 N  i) w
  4430. (defun ai_circtan (/ pt1 pt2 pt3)- u! j' L  _/ O( s+ u4 `" b& K
  4431.    (ai_circtanstart): G" B: `0 J0 N% x
  4432. 4 s4 M" b; S& j
  4433.    (ai_sysvar '("osmode" . 256))
    - {$ h8 B) A$ ]) v: Z8 t# T
  4434.    (command "_3p" pt1  pt2  pt3)# ^& O" |. p* m
  4435.    
    2 K5 w. K0 T: a  {4 z2 m
  4436.    (ai_sysvar nil)- m6 B" r( E- y1 [0 N5 k; J
  4437.    (setq *error* m:err m:err nil)) ?: R6 j0 Y* B5 P* Z( h4 D3 ]( C
  4438.    (princ)
    ! a% S3 _' }/ Q  v% x$ W
  4439. )
    " g) O: m7 D- D- Y$ B
  4440. % j& O' O8 x' ?
  4441. & K  t7 t( V$ I. w
  4442. * h6 Y3 ^& n) G1 E3 W
  4443. ;;; Shortcut menu Deselect All item.& a8 K, c3 d; ]5 E# H: e0 h
  4444. $ T0 y( g) n4 o8 }( A* R
  4445. (defun ai_deselect (), E  `8 W4 c( u2 n
  4446.    (if (= (getvar "cmdecho") 0)                        ;start if
    6 Q& s% p+ U# _: p! c& [9 c
  4447.        (command "_.select" "_r" "_all" "")
    $ s9 N* d- Q# W# @+ J, x
  4448.        (progn                                        ;start progn for cmdecho 1
    0 c# G2 R; P! U' Y4 [# V0 H9 {
  4449.            (setvar "cmdecho" 0)
    ; q7 ^% G: z( o' U( F
  4450.            (command "_.select" "_r" "_all" "")
    9 d9 f/ D8 P- B: S8 E7 t
  4451.            (setvar "cmdecho" 1)4 ^8 b5 z0 P/ J
  4452.        )                                        ;end progn for cmdecho 1
    7 M3 C8 m  \3 z$ P. ^9 u4 J" K1 e7 E
  4453.    )                                                ;end if/ j) e2 h. b& Z$ Q0 X$ q" D, \  `
  4454.    (terpri)+ g! I5 p( S; O* I3 M
  4455.    (prompt "Everything has been deselected")/ P6 w" r0 i) \4 g- T
  4456.    (princ)6 ~4 W0 S0 b+ S3 i
  4457. )
    % v" V$ L6 e" L! A" M$ w5 f
  4458. : Z2 d0 ]% w8 \, c
  4459. ;;; Command version of ai_deselect to be called from the CUI
    9 X9 j. A; G2 q7 A0 ~
  4460. ;;; so it gets properly recorded by the Action Recorder
    ' U+ E  V) }: g4 S
  4461. ;;;
    ! O6 m; [$ T# B7 c
  4462. (defun c:ai_deselect ()
    - w- J& z: G! ]: u4 Y0 N
  4463.   (ai_deselect)
    # p7 G" n' l  `/ P  V
  4464.   (princ)- H9 h# \( C1 `+ `* ~/ }
  4465. )
    % v0 M# M" ?4 p% {- q

  4466. ( u5 Y& c% {4 L+ }5 k  r
  4467. ;;;! z: D) l  C$ ?/ v3 I& `
  4468. ;;; Enable Draworder to be called from a menu
    2 n4 E* O0 S. d& q# W
  4469. ;;; Checks for Pickfirst selected objects
    6 \1 p# s4 B% z% a! E
  4470. ;;;( x1 {) q" J7 U" J. a( I
  4471. - {8 C' y" ^( Y& V2 ^$ P# q# Z, m5 \
  4472. (defun ai_draworder (option / ss )
    ' C; y+ V* ~3 `
  4473. 6 }( n+ E" R2 K" o7 q) m; M
  4474.   (setq m:err *error* *error* *merr*)8 V" e- _; V; d+ `- t) Q8 Q+ F
  4475.   (ai_sysvar '("cmdecho" . 0)): S. T6 \; o' c) p3 t2 L
  4476.   _+ k3 m& z& ~, ^
  4477.   (if (setq ss (ssget "_I"))
    9 g, J; v( |$ |- k3 r
  4478.     (command "_.draworder" option)
    + E, O- u8 c; M- B, j) `
  4479.     (if (setq ss (ssget))
    + m, N* o/ l! D; p9 }5 }( S
  4480.       (command "_.draworder" ss "" option)
    / o9 w2 n/ p* x, H0 c1 `5 t
  4481.     )
    ( [( S+ p3 V, Z
  4482.   )
    ; ~+ s" d0 b1 Z0 c; ^
  4483.   (ai_sysvar NIL)
    4 l) E& H: l3 Q7 L& z5 U
  4484.   (setq *error* m:err m:err nil)
    % \" H# `# ~! n0 u; q% q% M+ c" i+ B$ i( \
  4485. / A+ _0 |2 Q+ W! N$ x
  4486.   (princ)
    ; r' m+ Z# v) k! r9 c
  4487. )
    7 q' P: n2 `/ G* y* z! u! j& }
  4488. 6 B: e9 M( j) J) `) k( z
  4489. ;;; Command version of ai_draworder to be called from the CUI6 [9 A1 e+ y, Y
  4490. ;;; so it gets properly recorded by the Action Recorder
    7 X  R! B' U" z( ~& R7 B; _) H
  4491. ;;;, r0 ]' t9 k  z- S( s# u% z& v9 J. b1 t
  4492. (defun c:ai_draworder ()
    $ K, ?/ G3 E) `- J8 V( D7 I
  4493.   (initget "Above Under Front Back"). G- p* C" H1 [
  4494.   (ai_draworder (strcat "_" (getkword)))
    % X4 \9 x5 H  `8 ~
  4495.   (princ)9 P: c  y* |: D* V- e( h6 y. O7 O7 L$ z
  4496. )8 s, f) V+ |/ [. Q
  4497. : z) @# @/ ~6 X' M( V
  4498. (defun c:vlisp (), n1 O3 J% [$ p! J
  4499.   (if (/= nil c:vlide) (c:vlide))
    5 F3 t7 W/ R8 ^" ?8 A! j
  4500. )" M! f( Y7 }. }' A: W, W
  4501.   g) f! s& N& }% K% Q" v
  4502. (princ "loaded.")
    + H. S) Q# {0 r! A

  4503. 0 c) m& L- ?5 G, S: ?0 n
  4504. ;; Silent load.6 b$ \4 ^$ |2 l% Z
  4505. (princ); \9 K6 i8 _# i
  4506.   m; r$ |/ s/ R5 _
  4507. ;;;----------------------------------------------------------------------------
    5 n1 M* T  k, {0 s5 I( t, v' g
  4508. ;;;6 C# T' Q2 k1 ~( U# H
  4509. ;;;   DDCHPROP.LSP   Version 0.5
    ' q- K7 G$ z: P- w: _' S
  4510. ;;;
    . z! L: b9 p% b$ m
  4511. ;;;   Copyright (C) 1991-1993 by Autodesk, Inc.$ s# Y: G" {9 x4 N" S4 q
  4512. ;;;
    ' t, h' f3 q( ]& ]. g
  4513. ;;;   Permission to use, copy, modify, and distribute this software( M3 c4 L# i8 v4 R7 q1 q3 q
  4514. ;;;   for any purpose and without fee is hereby granted, provided* Y1 c3 F; W! K& J$ d! h
  4515. ;;;   that the above copyright notice appears in all copies and that
    $ a% \( I0 P9 A
  4516. ;;;   both that copyright notice and this permission notice appear in
    ( N8 x; z1 n+ s6 z. y& x% H! ~! W
  4517. ;;;   all supporting documentation.. ~* T  B" G# `4 W/ n9 Q
  4518. ;;;
    2 i! j& ^3 q8 a7 {3 z8 @. b
  4519. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED3 d* M2 W0 A2 o$ M7 m: ^
  4520. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR% F1 G. O7 q' _9 e6 w; u
  4521. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
    / E9 ]- @1 |  `8 _, X+ f
  4522. ;;;# J! }3 Z4 C' s7 e9 w
  4523. ;;;   2 February 1992
    ( }' }4 x: s' L; I; w) |
  4524. ;;;     j% J" j7 M5 G, m% v, p% l
  4525. ;;;----------------------------------------------------------------------------6 p- P7 J+ o/ I
  4526. ;;;   DESCRIPTION6 b* X! v7 {  Z* m7 ]1 R
  4527. ;;;----------------------------------------------------------------------------, U" L! q, V% u9 y, P; ~2 g
  4528. ;;;   C:DDCHPROP is a dialogue interface for the CHPROP command.; @' a: R1 x' J$ s' {6 a3 `
  4529. ;;;  i9 r! m9 l3 b# A8 I: k
  4530. ;;;   The command looks similar to DDEMODES.  The main dialogue has an image / [9 a' e" V6 w- L3 F" L
  4531. ;;;   tile, 3 buttons (layer, color, linetype), and an editbox (thickness).   
    / R, c0 s( D( W; u7 H
  4532. ;;;   The 3 buttons each launch a sub-dialogue containing a list and edit box.  % A, G7 I% h3 o
  4533. ;;;   The dialogues are all defined in the DDCHPROP.DCL file.
    4 G* s& }- G( w* V1 t
  4534. ;;;
    + y$ R6 O- b- k; c, b; d( O# z
  4535. ;;;
    2 O8 V1 m- q8 m& Q' A$ m
  4536. ;;;----------------------------------------------------------------------------
    5 p3 {- e) C5 D; O& ?& V  ~
  4537. ;;;----------------------------------------------------------------------------
    + `# f9 N1 G3 ?6 Y3 ~
  4538. ;;;   Prefixes in command and keyword strings: 2 h" z' J# Q( i/ L1 G% t& [
  4539. ;;;      "."  specifies the built-in AutoCAD command in case it has been        
    : C. Y: o0 s% G+ e- R! K
  4540. ;;;           redefined.& S7 u( O4 |8 T. L- T# A  I  n
  4541. ;;;      "_"  denotes an AutoCAD command or keyword in the native language
    6 U, k/ f- ]8 g
  4542. ;;;           version, English.
    / Q' H1 `& d) y4 P& I! Q  z9 X
  4543. ;;;----------------------------------------------------------------------------5 ]. j6 M+ x* h& Y1 l$ P: n
  4544. ;;;
    2 w6 u& [- f( X/ E2 y5 r) }
  4545. ;;;' Z& g' L! D9 m' k# m  J; n$ f
  4546. ;;; ===========================================================================% I9 K/ w& V& E/ H- A
  4547. ;;; ===================== load-time error checking ============================, R  V6 V" `' T9 t) U
  4548. ;;;, F& Q) {0 {$ a% N! b  ?

  4549. * j; {, _- W& u& p
  4550.   (defun ai_abort (app msg)# \3 m+ l$ c+ R" e% `8 h
  4551.      (defun *error* (s)
    # u! A  c. L' ]3 q) l, g2 {
  4552.         (if old_error (setq *error* old_error))
    8 p. _( Z9 U4 c9 d$ k3 ^2 U% u
  4553.         (princ)( O' k; j, c+ p: f" {" X
  4554.      )' G6 V0 t1 D1 o% O) L
  4555.      (if msg  B/ t( H% t2 F' e4 }6 W2 F1 J3 ^
  4556.        (alert (strcat " Application error: "8 {& F# V7 R% [/ B5 V
  4557.                       app5 g+ N! b* F* J. `+ {
  4558.                       " \n\n  "7 ]! W! x$ t: f: e$ x# o
  4559.                       msg4 h7 C7 _' w  b
  4560.                       "  \n"' p2 u5 ^- r5 M1 R
  4561.               )& W3 }% i. C5 Q* A
  4562.        ); O" h1 [0 h' Z  U8 _/ R0 o0 S
  4563.      )" `$ d# ^$ E) ]7 E6 }
  4564.      (exit)
    2 ~$ a" G( Y1 z5 x* Z, D3 F
  4565.   )
    3 u$ J2 [! y' A  Y

  4566. % ^/ d% e# W$ j) n
  4567. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,* H3 M) r7 N: y& S. P  \8 r
  4568. ;;; and then try to load it./ T5 f& u8 ]9 G5 x7 g
  4569. ;;;6 T1 q# X4 x4 |1 _+ @# m/ A
  4570. ;;; If it can't be found or it can't be loaded, then abort the" l+ G: P# o) C5 p; N  i; H
  4571. ;;; loading of this file immediately, preserving the (autoload)4 v7 i" L" I- @/ e; D: W
  4572. ;;; stub function.
    1 O  T. t4 H+ m2 w9 ]! N' f
  4573. 1 g+ y0 K. G; O* {' z4 O
  4574.   (cond
    3 k/ V9 f. f, e& {3 m
  4575.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    " w! ~3 K- P6 n6 a5 ?
  4576. . b: B, I2 X4 W2 K, K  R
  4577.      (  (not (findfile "ai_utils.lsp"))                     ; find it4 I  f# c1 f- M0 \0 [* q9 H$ _
  4578.         (ai_abort "DDCHPROP". ]' p* X. B/ p/ m. s' ]5 i/ M3 E
  4579.                   (strcat "Can't locate file AI_UTILS.LSP."
    - E3 W7 f7 H) c( I
  4580.                           "\n Check support directory.")))6 _3 o, C. |! v' D

  4581. 3 J6 g% j1 Z. L4 C+ U, T0 J
  4582.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
      C: Q: v" C$ {3 x
  4583.         (ai_abort "DDCHPROP" "Can't load file AI_UTILS.LSP"))4 e5 A4 |6 t9 `9 G  ~7 S
  4584.   )% |3 k% h+ r3 N% m2 h. E  D

  4585. & O& M- L0 b. y5 v; \# D! g* Z' T" U
  4586.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP8 V2 @) f  F* N5 o" N
  4587.       (ai_abort "DDCHPROP" nil)        ; a Nil <msg> supresses
    - @5 U- ~) k, M/ p8 B9 g
  4588.   )                                    ; ai_abort's alert box dialog.( I/ q# l+ ~, `! s) v. y( L

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

  5043. 5 C$ ~9 R7 L# p. z0 j# y# f
  5044.     (if (= ltname "CONTINUOUS")$ {$ \6 U8 U6 \' ?) ]. Z
  5045.       (setq mdashlist (list "CONT"))5 P: G( R" z/ I6 c9 c5 v+ c4 V
  5046.       (setq mdashlist   l. K1 d3 T* l4 ~" X) A* d( X
  5047.             (append mdashlist (list (add-mdash ltlist)))+ f' }- M5 _5 |) F6 r& F- f' K' r, o
  5048.       )
    ) n3 E' ^2 H' c2 ?" N4 u6 o, r6 ^
  5049.     )
    ; B8 [. E! S2 J. Y1 ]) S
  5050.     (while (setq ltlist (tblnext "LTYPE"))
    3 S' z' u: m* C# i
  5051.            (setq ltname (cdr (assoc 2 ltlist)))0 J3 V4 x  g: C, F) X
  5052.            (setq ltnmlst (append ltnmlst (list ltname)))
    * C. ]  f  M& B* l' m+ u+ X
  5053.            (setq mdashlist
      `1 U+ V2 m- r9 C( u
  5054.                 (append mdashlist (list (add-mdash ltlist)))
    6 [; i5 n+ L2 d
  5055.            )
    + k5 @# [4 T- p6 o3 q; e$ _
  5056.     )
    % ~7 V4 c  p+ K1 W3 S: z
  5057.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))4 z$ ^! _# ~' u" B/ ^
  5058.     (setq mdashlist  (cons nil mdashlist))7 R( g. z3 `% s% M
  5059.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
      C- g7 E3 H. _. Y  n$ L
  5060.     (setq mdashlist  (cons nil mdashlist))
    7 R0 p* M  N1 b" p7 ]
  5061.   )
    : T6 F$ G/ g+ D2 k- {- |
  5062.   ;;
    0 X, C6 f# G+ f( x. J, E
  5063.   ;; Get all the group code 49 values for a linetype and put them in a list
    ; W- s% T' ^/ D+ S
  5064.   ;; (pen-up, pen-down info)4 `, d# n: n: `! R! Q- V
  5065.   ;;
    2 t# {7 u# N/ W* i3 H% [/ H5 O) f! L
  5066.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)
    & B- ]+ L( W. e
  5067.     (setq dashlist nil)
    * o, X: [. v- ~, F
  5068.     (while (setq assoclist (car ltlist1))7 k7 B$ u' Z- e( p1 r0 n
  5069.       (if (= (car assoclist) 49)7 V. J2 `1 L' @' h
  5070.         (progn9 p2 q/ g' k$ S  V) z* d9 r
  5071.           (setq dashsize (cdr assoclist))# J7 |. T# m6 i9 Q  L# \1 n
  5072.           (setq dashlist (cons dashsize dashlist))  X8 F( r4 e; L8 s  o. j6 Y( ^) ]
  5073.         )
    - I" G$ \/ o. O2 d
  5074.       )
    : y* n$ J5 b- e9 W) \2 D: p( ^
  5075.       (setq ltlist1 (cdr ltlist1))) P6 t; o2 x; P, x9 W
  5076.     ); M9 i( B' m% g0 ^
  5077.     (setq dashlist (reverse dashlist))
    . K( c# v/ x  t  T6 v2 U/ I2 I* E
  5078.   )7 m/ e) e9 d8 ]& b5 F! l, r
  5079.   ;;* ?+ n9 v! a) G9 D
  5080.   ;; Color a tile, draw linetype, and draw a border around it- y* Z1 m. U( S/ v3 p+ m
  5081.   ;;
    0 n$ o* K$ z/ @7 C! \: U- x
  5082.   (defun col_tile (tile color patlist / x y)4 n- V3 X: U: m8 G& d% g$ O
  5083.     (setq x (dimx_tile tile))
    8 N4 c9 j/ ]5 S# P1 k, I
  5084.     (setq y (dimy_tile tile))! X- P4 N$ Q* Y
  5085.     (start_image tile)# k- h4 [) u+ S+ l$ M
  5086.     (fill_image 0 0 x y color)
    $ \/ D  Z- C$ b$ j
  5087.     (if (= color 7)
    7 b, {& R) H# n8 D& a, n* `
  5088.       (progn
    # r7 E& Q; s8 ^+ A' k+ s# S
  5089.         (if patlist (drawpattern x (/ y 2) patlist 0))# `" A) b0 ~  r$ ^
  5090.         (tile_rect 0 0 x y 0)
    , |6 p0 ~+ M7 Q& d$ i0 k
  5091.       )! f; y, w9 x/ D* G8 b6 L) g( X# Q
  5092.       (progn2 K+ d" E4 B+ x- m
  5093.         (if patlist (drawpattern x (/ y 2) patlist 7))* B% |0 o; g, g5 T  q
  5094.         (tile_rect 0 0 x y 7)' t+ i$ S" p% l% p  Z% W
  5095.       )+ D$ S* ?3 f1 \+ @6 [% R) ]( [
  5096.     )+ m$ M( ?' o! h. {
  5097.     (end_image)
    2 Y- {' @$ h, Q7 t9 ~, n
  5098.   )
    / \1 c: e8 ^: R  r& m9 y8 J
  5099.   ;;
    / N6 B% V! M7 x3 _
  5100.   ;; Draw a border around a tile1 I: g4 r$ `; u& t: b
  5101.   ;;6 a9 H- [, V" u# v5 I6 l- o
  5102.   (defun tile_rect (x1 y1 x2 y2 color)6 _8 D0 I  {* u; ^( `
  5103.     (setq x2 (- x2 1))
    & j& S4 d2 e! K9 t8 U" B
  5104.     (setq y2 (- y2 1))% v4 Y% N+ R! K& K* T
  5105.     (vector_image x1 y1 x2 y1 color)
    0 l: k, Y0 J) ^+ n6 L3 ~0 H
  5106.     (vector_image x2 y1 x2 y2 color)
    3 c) v0 d# N0 B
  5107.     (vector_image x2 y2 x1 y2 color)( }: J1 X. d0 d  e) s, o+ w
  5108.     (vector_image x1 y2 x1 y1 color)
    $ b! l! B2 s5 j8 t* X, Z4 i
  5109.   )! v  v) q% v: ?* w* ?) C
  5110.   ;;9 _: P6 L' Z7 M6 ?3 d% L( u0 K: e
  5111.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image
    + j, a8 @! H2 V
  5112.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
    * k+ U: E9 F1 ]2 j4 d
  5113.   ;; list of numbers that define the linetype, and color is the color of the
    ; i1 p0 h: B; R
  5114.   ;; tile.; |# w4 j/ _9 U% _" M; Q
  5115.   ;;
    1 Z/ k) c: o  H" r0 \, g. [% v
  5116.   (defun drawpattern (boxlength y2 pattern color / x1 x2
      A0 g( `$ `: `( t. Z% f7 A% B
  5117.                       patlist dash)8 B3 h; Z5 T( m+ l5 u! K; J
  5118.     (setq x1 0 x2 0)& O% {( a: I5 z- L# Y+ D3 b4 e0 ?) Y
  5119.     (setq patlist pattern)
    - {* q: J2 l- L" G4 Q) C3 g
  5120.     (if (= patlist "CONT")
    ! T& L  w2 G  k' r
  5121.       (progn
    ' V, X. I- ]: x. A! s3 R
  5122.         (setq dash boxlength)
    $ R0 A6 E; |' v$ |7 o
  5123.         (vi)
    * o9 ~$ s4 T. X" K; {' H
  5124.         (setq x1 boxlength)" _5 h* L% [2 @' a2 a
  5125.       )3 K. c- F# c+ W! C  M
  5126.     )1 p; d5 w$ V% G8 g) ?8 f
  5127.     (while (< x1 boxlength)7 ?# x9 b* x1 B6 }
  5128.       (if (setq dash (car patlist)). w6 J2 S, u% s* W
  5129.         (progn, U1 d1 O" q+ y7 x) P1 y( S0 O
  5130.           (setq dash (fix (* 30 dash)))1 R0 j8 _/ d/ ]( {% W: b
  5131.           (cond . a; S/ I* `+ K; F) _  F/ ?3 @3 q: J
  5132.             ((= dash 0)
    , P. b2 L# E" }# ?1 |
  5133.               (setq dash 1)
    ; v3 D. [# M6 b4 x6 m; o
  5134.               (vi)! C' Y! Q5 N( y! E- R# |
  5135.             )
    8 k! t; U7 V* ^  \
  5136.             ((> dash 0) & c4 t) P$ ?% i2 b/ `" Y, s3 t
  5137.               (vi)
    " T* Y$ K& k" X) c; n' B. G. N
  5138.             )) L) _% [! B! S
  5139.             (T
    # @' P/ p" r# _$ @0 z6 O4 z3 p
  5140.               (if (< (abs dash) 2) (setq dash 2))
    5 T  ?4 G! r. H% D  B! S& o
  5141.               (setq x2 (+ x2 (abs dash)))( W* Q0 p! ^% O, X
  5142.             )
    0 v2 W& a& o  c! p$ l, a) A, B
  5143.           )
    - k5 s8 _! l. Y$ ]0 C
  5144.           (setq patlist (cdr patlist))) ?4 y# q; x% }7 u
  5145.           (setq x1 x2)
    - b( W7 u5 j  j3 Q9 d0 _) s* A: `0 t
  5146.         )
    $ g. e. C$ o! T9 |& F
  5147.         (setq patlist pattern)5 T) L6 T7 W% a
  5148.       )
    9 c* R% X! Y4 z) P4 o  d
  5149.     )8 t& h# @7 v) B& A- p8 }; _- R
  5150.   )9 _1 L$ R" T- S; `- f% l: [. B3 w  X
  5151.   ;;
    , b0 J# B8 ?' k" T) p* b
  5152.   ;; Draw a dash or dot in image tile8 K: Y6 I8 a' w1 ]
  5153.   ;;
    $ R9 I, w6 y/ j9 f
  5154.   (defun vi ()0 L; ^* ~0 e8 W) d7 K
  5155.     (setq x2 (+ x2 dash))1 {9 a9 l3 c- U
  5156.     (vector_image x1 y2 x2 y2 color)
    / u( p. Z7 X" J* N
  5157.   )
    4 s1 j$ T8 a2 B5 e
  5158.   ;;6 C4 B( A. s! f' X
  5159.   ;; This function takes a selection and returns a list of the color, linetype, % D& ^1 I; G5 h+ m
  5160.   ;; layer, and thickness properties that are common to every entities in the
    ; x0 W& i2 y5 b  K& a
  5161.   ;; selection set - (color linetype layer thickness).  If all entities do not & S/ M$ C0 }$ v# ?/ d
  5162.   ;; share the same property value it returns "Varies" in place of the
    , i8 h, O9 q, q0 n3 `& O
  5163.   ;; property value.  i.e. ("BYLAYER" "DASHED" "Varies" 0)# w& H) L, r( n; f: W% ?
  5164.   ;;/ Z8 `0 n  E6 K3 Q5 N4 h
  5165.   (defun getprops (selset / sslen elist color ltype layer% n& p7 `/ r3 a$ m- A
  5166.                             thickness go chk-col chk-lt chk-lay chk-th ctr)2 S5 ~( ]3 J5 {1 o  g1 M
  5167.     (setq sslen (sslength selset))( Y; w# e6 O/ R4 G% S! t' n
  5168.     (setq elist (entget (ssname selset 0)))
    9 D4 |. ]' ~3 G# G6 x& [) _
  5169.     (setq color (cdr (assoc 62 elist)))$ E1 @+ }- g" x+ B8 ^5 Q2 t5 T. |
  5170.     (if (not color) (setq color 256))
    3 c, r4 J- Q8 j/ U% b( {
  5171.     (setq ltype (cdr (assoc 6 elist)))( E+ H- D" }- ]2 u. o7 z
  5172.     (if (not ltype) (setq ltype "BYLAYER"))& k. O. a: B9 f& S! |
  5173.     (setq layer (cdr (assoc 8 elist)))
    ; u* R" q5 P! v% I% J1 w6 J
  5174.     (setq thickness (cdr (assoc 39 elist)))
    + b6 Z) q% R! @# o
  5175.     (if (not thickness) (setq thickness 0))
    + h3 J) O9 X4 M9 a0 |
  5176.     (setq go T chk-col T chk-lt T chk-lay T chk-th T ctr 1)' i  S' M( \8 E. S! m$ @
  5177. ! _/ L, z: o/ ~+ ]8 d6 d( l# S
  5178.     ;; Page through the selection set.  When a property
    4 ^) y; I: f/ `9 C8 J
  5179.     ;; does not match, stop checking for that property.
    1 e" y- [! q0 y- K
  5180.     ;; If all properties vary, stop paging.* f, |, S4 I1 [5 t! `- Z
  5181. % T$ F  t  s- ]! W5 _5 Q! w' S
  5182.     (while (and (> sslen ctr) go)
    0 \0 [9 `% ^/ O6 v$ E& r
  5183.       (setq elist (entget (setq en (ssname selset ctr))))
    ( m3 U) H: V% a9 G) J
  5184.       (if chk-col (match-col))
    ; y) R  c! q( R
  5185.       (if chk-lt (match-lt))
    9 C% \# _+ g8 M; n( V
  5186.       (if chk-lay (match-lay)): d' N$ O4 n8 o% `5 j# T
  5187.       (if chk-th (match-th))
    * s3 T! R) Q+ ~6 i$ c" Z% A4 X
  5188.       (setq ctr (1+ ctr))
    5 l4 }7 O1 w- K: i; a1 l1 g/ _. Z- O
  5189.       (if (and (not chk-col) (not chk-lt) (not chk-lay) (not chk-th))
    0 x2 K( x& o4 ^4 p3 ?
  5190.         (setq go nil)
    % W& \6 l0 n3 {. \
  5191.       )7 w5 M; l; Y, t6 m+ y  y. m
  5192.     )6 @9 i1 I% |" u2 o5 S, o$ Z
  5193.     (list color ltype layer thickness)
    * M, Z. G& m( x5 @7 E2 y0 }( H
  5194.   )$ c9 f. @0 |0 ]
  5195. ) I% N- |" E, x% [5 R$ Q
  5196.   (defun match-col (/ ncolor)- B' N' H, a6 [# Q8 H. m5 }
  5197.     (setq ncolor (cdr (assoc 62 elist))). Z" _1 U8 y: o4 e& }
  5198.     (if (not ncolor) (setq ncolor 256))
    " A7 s+ J% `" S# \9 A
  5199.     (if (/= color ncolor)( R. ?) K( R5 b; {" o) N
  5200.       (progn
    ; t% b7 j3 ?- \" S7 l, ~% ~- Q
  5201.         (setq chk-col nil)4 S0 a6 e/ R  c: S
  5202.         (setq color nil)5 P) M7 y* U# a( Q  G
  5203.       )
    ) e: B  l' Y- C, I- N, D
  5204.     )
    9 ?7 h& {1 H( v( Z
  5205.   )+ D) J/ w2 c2 ^+ l5 N' w
  5206. 2 Q& h2 K4 B& p( A
  5207.   (defun match-lt (/ nltype)
    8 o5 ]0 H8 A6 d$ ]9 O* O
  5208.     (setq nltype (cdr (assoc 6 elist)))
    : X& C5 U. ?, M0 b# L
  5209.     (if (not nltype) (setq nltype "BYLAYER"))
    4 [: M! r) c- {
  5210.     (if (/= ltype nltype): D6 \7 T) k* S+ E5 d' D
  5211.       (progn- t% ~$ `( ~) ~) z+ c$ M8 e8 X
  5212.         (setq chk-lt nil)# ~) P* M% }" {& ?; m+ e5 T" U
  5213.         (setq ltype "Varies")
    ! m; f. O+ ^! p% d9 r
  5214.       )
      [) |# H8 ?" z: E$ d$ F+ ~
  5215.     )
    # w( V/ P% q; O* B
  5216.   )6 T0 l3 }8 i8 d$ |& }( b. t

  5217. 2 x! D/ I3 Q, N
  5218.   (defun match-lay (/ nlayer)
    5 l  i' L% a/ |4 ]5 `
  5219.     (setq nlayer (cdr (assoc 8 elist)))
    0 |9 H' }6 x6 p" C0 @& F
  5220.     (if (/= layer nlayer)3 G. C& I) f8 y4 J3 k: G( o' `
  5221.       (progn( x8 Q0 N9 v/ A: n0 U7 I* [, R
  5222.         (setq chk-lay nil)6 g) }. O/ w# d/ j, d' X
  5223.         (setq layer "Varies"): A  V5 c% [6 E. i. x7 o- E) s6 Y
  5224.       )  M4 z" X3 t" z5 K" D
  5225.     ); N* }6 J2 p6 u: F/ ~; x
  5226.   )& V8 ^! L$ P; a# H5 T

  5227. & @  r3 f! C% r+ N
  5228.   (defun match-th (/ nthickness)
    0 C6 L' l4 {  o  y" K4 |! F
  5229.     (setq nthickness (cdr (assoc 39 elist)))
    5 ]/ `+ c3 H6 {  v$ J( L
  5230.     (if (not nthickness) (setq nthickness 0))% _4 Q; Z1 a4 [" e
  5231.     (if (/= thickness nthickness)
    ) M0 e- p2 U) I
  5232.       (progn
    8 J5 N) w& r7 x# d) x
  5233.         (setq chk-th nil)0 z0 Y5 R: O+ _7 |, T' f
  5234.         (setq thickness "Varies")) L5 {9 j1 e8 U& F! R9 [& |
  5235.       )
    * q! q7 F1 a7 e* y* l8 ^+ o
  5236.     )( [; B: S# X( Y, O* U2 T
  5237.   )) B* a+ V" z" P. @* g' m5 v3 c" c3 l- m

  5238. : u6 V# |9 k4 |9 u1 Y
  5239.   ;;) \: s2 T; e$ ~% {+ x
  5240.   ;; If an item is a member of the list, then return its index number, else ! T, y# K% @1 K% J
  5241.   ;; return nil.0 c* u. |6 R% g3 D9 x7 j
  5242.   ;;
    9 m$ U. K: p5 g& U( s# a# ~
  5243.   (defun getindex (item itemlist / m n)) P$ ~! y* C( G, {, u* ?2 G8 e4 i- U* Z
  5244.     (setq n (length itemlist))
    . t: n% h( U; Z/ }; h# R
  5245.     (if (> (setq m (length (member item itemlist))) 0)4 R" i: U: S; @# ?3 Z% i
  5246.         (- n m)
    ' G# e5 z# X8 R- p& y0 {
  5247.         nil
    & E( \) D2 D) b6 X" [! A  `
  5248.     )) J- A) U" k! G& P7 W& R2 l
  5249.   )
    * n6 @2 o$ x- D) Q
  5250.   ;;
    + b# T9 [3 h  n# i3 a8 [# b
  5251.   ;; This function is called if the linetype is set "BYLAYER". It finds the ) F$ J: q8 w( V
  5252.   ;; ltype of the layer so it can be displayed beside the linetype button.
    6 I& w5 H2 R9 r1 L' J7 U
  5253.   ;;9 e% V+ W* l0 S# }; L
  5254.   (defun bylayer_lt (/ layname layinfo ltype)
    % Y+ S8 m/ Z: C) a0 [4 h
  5255.     (if lay-idx
    - ^4 }& b- d9 G- S' P$ W
  5256.       (progn
    1 x" Y- {8 X' O9 c- k
  5257.         (setq layname (nth lay-idx laynmlst))
    7 h. y) ?: C. M, v% j
  5258.         (setq layinfo (tblsearch "layer" layname))
    & l. X; f! V. M; t
  5259.         (setq ltype (cdr (assoc 6 layinfo)))
    ) o$ |# M1 P' V- @; ^' O* r, e
  5260.         (strcat "BYLAYER (" ltype ")")% B8 ^# i1 h# d# F7 {: |5 C5 r( n
  5261.       )4 F  J8 U# K& e1 a4 ?, ~% U* U
  5262.       "BYLAYER"/ x3 i! ^, E! S5 E: F2 L
  5263.     )# q. i4 N; a5 i9 i! d
  5264.   )
    2 B! R: X9 P& v3 o1 z
  5265.   ;;
    ! O9 H* l+ `0 Y- y# U
  5266.   ;; This function is called if the color is set "BYLAYER".  It finds the
      a& }+ A6 \  k* x6 @  J9 }& f- n# @3 }
  5267.   ;; color of the layer so it can be displayed  beside the color button.
    9 J4 T+ r3 y* ~2 o, E' ]
  5268.   ;;
    . u1 W* U8 c% i: z1 h2 z
  5269.   (defun bylayer_col (/ layname layinfo color)
    * r3 W5 ?! U3 @1 V
  5270.     (if lay-idx
    . r" E2 @( a0 M( G% U
  5271.       (progn
    ( d" [9 `2 r% f3 @+ F
  5272.         (setq layname (nth lay-idx laynmlst))6 @6 q- E* Y' f1 k0 E# Y
  5273.         (setq layinfo (tblsearch "layer" layname))
    . o  e2 T  |$ t+ `: Y( i
  5274.         (setq color (abs (cdr (assoc 62 layinfo))))
    - |6 x& \3 V: |+ S, z# s! H
  5275.         (setq cn color)
    ) @9 I3 e9 S3 U' L
  5276.         (strcat "BYLAYER (" (colorname color) ")")
    " b  v# \8 g$ K( ]7 i' u: Y4 W
  5277.       )- l& d6 U6 Y+ t
  5278.       (progn
    9 s0 P" X3 e/ g' I" V1 L" s# p7 C! k4 h
  5279.         (setq cn 0)2 L  ]8 x" m7 Q2 Q
  5280.         "BYLAYER"
    4 ^8 d9 j' L$ k& L) \! ~
  5281.       )# Y4 C! J7 v' D1 D
  5282.     )
    . e* P5 [" S9 l, |
  5283.   )
    + g2 O* a+ H# P6 f( ~2 j
  5284.   ;;
    - C+ j+ S9 s  Z2 Y
  5285.   ;; If there is no error message, then close the dialogue
    / l) }0 t. u" O. z
  5286.   ;;
      n6 \. m- c+ p
  5287.   ;; If there is an error message, then set focus to the tile0 w3 \! o' m, H8 x2 U
  5288.   ;; that's associated with the error message.( C7 F. O' W9 R. @/ B' ]
  5289.   ;;; H( \0 V: F! W$ m4 R
  5290.   (defun test-ok ( / errtile)
    1 K6 d# M' P) t$ F
  5291.     (setq errtile (get_tile "error")). N6 ^" {0 H$ w5 O
  5292.     (cond
    , _$ |8 o* ?- _  [- D, x% R
  5293.       (  (= errtile "")1 f  A& l8 {( @8 ?* }5 y4 ]# `
  5294.          (done_dialog 1))
    % e5 {  k  w6 z6 `6 L" p9 B
  5295.       (  (= errtile "Invalid thickness."). w" L+ K& P: l/ ?$ S. o, O
  5296.          (mode_tile "eb_thickness" 2))
      O  I4 N% e) m) w! p4 j) k
  5297.     )( W; q) }1 I3 k& s6 B# J
  5298.   )" [: V5 z; @) a1 p, |
  5299.   ;;( y+ \9 y' s, d/ M7 N( ~
  5300.   ;; A color function used by getlayer.
    7 w' O/ N% f! C1 N) W, ^2 [& s
  5301.   ;;
    # E& e8 n1 {$ I5 t
  5302.   (defun colorname (colnum)
    1 _: E0 Z8 v: r( ^
  5303.     (setq cn (abs colnum))9 q: T" D% m7 a/ `7 d) ~9 m" b
  5304.     (cond ((= cn 1) "red")# t* U; D/ R1 D  U% X
  5305.           ((= cn 2) "yellow")2 R( b/ z: k, B6 v7 q4 B
  5306.           ((= cn 3) "green")& U5 D2 O. n7 p$ B2 \/ A4 f2 y8 O5 R
  5307.           ((= cn 4) "cyan"). y. g7 T1 g' M$ v
  5308.           ((= cn 5) "blue")
    2 P! O. F+ `- O' h7 k* k
  5309.           ((= cn 6) "magenta")$ E0 z, K* ~6 l$ m2 \( s
  5310.           ((= cn 7) "white"), F  D! T3 U1 a: e5 w
  5311.           (T (itoa cn))# c( {; N9 N$ c5 Q; f
  5312.     )
    / I$ J' m" x; H2 @  P4 P3 p( y  h. ]
  5313.   )
    / v' {9 Z- H% m8 Y- b
  5314. . `, v9 T0 Q- G( y* J8 R* E
  5315. ;;; Construct layer and ltype lists and initialize all- X3 Y9 H, _9 P$ E
  5316. ;;; program variables:5 m/ N8 s0 s$ o3 H" D: x# ^, d

  5317. - U* g7 t# w8 e% a
  5318.   (makelaylists)                     ; layer list - laynmlst8 t# ~0 l0 P: i
  5319.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    9 I8 H' C( z. ?8 h$ [7 z
  5320.   ;; Find the property values of the selection set.
    ( U, `4 n/ Q2 y: l
  5321.   ;; (getprops ss) returns a list of properties from- ~; V0 l6 i+ p9 O
  5322.   ;; a selection set - (color ltype layer thickness).
    : [# V  d7 e) I) w
  5323.   (setq proplist (getprops ss))
    3 M$ A+ C2 a2 h/ S1 m! Z
  5324.   (setq ecolor (car proplist))
    # L) t/ o* h' k( w# z; p1 K
  5325.   (setq eltype (cadr proplist))5 k, c! v! q5 y% T+ b3 k7 U& A! h
  5326.   (setq elayer (caddr proplist))
    , l$ |! C0 V. U7 H; M
  5327.   (setq ethickness (cadddr proplist))
    8 C' s9 o* `9 j! G
  5328.   ;; Find index of linetype, and layer lists4 j% x: o9 y5 a+ G8 B5 |  A
  5329.   (cond
    5 A6 `0 T: H- n( A: d
  5330.     ((= eltype "Varies") (setq lt-idx nil))5 l0 Q+ q! M/ h/ G7 C  B
  5331. ;   ((= eltype "BYLAYER") (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    / C) v4 k' z' y: ?) T) R3 i1 @2 _
  5332. ;   ((= eltype "BYBLOCK") (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    , l- |- J( B* R5 L; H
  5333.     (T (setq lt-idx (getindex eltype ltnmlst)))
    $ c% a1 S/ j1 f5 M  X5 v! a
  5334.   )  u5 Z! u. b7 S! c$ O& i8 h+ C
  5335.   (if (= elayer "Varies"); X1 \4 O, V, k2 V; C" i. [
  5336.       (setq lay-idx nil)
    6 k5 i: W% C* l8 m! t% v
  5337.       (setq lay-idx (getindex elayer laynmlst))
    - E2 n3 e" e; j, q7 N' P- \
  5338.   )% M+ j$ ~" I$ }. J0 A
  5339.   (if (= ethickness "Varies")# d9 b  a7 x6 K1 C5 d( M
  5340.       (setq ethickness nil)2 A" n- Y! Q  e8 P7 B
  5341.   )
    5 L9 h8 K+ K  p5 n  U; ^- F+ W4 i
  5342. : S3 w2 {* }+ `/ f- K
  5343. )   ; end (ddchprop_init)
      G1 a; e+ r8 L7 K8 B

  5344. 5 [, f+ P) c! f
  5345. ;;; (ddchprop_select)
    4 z6 V; u3 {. h* j! h2 Z* B
  5346. ;;;
    - j) W* F: u/ M. C4 v/ d
  5347. ;;; Aquires selection set for DDCHPROP, in one of three ways:* H0 r0 W% |! E% o7 D0 w9 e6 s8 c
  5348. ;;;
    ; Y) [) v' W! F8 V. a
  5349. ;;;   1 - Autoselected.
    # q( }  |5 c: v( t8 g
  5350. ;;;   2 - Prompted for.
    . c& [6 h; S& J
  5351. ;;;   3 - Passed as an argument in a call to (ddchprop <ss> )
    ; n2 N+ S0 b& d- ~
  5352. ;;;8 G  w9 z* f7 r. [
  5353. ;;; The (ddchprop_select) function also sets the value of the
    ( l$ \- [1 l; R. E
  5354. ;;; global symbol AI_SELTYPE to one of the above three values to
    / C. V, G' z; U, [
  5355. ;;; indicate the method thru which the entity was aquired.( h9 z: |6 i' J1 }2 g

  5356. $ ^( I7 }+ Z2 k
  5357. ' n6 Y  i" u% I
  5358. (defun ddchprop_select (), @5 ?( T2 f. W" m  d
  5359.    (cond; b6 Z8 p% X5 l& R6 Z4 M
  5360.       (  (and ss (eq (type ss) 'pickset))        ; selection set passed to" I- \4 y3 c( L- P
  5361.          (cond                                   ; (ddchprop) as argument+ _( c- D; I; c. @6 v) _
  5362.             (  (not (zerop (sslength ss)))       ;   If not empty, then$ o+ h8 L! k( h# Z5 C
  5363.                (setq ai_seltype 3)               ;   then return pickset.9 J" o* l/ Y! z8 c( j/ H
  5364.                (ai_return ss)))); y& J; Y" S4 `5 j5 k- h

  5365. 9 `! m5 E2 u6 v
  5366.       (  (ai_aselect))                          ; Use current selection/ u: d' r" T, \' b; x: c1 F
  5367.                                                 ; set or prompt for objects
    & i; {! `% B, f: K& j
  5368. + }% v* m8 d' v/ [; P: j
  5369.       (t (princ "\nNothing selected.")' b2 N, ^/ j2 E
  5370.          (ai_return nil))
    + F- I0 Q/ Q& f3 w6 j
  5371.    )- n4 P. o9 l8 V# S5 c( B- p
  5372. )
    / v/ O$ [$ a7 w/ w" U/ U

  5373. , Q4 A; s' _2 C6 `' F
  5374. ;;; Define command function.5 ?- s% p, r% G$ [5 k. S
  5375. - l! l% k* }2 L* X2 E
  5376. (defun C:CH ()% p1 h4 A9 E0 e5 h  Y) g( s
  5377.    (ddchprop nil)/ T) }4 y3 r- b6 ~
  5378.    (princ)
    4 W! ~) q9 q0 j
  5379. )
    / L5 U- ^: s  K
  5380. " b" L) l& z4 U* d

  5381. $ p2 N' x& q6 ?& I9 _
  5382. ;;; Main program function - callable as a subroutine.
    4 O0 i  @& B4 m& Q
  5383. ;;;' o4 p- {6 N8 @* P3 g
  5384. ;;; (ddchprop <pickset> )  Q  C! A' ?$ q0 g8 j' ^1 ~
  5385. ;;;6 I# [; X5 U& T" q" f, P
  5386. ;;; <pickset> is the selection set of objects to be changed." t  b0 \0 o3 F3 x" V* P$ ~' T
  5387. ;;;5 h+ |1 Y, a$ ^
  5388. ;;; If <pickset> is nil, then the current selection set is
    ) r6 Z  i+ B2 j" p8 d1 K$ Z/ n
  5389. ;;; aquired, if one exists.  Otherwise, the user is prompted" A3 z2 B) \- q% @0 C: ^1 _  h1 S
  5390. ;;; to select the objects to be changed.& J& r' x( m+ m+ I( e9 t" y
  5391. ;;;7 T5 Z: L( @% X. N, G- N
  5392. ;;; Before (ddchprop) can be called as a subroutine, it must( E* r' }5 g# d
  5393. ;;; be loaded first.  It is up to the calling application to
    * [( C; m# d" g/ v" i
  5394. ;;; first determine this, and load it if necessary.
    : F' k. g: f; _3 N

  5395. . ?+ V1 x2 l- W( L7 O! x( M+ b
  5396. (defun ddchprop (ss  /& p0 U/ V) k2 e  v; }# b" Y

  5397. $ D; Z  c0 [) [0 i& g6 l
  5398.                   add-mdash      ecolor          ltedit_act      s
    4 ]6 m* l& x+ r' d
  5399.                   assoclist      elayer          ltidx           selset
    + {' ~& Y0 d; s& f. K
  5400.                   bit-70         elist           ltlist          set_col_tile2 z7 \# {4 @5 w1 t0 Y* L
  5401.                   boxlength      eltype          ltlist1/ o6 \" K1 U0 b  F5 y  M) A7 Z
  5402.                   bylayer-lt     en              ltlist_act      sortlist0 d0 C: }6 ^$ f+ S8 E) d+ \
  5403.                   bylayer_col    ethickness      ltname
    2 G4 }# S$ H2 F9 a  v
  5404.                   bylayer_lt     fchk            ltnmlst         sslen
    - ~6 u% _8 ^' s0 G" K1 Y9 z
  5405.                   call_chp       frozth          ltvalue         templist& H7 f7 [+ x5 R9 Y: ]3 G
  5406.                   chk-col        getcolor        ltype           temp_color. F4 G+ e7 P( E5 Z; x
  5407.                   chk-lay        getindex        m               test-ok9 r; R; |( e1 L0 K
  5408.                   chk-lt         getlayer        makelaylists    testidx( _1 K- D5 V) w8 P% e
  5409.                   chk-th         getltype        makeltlists     testlay+ V' g" ~, [0 A" Z
  5410.                   cmd            getprops        match-col       th-value8 H7 |9 W7 \$ S* {
  5411.                   cmdecho        getthickness    match-in        thickness4 x8 O2 D" [. k- Q: i5 e
  5412.                   cn             globals         match-lay       tile7 k: ^$ g- C5 N
  5413.                   cnum           go              match-lt        tilemode
    6 W3 {0 S7 \, J9 ~4 @
  5414.                   col-idx        index           match-th        tile_rect
    0 V. a( F/ I" H8 Q  |) p
  5415.                   colname        item            match_col       vi: j1 @5 `+ l$ @2 U
  5416.                   colnum         item1           mdashlist       vpf+ g+ n! T4 @+ B8 J9 w7 r0 W' y
  5417.                   color          item2           n               vpldata
    $ `2 [& z1 Z; [3 f. r# N" L2 Q
  5418.                   colorname      itemlist        name            vpn
    ) K! N4 L3 Z" n- Z1 f
  5419.                   col_def        lay-idx         ncolor          x
    ! O& q( N' G% u' l
  5420.                   col_tile       layedit_act     nlayer          x19 E% k6 l1 P5 s# ]
  5421.                   ctr            layer           nltype          x2: j& a5 A7 }+ S( n
  5422.                   cvpname        layinfo         nthickness      xdlist' _) x% I0 [9 n/ f3 ]. A
  5423.                   dash           laylist         off             y; a4 S3 B: z% _; ~9 i
  5424.                   dashdata       laylist_act     old-idx         y1
    , z6 U5 w4 b3 F8 e( }2 _: V
  5425.                   dashlist       layname         olderr          y25 H4 G, L, A; d2 R6 P9 v
  5426.                   dashsize       laynmlst        on              undo_init$ Y% a* @' B2 J2 _, \7 p
  5427.                   dcl_id         layvalue        onoff$ k8 ?) P% F+ e$ ]# x- N
  5428.                                  linetype        patlist8 B: L8 U) n" e0 I( j; U' C+ s% |
  5429.                   ddchprop-err   list1           pattern& A' Z# B! E9 \) a* X' z' p
  5430.                   longlist       proplist
    * H, z* p3 A) [! n4 S, e' O# T9 g
  5431.                   lt-idx         reset-lay
    : v% Z8 L# L4 W3 B, ]' L0 y. E
  5432.                   drawpattern    ltabstr         reset-lt, [: h5 D5 v4 y- l
  5433.                 )
    ' d) l- h6 y" w% q- o

  5434. ( Y% C$ L5 n7 Q' M) _5 d& S* c7 W
  5435.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho9 `0 T9 ?6 m( ~& A$ v2 N
  5436.         old_error  *error*            ; save current error function0 H1 m  v0 C' S
  5437.         *error* ai_error              ; new error function, d) N; T6 B3 d/ c" ^- K% Y6 p
  5438.   )4 u. ^2 G3 S: E- }" Z" m: v/ L* c

  5439. 5 d6 |: B: p" \# e# D
  5440.   (setvar "cmdecho" 0)2 H) L7 }% A$ G% C6 _: P. i$ e: D- [

  5441. + \1 w1 N* B% D
  5442.   (cond- y7 z. {$ _0 n5 g) e- T& F4 y, C
  5443.      (  (not (ai_notrans)))                      ; Not transparent?
    " @+ @: l5 I3 h7 t& q: p
  5444.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
      S1 i( p0 W  i2 J7 g+ ~
  5445.      (  (not (setq dcl_id (ai_dcl "ddchprop")))) ; is .DCL file loaded?5 U1 m  P8 B7 S6 O/ C& n
  5446.      (  (not (setq ss (ddchprop_select))))       ; objects to modify?
    ! |+ r) y( C5 W( O% d

  5447. 7 N$ A' k, X5 |5 ~% u3 U2 O
  5448.      (t (ai_undo_push)
    ( P. r8 o& z" m7 t( Y% {
  5449.         (ddchprop_init)                          ; Everything's cool,  U2 S0 N6 y  G2 o% G' S1 n. n
  5450.         (call_chp)                               ; so proceed!
    0 }% B8 s7 Z7 i
  5451.         (ai_undo_pop)
    ) z4 d6 Z" F# N) B/ ^
  5452.      )
    * ]- m7 N5 b- r2 m
  5453.   )
    4 M* h" ~; O+ z; e7 C- ~
  5454.   
    $ S# t1 I+ e! G; e. r
  5455.   (setq *error* old_error)
    8 s' Y% G( X$ A0 E  o
  5456.   (setvar "cmdecho" old_cmd)
    4 i+ I$ M2 W2 ~" {8 ~' j, J
  5457.   (princ)4 ?1 b0 K  ~. s/ x$ U4 I3 c
  5458. )
    " Q$ u* g0 Y, ^- A3 h7 a/ M/ h

  5459. ) p$ t6 T5 M6 ?: T
  5460. ;;;----------------------------------------------------------------------------3 P3 d4 p$ k: A+ z

  5461. 0 n3 g8 z# e* V
  5462. (princ "   DDCHPROP loaded.")
    ' W5 ~7 e; J5 R. i2 {* a
  5463. (princ)+ |! q& `$ r/ d7 z1 g2 h/ _

  5464.   e* r8 |6 M! E& ]- q2 }; ]4 T
  5465. ;;;----------------------------------------------------------------------------
    6 _; c0 B7 R3 O/ L' n
  5466. 5 a2 d5 F1 V4 g: _- F2 p7 V
  5467. ;--------------------------------ddmodify.lsp----------------------------------, q" W) a) N* j1 }+ z+ T8 _0 r
  5468. ; Next available MSG number is    111
    ' C! N# K2 \! T5 B; n( {
  5469. ; MODULE_ID DDMODIFY_LSP_6 a6 v2 D3 K9 Q" }. p/ S
  5470. ;;;----------------------------------------------------------------------------
    # Z  L  g' e$ b" ^$ [7 n# J& K% G" I2 B
  5471. ;;;    DDMODIFY.LSP; b# o3 A, n4 }( e: |0 ]
  5472. ;;;
    : l7 j7 K; L$ t. E. y
  5473. ;;;    Copyright 1997 by Autodesk, Inc.) c% J! Y, Y# U) U6 v4 K% d$ d
  5474. ;;;
    / ~8 o: a' p6 t! N+ N9 O
  5475. ;;;    Permission to use, copy, modify, and distribute this software  k( ?8 k6 ^9 U) ~: d8 v
  5476. ;;;    for any purpose and without fee is hereby granted, provided
    3 s) C, v) A# Y8 i
  5477. ;;;    that the above copyright notice appears in all copies and1 y1 `' i) ^% `! g
  5478. ;;;    that both that copyright notice and the limited warranty and
    . T9 n% a/ X) P' [& _
  5479. ;;;    restricted rights notice below appear in all supporting
    * q4 h- z5 S% o: O
  5480. ;;;    documentation.9 |1 X! q8 g' s' c
  5481. ;;;
    ' I1 {9 W7 G! W2 P
  5482. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    ' o5 [. [  d1 c, i% m' C
  5483. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF7 K: v/ F) K" N& ^
  5484. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.$ t; a! l% A' F1 T. r0 e* [
  5485. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    1 A9 p; b0 S0 r4 t
  5486. ;;;    UNINTERRUPTED OR ERROR FREE.
    ' X* l  z& \+ `6 V! M2 D
  5487. ;;;9 F  L, e) s6 e/ H& A; @2 Y. T, b$ E7 @
  5488. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    2 S1 q" |! c: @* I) R) K
  5489. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    5 f0 ?5 V# ^6 J1 x' S. T0 M
  5490. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    - A% F% W$ C0 R: I3 v' Y$ Q# q
  5491. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    ) |1 y) q& R" e2 I
  5492. ;;;$ u. n( K. T3 r$ G5 M1 T6 K
  5493. ;;;.
    5 U7 f5 X( `( O* T7 Q
  5494. ;;;
    . t7 E! D, y% J; g: _
  5495. ;;;----------------------------------------------------------------------------. P) J) u8 M; X- _7 p+ t
  5496. ;;;   DESCRIPTION$ D0 F/ ^- S6 r
  5497. ;;;+ A; y) y; o& f6 s5 X
  5498. ;;;   This function allows the user to get a listing comparable to the LIST
    ! F. G) T4 N% D; A, ~2 b
  5499. ;;;   command for most objects.  In addition, most object fields in the1 m3 l. h5 p% T! s0 k7 Y# V% q5 j5 O
  5500. ;;;   dialogue box are editable.  Points can be specified dynamically by
    - R& O% f. p" u) r
  5501. ;;;   temporarily dismissing the dialogue box.  Each object has a unique
    3 A! D, c0 S* d1 Z
  5502. ;;;   dialogue.
    ( o) Q: W$ [3 L1 j3 b1 R3 j; ]/ X1 B
  5503. ;;;4 O9 ?0 d$ A% g: n
  5504. ;;;   Naming conventions
    4 j6 M# T5 i) N& t+ g2 o6 \( Z7 `
  5505. ;;;   Long function and widget names may use an underscore "_"% L4 v/ L7 C( [% Z; y- F% B( h
  5506. ;;;   in their names to make them easier to read, long variable
    3 W2 I* D, L4 i: b2 w. H
  5507. ;;;   names use a dash "-".
    7 W! J+ y8 P; s% a: G
  5508. ;;;----------------------------------------------------------------------------
    6 f. l7 n- C' x* B
  5509. ;;;----------------------------------------------------------------------------2 }7 v- k# z( L. F2 A7 c; ]& ?# L
  5510. ;;;   Prefixes in command and keyword strings:/ F' c1 `9 S0 ^; p
  5511. ;;;      "."  specifies the built-in AutoCAD command in case it has been5 }& V2 H: M$ E4 G& A' f
  5512. ;;;           redefined.
    & @. @5 v, u" P$ i0 P5 C5 f1 v
  5513. ;;;      "_"  denotes an AutoCAD command or keyword in the native language- R% V$ l- h+ N( w& e  y
  5514. ;;;           version, English.
    ; z2 T( O0 a% V* A: H3 D
  5515. ;;;----------------------------------------------------------------------------
    6 X# _2 J9 z5 I* j0 I
  5516. ;;;% F, d, i' O0 _! S: u
  5517. ;;; Avoid (gc)s on load to improve load time.
    + ?& p) {: \) S8 Q8 i. Z+ B
  5518. ;;;7 T1 B! {# e  H
  5519. (defun do_alloc (/ old_allod new_alloc)
    4 t% x+ a+ @& k" a/ s9 ^6 ?3 V
  5520.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))
    4 E# c  n% r- p& x6 o
  5521.   (expand (1+ (/ 17000 new_alloc)))
    5 g$ I( B4 i. w+ x/ O1 k" f: n
  5522.   (alloc old_alloc)6 V0 |: l8 a& X9 M/ x% e9 R! O
  5523. )
    " U7 G* o9 E+ l2 W( [% T& V# c/ L5 h
  5524. (do_alloc)7 w/ m/ J3 h+ L  Y$ |0 s+ r
  5525. (setq do_alloc nil)
    2 B$ Q6 w% l9 B9 `1 E

  5526. $ P/ r0 ?- w" @3 q0 ]2 l4 r" x3 @( X
  5527. ;;;
    . ~! b2 d# T( N7 F' N4 C5 c
  5528. ;;;
    $ L8 ^: U0 }# ]( R& a! e
  5529. ;;; ===========================================================================: B1 z) \& O7 [/ B# V# h
  5530. ;;; ===================== load-time error checking ============================
    0 W0 r* m; w$ a) N

  5531. ! o% a: x* i$ v% a8 q5 V* |
  5532.   (defun ai_abort (app msg)8 D+ k8 \& S4 k
  5533.      (defun *error* (s)
    . g. W+ c8 P+ F' c
  5534.         (if old_error (setq *error* old_error))
    6 Y. L0 j4 p) d/ M4 N$ `$ W9 v
  5535.         (princ)+ |6 ]; H: M* {# E# J) p
  5536.      ): P, O" C3 r$ i- y
  5537.      (if msg
    ( R4 Z; q8 D& f- F% d, s0 C
  5538.        (alert (strcat " Application error: "
    " R9 e# C: F' F$ x
  5539.                       app
    % `5 W# {8 z& ?0 S9 u
  5540.                       " \n\n  "+ ]7 ~- X# P& d: s9 P% c6 y# W
  5541.                       msg; W3 T3 u' |+ `- t8 K9 \9 X- k, i6 D
  5542.                       "  \n"
    1 q  f, |3 g2 g3 @+ f0 Z
  5543.               )
    # d4 A, W, T- k7 @6 W% d
  5544.        )% x$ ^1 M! ~" c: F! h; L' _
  5545.      )
    0 e; f* K0 i* r" R* J; }3 b; l# h
  5546.      (exit)
    4 z% l- w5 @' k% ?
  5547.   )- h; o* Y& r8 G# S" A( h, [

  5548. / m' {% {) I) g# k' M
  5549. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,, l8 D8 i( a( D4 X$ U' q9 I
  5550. ;;; and then try to load it.  If it can't be found or can't be7 N5 w& O; S2 @- M7 d5 a, T
  5551. ;;; loaded, then abort the loading of this file immediately.
    2 w) S/ Y; s' e+ @

  5552. * `$ y$ Q9 H; x. N& ?  ?( w
  5553.   (cond( R8 j% n( o) B0 z* e
  5554.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    - q" _0 @, C* d9 Z3 j, d

  5555. 4 K& ?9 l5 y% M' N* c
  5556.      (  (not (findfile "ai_utils.lsp"))                     ; find it4 H% I: v6 n1 `1 N
  5557.         (ai_abort "DDMODIFY"9 C. J. \4 |. g0 f3 e
  5558.                   (strcat "Can't locate file AI_UTILS.LSP.". }1 M2 C& x9 r, [2 x8 `7 V
  5559.                           "\n Check support directory.")))
    & @. o- ?% p) q2 D: h: }; |

  5560. $ S8 G# B9 P( H6 k3 ~+ ]' y
  5561.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it* ]0 ?) J6 g. W$ d
  5562.         (ai_abort "DDMODIFY" "Can't load file AI_UTILS.LSP"))
    9 K; g# k! g7 _! D
  5563.   )
    ; E; \0 d" G( I8 X

  5564. ) C0 V; `, N" N+ s8 U5 J( K
  5565. ;;; If we get this far, then AI_UTILS.LSP is loaded and it can
    / P. o+ H8 A! c' W6 Z: U# S; i" w' k
  5566. ;;; be assumed that all functions defined therein are available.
    - l( {% j) Z. m. k1 d! o/ R

  5567. 3 F" T* U6 v" z  g3 s  I- _' W- V
  5568. ;;; Next, check to see if ACADAPP.EXP has been xloaded, and abort: g4 a7 N( _! J6 M
  5569. ;;; if the file can't be found or xloaded.  Note that AI_ACADAPP* j! i! P/ J9 y, |1 y
  5570. ;;; does not abort the running application itself (so that it can7 i" ^/ m& h" g% @' z, ~
  5571. ;;; also be called from within the command without also stopping! S) t; Q4 I& \- @/ ?
  5572. ;;; an AutoCAD command currently in progress).& E9 w! b8 W" \* |- |% {7 T

  5573. 4 r! i) p: }. p+ s  l, x4 `
  5574.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
      @/ z" \( k$ e) ~0 n$ ]. Y" W
  5575.       (ai_abort "DDMODIFY" nil)        ; a Nil <msg> supresses: s6 `7 R* N; A: z3 B- V6 H/ Y" J
  5576.   )                                    ; ai_abort's alert box dialog.
    , V0 n# _; b9 M9 E
  5577. $ S8 b2 ^7 }9 N$ f1 }* R" O
  5578. ;;; ==================== end load-time operations ===========================
    # V' L5 c" V, l
  5579. ) Y6 J' ~0 `3 ^! r, J9 }9 R
  5580. ;;; global variables
    & ~' Y# u  v2 A+ Z
  5581. 2 \" Z0 A9 K+ D& t8 L
  5582. (setq hatch-elist nil)- k2 t' Z+ o) x0 i. P& M$ w( L: d

  5583. 0 e0 I, C) K( j6 m5 p9 [
  5584. ;;; If we get this far, both ai_utils.lsp and acadapp.exp are' r$ W* _  m( V3 A
  5585. ;;; assumed to be available.
    . O: M5 N4 P1 H1 {

  5586. . Z; m2 o' J& a6 d: F
  5587. ;;; Define and encapsulate all subroutines that are declared
    5 b" @0 K" y, ?+ N
  5588. ;;; locals of the (ddmodify) function.1 R1 W1 W7 {6 o5 a
  5589. ' Q) m! l7 e, O9 y+ c) C
  5590. (defun ddmodify_init ()3 ]* d' G2 j' y/ o& y8 Z
  5591.   ;;, \& p0 K6 B+ S) s6 k
  5592.   ;; These three functions modify the enitity list for common properties.  Since
    & l3 J1 E$ v( j
  5593.   ;; color, ltype, and thickness are absent from the object list when they are
    3 s; C+ x. p5 }$ K% F1 I3 ~
  5594.   ;; set to their defaults (i.e. color = bylayer), a simple substitution using
    3 z. U! ~- J- J4 z# M+ m$ L# E- O
  5595.   ;; SUBST is not possible.
    ! B+ L/ b" E% d' D+ E: t  g
  5596.   ;;
    ! i3 z  X! |( L# P7 z) F8 v/ V
  5597.   (defun modify_properties (), A0 f3 q5 Q* C5 U; z
  5598.     (emod ecolor 62)/ b( I$ T+ O  ?
  5599.     (emod eltype 6)
    , T( ], F. d" w1 I
  5600.     (emod ethickness 39)
    4 ^4 [" m! Y% |( p8 X4 ]
  5601.     (emod eltscale 48)
    " s, n% m7 t9 Q8 y
  5602.     (tempmod elayer 8 nil)* ^4 L) E0 u$ o
  5603.   )
    2 ^/ g5 U& x5 k* o
  5604.   ;;5 B( i7 s6 ^) d' Y: y! \$ s: U# e
  5605.   ;; This function is used for modifying common properties of the ACIS% Q$ l, x' J' B8 [! @  J1 E6 k
  5606.   ;; based geometry objects. Thickness is not valid for these objects
    & ^1 J- V, G0 R
  5607.   ;; so it is left out.3 N! ]5 x/ }6 c9 c, ?( H5 _
  5608.   ;;
    $ _  g3 M$ c2 G  L2 t' m. O
  5609.   (defun modify_prop_geom ()
    1 s/ h; ^: B/ J9 q5 i, m
  5610.     (emod ecolor 62)
    9 P: h7 c, D- Q$ v5 W1 K' n2 f
  5611.     (emod eltype 6)! d, O7 ]. p# g8 u- ^  l
  5612.     (emod eltscale 48)
    & i; K0 K. }! Z0 f# V- ?! O: K
  5613.     (tempmod elayer 8 nil)
    % w# I4 y( S* G  o( q, y$ S6 H
  5614.   )) k1 I  z2 {5 M) B4 `
  5615. 4 `/ w$ ~" l  {! E" z
  5616.   (defun emod (value bit)+ |2 P$ Q" d8 E
  5617.     (if (= bit 62)
    ) m& ^6 Z2 m, `3 ?1 l
  5618.       (progn6 U: Z1 M/ _7 g2 F% n
  5619.         (if (or (= value "BYLAYER")
    * c, k& W2 ]1 n* R# n! P
  5620.                 (= value "BYLAYER")) (setq value 256))
    ! [, x. R; \" A6 @, y
  5621.         (if (or (= value "BYBLOCK")* J: X. {8 Y! D- k
  5622.                 (= value "BYBLOCK")) (setq value 0))$ Q! s. i; q+ I0 z% w8 h6 k( t
  5623.       )
    % p' o: l: J2 x# W7 b
  5624.     )
    ( O8 e- f! n7 {1 d) Q
  5625.     (if (setq oldlist (cdr (assoc bit elist)))  u3 m. B9 l6 b: G8 F  h
  5626.       (tempmod value bit nil)
    5 ^3 }: m4 Z! |
  5627.       (setq elist (append elist (list (cons bit value))))
    % @- T. v6 r; @' F
  5628.     )
    8 t1 t  `% Z" I8 G9 Q
  5629.   )
    . n* D0 I/ R' D9 P! V" l
  5630.   ;;/ X7 z+ C; u+ G4 u
  5631.   ;; Resets object list to original values.  Called when the dialogue or* ~3 V. u3 S' c4 d9 i+ u; X" G
  5632.   ;; function is cancelled.( q/ M$ S3 v8 p3 F/ B7 k
  5633.   ;;
    + p2 ]2 Z2 I# I% ~3 ^; I( k
  5634.   (defun reset ()& l3 N( t0 _+ W$ `1 Y# h% H$ A! X
  5635.     (setq elist  old-elist
    , ~) ^4 R$ f1 ^/ f
  5636.           ecolor (cdr (assoc 62 old-elist))
    $ W! M  w- }' ?
  5637.           ethickness (cdr (assoc 39 old-elist))7 G6 n7 Q) _; f" Y
  5638.           eltype (cdr (assoc 6 old-elist))# F, B7 q. t% T, Q( o( J5 n
  5639.           elayer (cdr (assoc 8 old-elist))
    ( h( D# }) e. W$ [( h8 Z
  5640.           eltscale (cdr (assoc 48 old-elist))
    * r% J9 U3 ^5 n
  5641.     )* X8 |* ]( D4 l; X* Y* W+ ~: q3 C
  5642.     (if (not ecolor) (setq ecolor "BYLAYER"))
    ! }. t3 |4 o4 h0 W( Y* n
  5643.     (if (not eltype) (setq eltype "BYLAYER"))
    ; @& y8 `" d  y$ h
  5644.     (if (not ethickness) (setq ethickness 0))
    . E, P, I+ ^6 _
  5645.     (if (not eltscale) (setq eltscale 1))
    + @5 H) {" x5 i$ F+ L+ l+ Y# ^9 Y
  5646.     (modify_properties)- f; ^. U. v4 J0 k
  5647.     (setq reset_flag t)
    ( r, \) R5 b, y) O) o/ E/ e& g
  5648.     (entmod elist)) Z+ y+ }# n  w: ]  C- ^) ]
  5649.   )
    8 B$ G& t9 K6 G5 O6 x
  5650.   ;;
    ; U' U; q2 E8 l! Z( @) T
  5651.   ;; Modify object when dialogue is temporarily dismissed to reflect latest
    : f1 g* F. p2 K4 B/ B
  5652.   ;; settings of dialogue.  It converts the point from current UCS coordinates to
    ) D5 g3 e) d8 J% d8 J5 h3 {
  5653.   ;; the proper object coordinates (world or object).
    8 T# x" x" F# H3 t1 s& C+ `
  5654.   ;;
    / {' n0 A) g9 G* @
  5655.   ;; Arguments: value - in current UCS coordinates
    6 {6 ?9 H- X! w( k/ `
  5656.   ;;            bit   - object code (i.e. 10 for start point)5 _8 n. S  W0 L
  5657.   ;;            ptype - point type  0=world 1=planar* S$ F/ \9 U7 i, L% H$ s& \# w
  5658.   ;;( K$ E$ {/ G# z. }: j
  5659.   (defun tempmod (value bit ptype / newpoint)8 C# Q$ T$ T" T9 p+ }5 v! f
  5660.     (cond
      s' e5 a: v# ^0 }
  5661.       ((= ptype 1) (setq value (trans value 1 ename)))
    4 G" C; @) R2 J# K
  5662.       ((= ptype 0) (setq value (trans value 1 0)))
    6 W" o$ J; v4 j9 i7 p9 T
  5663.     )  B$ v2 s) ^0 P. d0 q* @1 G" c( h
  5664.     (setq elist (subst (cons bit value)0 r- f5 g  k: [- e
  5665.                        (assoc bit elist)0 ^( G) d6 v+ a  `8 z, [5 ?% e
  5666.                        elist$ S* o: A  R5 W- A
  5667.                 )
    : h" `* d! o# A; g
  5668.     )4 K4 U( j# ^/ Q
  5669.   )) e; y: j8 ^9 j( y9 `
  5670.   ;;
    " T% B  L# v; t% d+ N1 b; ]
  5671.   ;; The following functions are called after a dialogue has been temporarily# n* E) b; W3 g: B
  5672.   ;; dismissed and the user is selecting a point.  If a point is selected the- I1 t; M9 M# _4 b
  5673.   ;; object list is modified and new X,Y,Z values set.  If no point is selected, |" {) }3 N+ F+ Q* b
  5674.   ;; (null response), then the point is reset back to its previous values.8 w* O$ H8 L  _# Y' ]  E' R
  5675.   ;;' ~4 {! Q% t) w! e
  5676.   (defun ver_pt1 (ptype)4 r- v3 i! \/ ]9 U9 |; G
  5677.     (if pt1  `( _+ z( j, X6 G: |
  5678.       (progn2 j, L- C) i: q; a# m4 H2 w5 c( ~
  5679.         (tempmod pt1 10 ptype)
    3 g4 L7 {3 s3 W3 u& V
  5680.         (entmod elist)
    . E( {6 Z/ l& v8 x& u
  5681.       )- g4 H* q# b5 Z' H# J
  5682.       (setq pt1 (list x1 y1 z1))9 H. b' g4 p7 x/ v! q+ s5 e* R
  5683.     )
    ) \' @; ^! `3 ]. `) y/ A& A7 |2 p
  5684.   )
    - l0 i6 i  I4 C

  5685. # _0 V1 x# k& w% N$ a( v/ K
  5686.   ; (move_pt1 <ptype> )
    4 w. r6 f7 D2 k% Z
  5687.   ;
    . t. Z. p, S/ L% G- {
  5688.   ; Called in liew of (ver_pt1) to translate block insertions which+ h! x- [7 O" G/ V* |: W9 k4 W
  5689.   ; might have variable attributes attached to them.  If the distance, j. e4 w+ @: F- L
  5690.   ; the block is to be moved is < 1e-6, the move is deferred.) {. p2 ?! Z% H4 V3 B+ X4 b
  5691. 3 s* T* l/ d6 U8 z
  5692.   (defun move_pt1 (ptype / basept hi)) X) Y# ~- z3 R7 l! z6 f
  5693.     (setq basept (trans (cdr (assoc 10 (entget ename))) ename 1))0 z8 {/ n8 p0 u8 d! Q* a& u
  5694.     (cond
    4 x6 G1 m; d9 b, c9 K8 ^0 Z# ]' |
  5695.        (  (not pt1)8 K1 c  K( A; `1 V
  5696.           (setq pt1 (list x1 y1 z1)))
    1 q6 P- y  i& O' x( U6 ?

  5697. - p* `' N+ N! m6 z! P- I; |. `
  5698.        (  (> 1e-6 (distance pt1 basept)))
    0 x" }  A, n! R( Y( F% g

  5699. / O+ b" l+ _: m) g1 i: \: Y. X9 n
  5700.        (t (tempmod pt1 10 ptype). E& D  n  o. V( G
  5701.           (setq hi (getvar "highlight"))
    ( `/ P" T# h& E. c* Y
  5702.           (setvar "highlight" 0)1 }; Y- J7 _- ]. a2 j
  5703.           (command "._move" ename "" basept pt1)/ r9 c3 I# S! s
  5704.           (setvar "highlight" hi))
    : i- P: e; B% `2 q$ t
  5705.     )
    % W8 D5 p0 \' E# v
  5706.   )
    ; F7 t! I4 @+ U2 l/ W( F6 R
  5707. / e* {. E& k# d# s+ p+ ]
  5708.   (defun ver_pt2 (ptype)/ h" u' v' o6 Y/ V) ^- ?* C8 j
  5709.     (if pt2
    ( [$ u) p, k) _+ i$ \/ }1 x
  5710.       (progn
    5 k* Q& \! A! \- z
  5711.         (tempmod pt2 11 ptype)
    ' v* L/ [+ `" [" `+ G. V$ ^0 q6 u
  5712.         (entmod elist)
    2 i4 e3 J! @" M+ ^6 t. h
  5713.       )
    2 a. h2 T, S6 F5 m
  5714.       (setq pt2 (list x2 y2 z2))
    # o  y3 `8 v/ t% J% X
  5715.     )! O8 u; a" {  m- j4 J
  5716.   )+ W# t2 N, W: x; ]; q! a# n- ]3 ^5 D7 {

  5717. 2 V. B& I. N! E: e
  5718.   (defun ver_pt3 (ptype)
    3 `! R' ^1 S1 F& U2 l
  5719.     (if pt3, p  N9 A5 u! ~
  5720.       (progn
    7 C, ]2 Z) q' H0 C; F+ b
  5721.         (tempmod pt3 12 ptype)% G; _$ \& X  R" g- [8 Y' a, _/ b6 G, x
  5722.         (entmod elist)  |' S. t4 r5 h& C! ^8 I
  5723.       )2 U) J1 Q  ^3 n2 G
  5724.       (setq pt3 (list x3 y3 z3))" a4 w, [% l8 i* w2 [# W
  5725.     )
    % F. l( N9 S& y6 y8 Z; h( W
  5726.   )7 A5 ~/ g, y( U8 |
  5727. 5 I: s% c1 y7 ]6 R& p& x
  5728.   (defun ver_pt4 (ptype)
    : t7 [7 g  T3 [1 t; @' d
  5729.     (if pt4
    ) g5 C& A) A- J  u) X) u, U
  5730.       (progn2 R; b: M/ B( K' I; l+ G9 v
  5731.         (tempmod pt4 13 ptype)9 b: r/ ~2 Q9 \' o3 N" [
  5732.         (entmod elist)) M( i9 M6 ?9 d0 Z
  5733.       )
    - x6 H' A5 {9 r+ p( K
  5734.       (setq pt4 (list x4 y4 z4)): Q  J9 J* Y6 ]: V! E: s: ]
  5735.     )
    . P5 i; }( p  g- {0 \
  5736.   )& H% _4 S8 n3 o- R1 F' W9 h& z" \) F
  5737.   ;; Xline/Ray/ d$ c% R( P9 _0 E6 v
  5738.   (defun ver_xline_pt1()
    5 d7 F% V- D% i1 o( ?$ L+ [4 g, E6 ?
  5739.     (if xline_pt1* ]/ y' x9 D3 @% g1 A  Y2 `
  5740.       (progn8 p* f, Q& j* V' l) X( C
  5741.         ;; convert to WCS.3 [1 j$ [3 w2 E# T8 z/ F% d$ ^
  5742.         (setq value (trans xline_pt1 1 0))* f; K8 |$ l5 ~* [3 X
  5743.         (setq elist (subst (cons 10 value)4 p# A, \+ S# w, _
  5744.                           (assoc 10 elist)
    5 N! L4 g$ p$ A0 }1 s/ T0 f1 ^5 I2 c
  5745.                            elist
    7 M: `/ U5 o; T( R2 Z& S
  5746.                     )8 u  i: D2 E7 u: |& x, p
  5747.         )
    - U2 p5 p: n9 v; j" k
  5748.       )( |. j' _4 f2 ^6 `2 ?# D8 A4 H
  5749.       (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))9 K' q$ ?5 J- t4 i8 T
  5750.     )0 N# w0 Q/ w& G- |1 n5 X" g
  5751.   )4 z9 q8 c; x/ a+ k; K! |( ~; r$ {/ ^
  5752. 5 |4 ]0 _* W  j2 C
  5753.   (defun ver_xline_pt2()
    1 r& ~( h  s& c+ U
  5754.     (if xline_pt2
    ; Z& O; ~3 C* }; U
  5755.       (progn
    % U) m$ M4 w& h. \
  5756.     ;;
    % b/ w4 C: [  E$ z- E* k  K+ F
  5757.     ;; Calculate new Direction Vector WCS
    # l' d: w" p! m% i- k
  5758.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))
    - b+ T! O& |  c- _, T
  5759.     (setq temp_dir (trans xline_pt2 1 0)); D! U5 `8 W! A8 R: w
  5760.     (setq temp_dir_x (car temp_dir))0 q  i/ D$ L8 u$ x& {
  5761.     (setq temp_dir_y (cadr temp_dir))6 m  o/ k0 ?/ ?- t5 O3 |
  5762.     (setq temp_dir_z (caddr temp_dir))
    " E$ x. Y# z1 s/ v$ B& L/ z) M
  5763. , m2 y4 q+ n4 ^0 T' L0 y" E5 n7 G
  5764.     (setq temp_xline_pt1 (trans xline_pt1 1 0))
    ) c, M" T6 e* d7 ^* D
  5765.     (setq temp_xline_x1 (car temp_xline_pt1)); Y+ x" l; R4 ]0 j+ C
  5766.     (setq temp_xline_y1 (cadr temp_xline_pt1))" P) b7 G# H5 w, S+ @+ R
  5767.     (setq temp_xline_z1 (caddr temp_xline_pt1))5 H2 b; A% g0 `( z
  5768. - k# X, b! V% ]' v1 e' ~, k. w
  5769.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    # T" w: E7 I$ E; N& t
  5770.                          (expt (- temp_dir_y temp_xline_y1) 2)- E. I( V0 W5 j8 m
  5771.                          (expt (- temp_dir_z temp_xline_z1) 2)
    ! ?, n/ z" ?+ D0 g
  5772.     )))
    & d  k; A; c2 D7 ]! b
  5773.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))
    . ?$ a* M; V  p
  5774.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))
      G0 H, v1 [8 S  W7 i8 z
  5775.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))2 |1 Y5 A* b& A; J7 E
  5776.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))7 G: ?& t1 J. L- |; f# j2 o
  5777.                        (assoc 11 elist)6 a6 x# ~4 R  z
  5778.                        elist) c) A( b/ Q* ~% L
  5779.                 )
    6 d/ s5 s$ I7 A7 e! X1 {
  5780.     )2 v# j8 q$ @' L+ G6 e5 e# ^+ [$ X
  5781.     (entmod elist)
    & [  y. P( Z7 \" C; [. {2 z
  5782.         (setq xline_x2 (car xline_pt2))% [. s8 v* b! H7 Z+ t
  5783.         (setq xline_y2 (cadr xline_pt2))
    - S5 p9 C/ a; {: u( ~; Y/ L
  5784.         (setq xline_z2 (caddr xline_pt2))
    + A' ?4 q) r) j6 J+ _
  5785. # r# k4 n# S9 U9 b! j  Z

  5786. % }: d9 N/ ^8 ~+ u1 ]5 c) q" [
  5787.       )
    ! H/ z" K4 O; g3 b( k4 ?/ f
  5788.       (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))
    ' t0 |; L! [) T) K& N
  5789.     )5 H$ P/ q/ N6 H$ n) v# j6 W. f
  5790.   )
    / P4 w* ^! S7 L9 D7 J  z

  5791. 4 |1 D5 C2 e0 F; C
  5792.   ;;. q+ o9 B; s1 P
  5793.   ;; Common properties for all objects# i- O8 I5 r& R6 A6 N& {
  5794.   ;;2 ^0 M7 N" Z% t* M
  5795.   (defun set_tile_props ()
    % z+ m8 P9 }5 f+ s- D8 R! H& C% A
  5796.     (set_tile "error" "")
    ) ]' Q- K6 _/ i0 f0 s1 ?
  5797.     (setcolor)9 i, n) M! z% C8 P8 ~8 P
  5798.     (cond
    % }8 l1 [* C4 b) r9 ]
  5799.       ((= eltype "BYLAYER")6 J* T4 X+ z( ^' {7 Q
  5800.          (set_tile "t_ltype" (bylayer_lt)))
    / O3 N: [8 y* q
  5801.       ((= eltype "BYBLOCK")
    5 g5 H( ?4 `: v# n4 x0 \% C* C
  5802.          (set_tile "t_ltype" "BYBLOCK"))
    ! ?+ t  S* x) W7 J; ^) G
  5803.       (T (set_tile "t_ltype" eltype))
    " g- u; s$ D/ S5 R8 ]' x3 l$ Y' `& o
  5804.     ). T( b. u5 t6 ~' a
  5805.     (set_tile "t_layer" elayer)
    : W( s5 q$ e4 N) v6 {' `
  5806.     (set_tile "eb_thickness" (ai_rtos ethickness))% w" M/ I+ [2 Q9 \( @" w0 h
  5807.     (set_tile "eb_ltscale" (ai_rtos eltscale)). G9 k* S' _) a% o
  5808.     (setq which_tiles (ai_common_state etype))
    + o7 U2 }- F5 @  J
  5809.     ;; Disable tiles if need be.../ b9 s+ o- j8 l. q- V& E% F
  5810. 4 B; X& R0 F7 k' Y+ q' a
  5811.     ;; Layer Button and Text Field
    # n; f/ w% x4 _, }! N  M8 v4 H
  5812.     (if (/= 1 (logand 1 which_tiles))9 y  g5 ~  [' d+ d5 W, t
  5813.       (progn
    - u5 H" L7 @6 X; Q- o  @" w5 I
  5814.         (mode_tile "t_layer" 1)* k7 q0 w( |1 X9 O$ f# m- K
  5815.         (mode_tile "b_name" 1)2 ]$ S9 Y6 W/ N/ x+ v6 A
  5816.       )
    + i# U8 h7 ]0 z- E, z
  5817.     )
    4 J5 D5 e- n! w$ p# x: e5 X  e
  5818.     ;; Color Button and Text Field
    * X, X. d$ z4 g; N. ?
  5819.     (if (/= 2 (logand 2 which_tiles))
    $ G% O) V# d/ o2 ]! z
  5820.       (progn0 j/ k+ e0 W' r9 b% U1 {* ^
  5821.         (mode_tile "t_color" 1)- G6 X# u3 g3 Z
  5822.         (mode_tile "b_color" 1)  x& G  o: Q( u  k8 t
  5823.         (mode_tile "show_image" 1). U. r6 K, |" C5 l+ m7 p. S
  5824.       )
    / P3 W; y  k' q3 M
  5825.     )+ c% ^1 Q2 l# t8 ?* |: r
  5826.     ;; Linetype Button and Text Field4 k- g) j3 E6 `
  5827.     (if (/= 4 (logand 4 which_tiles))
    ! Q1 W% X- _5 z3 V/ j
  5828.       (progn5 e$ v  O6 r6 {. @
  5829.         (mode_tile "t_ltype" 1): I2 p1 k5 W" y5 n& Y8 G
  5830.         (mode_tile "b_line" 1)% `$ y1 M7 m' r( l" w+ V3 @
  5831.       ): m% N* d. ]; I3 }! N+ N( _0 }7 w
  5832.     )& l& B+ u5 u6 v6 z; }' P
  5833.     ;; Linetype Scale Edit Field
    - r4 {6 N( r/ d2 k1 {
  5834.     (if (/= 8 (logand 8 which_tiles))$ h% S- r" Q2 ~* P! J6 T3 m. R- U, o! D
  5835.       (progn& U/ [" ~$ `6 M0 \, D
  5836.         (mode_tile "eb_ltscale" 1)
      i( e/ H3 `3 [, Q, z$ f) Z+ ?/ V
  5837.       )* U2 T$ N/ K0 C/ g- a/ H7 p
  5838.     )
      G3 P  b$ p0 ^' D! s% r( h
  5839.     ;; Thickness Edit Field.
    1 R5 R; B- u% x; i
  5840.     (if (/= 16 (logand 16 which_tiles))/ Y3 Y. Y) H9 c, A; M  j2 u
  5841.       (progn
    * f6 _* G3 t' v* v! U
  5842.         (mode_tile "eb_thickness" 1)
    ) N& P, y# n8 Q: J7 P8 H
  5843.       )
    % e; u* Q& x" g: }5 p( ?
  5844.     )
    7 k9 K5 K1 B3 g" u9 y9 S/ y
  5845.   )6 ?( m/ \2 y% c; R
  5846.   ;;
    ; `5 m2 b( X( h' A8 H1 @
  5847.   ;; XYZ Point values for all enitites+ d, Z& X3 o3 F/ X. U
  5848.   ;;$ ]/ B9 I, k: c- {/ I
  5849.   (defun set_tile_pt1 (ptype)
    5 p! e0 V7 d- \+ E8 w
  5850.     (if (= ptype 0)4 Z( w3 @$ }" ?% A, Q% M
  5851.       (setq pt1 (trans (cdr (assoc 10 elist)) 0 1))
    " w+ z+ e* j- U7 F+ J1 m7 P
  5852.       (setq pt1 (trans (cdr (assoc 10 elist)) ename 1)), l9 Z  C. J3 Q
  5853.     ); F. D$ j8 f. g; z+ d0 {
  5854.     (set_tile "x1_pt" (ai_rtos (setq x1 (car pt1))))( @" _0 ]" ], v! @7 S
  5855.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr pt1))))' x; I9 H/ L  r: F* ?' O  J
  5856.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr pt1))))
    5 U. `' @+ Q4 s  C8 c5 K
  5857.   )
    8 p( T  B! j6 f: U/ O$ H
  5858.   (defun set_tile_pt2 (ptype)
    & k! a& [  ]2 H" a8 o; U
  5859.     (if (= ptype 0)$ ]  N1 z2 a1 Z3 A
  5860.       (setq pt2 (trans (cdr (assoc 11 elist)) 0 1))( A& O6 C$ {1 Y! i: g) g; l
  5861.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))
    , D' ]4 }4 k* Y: z1 N
  5862.     )
    , T' G* `: U# G( F/ S2 K
  5863.     (set_tile "x2_pt" (ai_rtos (setq x2 (car pt2))))
    : _! x6 h( }5 ?' @: y- b
  5864.     (set_tile "y2_pt" (ai_rtos (setq y2 (cadr pt2))))! b  q2 o  S* _8 f
  5865.     (set_tile "z2_pt" (ai_rtos (setq z2 (caddr pt2))))
    0 `; g* r! x7 i' S% P% z
  5866.   )
    , I) k2 D; ?3 a. Y3 V0 X: K8 X" ]2 H
  5867.   (defun set_tile_pt3 (ptype)
    % y; G3 W% b  p4 i& w$ n
  5868.     (if (= ptype 0)& a# }' A5 B3 Y: {1 p
  5869.       (setq pt3 (trans (cdr (assoc 12 elist)) 0 1)): E# m5 _  T( j9 @& @7 g" `' \* p8 G
  5870.       (setq pt3 (trans (cdr (assoc 12 elist)) ename 1))# q1 ^  ~9 v2 f/ m/ G
  5871.     )$ w4 l9 C$ U+ [/ Y5 s
  5872.     (set_tile "x3_pt" (ai_rtos (setq x3 (car pt3))))
    / u& ]! u  C" E/ f2 C
  5873.     (set_tile "y3_pt" (ai_rtos (setq y3 (cadr pt3))))
    ( a# ^1 B  r4 f2 i" p% h
  5874.     (set_tile "z3_pt" (ai_rtos (setq z3 (caddr pt3))))5 o- o- J2 l5 Z
  5875.   )
      F) I- n5 d8 S! ?* r# i7 N
  5876.   (defun set_tile_pt4 (ptype)
    / A! G. r9 d; @* @: s( Z/ I( p' J
  5877.     (if (= ptype 0)7 X; s0 I" s" b6 J+ a* P6 o8 G0 I
  5878.       (setq pt4 (trans (cdr (assoc 13 elist)) 0 1))
    : N4 i  i$ X8 S$ o) Q9 i1 s2 y9 z
  5879.       (setq pt4 (trans (cdr (assoc 13 elist)) ename 1))
    ' i" v+ b/ h( k, z  P0 ^# h
  5880.     )
    5 \/ K/ o. ~2 Z5 s6 h
  5881.     (set_tile "x4_pt" (ai_rtos (setq x4 (car pt4))))
    6 M' ^, M. b, x" l. i; y3 ^
  5882.     (set_tile "y4_pt" (ai_rtos (setq y4 (cadr pt4))))
    % H9 b2 _0 k( t: x  I. i/ e
  5883.     (set_tile "z4_pt" (ai_rtos (setq z4 (caddr pt4))))
    3 r# [6 i; L5 K( A
  5884.   )
    : h: y5 R( z" r9 Y( M" ~/ t6 b
  5885.   ;;% d2 m: J; v9 o+ {; r! U( K# U
  5886.   ;; Xline/Ray' a4 Q! O6 ^8 ^' Y
  5887.   ;;
    9 @; A, U( u: R2 H/ n0 P5 z) p
  5888.   (defun set_tile_xline_pt1 ()* l1 x. j1 k: q: ]
  5889. + t% A* o" B& X1 }* D
  5890.     (setq xline_pt1 (trans (cdr (assoc 10 elist)) 0 1))
    ; P1 F( Q! q+ F% i

  5891. 5 v# f* }, e4 E& r
  5892.     (set_tile "xline_x1" (ai_rtos (setq xline_x1 (car xline_pt1))))
    5 ?: V# |% Y1 k8 w  n5 _- a
  5893.     (set_tile "xline_y1" (ai_rtos (setq xline_y1 (cadr xline_pt1))))
      T0 x* U/ L) X$ O+ f
  5894.     (set_tile "xline_z1" (ai_rtos (setq xline_z1 (caddr xline_pt1)))), g1 N* l3 ]5 S0 @0 y% a' Q
  5895.   )
      }3 e* V4 S" d; M( ^
  5896.   (defun set_tile_dirv (): `" u1 R( e& Z% y
  5897.         ;; Convert 11 group to local UCS (displacement). h6 h0 }& E& v0 @$ z3 @4 O
  5898.     (setq dir_pt (trans (cdr (assoc 11 elist)) 0 1 1))
    5 y2 B' S6 X* S6 a

  5899. 6 }9 g, _( A3 N9 `6 D
  5900.     (set_tile "dir_x" (rtos (setq dir_ptx (car dir_pt))))5 H4 q( |5 a3 I$ B) m
  5901.     (set_tile "dir_y" (rtos (setq dir_pty (cadr dir_pt))))
    ; ~$ ?6 ?2 T6 L$ M/ {- |, ?  K* w
  5902.     (set_tile "dir_z" (rtos (setq dir_ptz (caddr dir_pt))))
    % e2 A1 m# {  H
  5903.   ), ~: `+ _# t/ F
  5904.   (defun set_tile_xline_pt2 (): z$ f. l0 t% E! _" }
  5905.     (if (not xline_pt2)
    # h( Y4 K* e& Z" T' e
  5906.       ;; Initial second point is Root Point + Direction Vector* z! i' F" y# n* ~5 n) e& \
  5907.       (setq xline_pt2 (mapcar '+ xline_pt1 dir_pt))
    * |& s2 w, t0 ?  S$ t3 C
  5908.     )
    $ n: ~# ^/ K% w! a
  5909.     (set_tile "xline_x2" (ai_rtos (setq xline_x2 (car xline_pt2))))
    ' k+ @& m7 O+ r
  5910.     (set_tile "xline_y2" (ai_rtos (setq xline_y2 (cadr xline_pt2))))' m: T* C* s+ I
  5911.     (set_tile "xline_z2" (ai_rtos (setq xline_z2 (caddr xline_pt2))))1 J3 }+ V0 w& k
  5912.   )/ O; h% f1 H9 P2 a

  5913.   }1 b* i$ _4 Z. U# K" `; Z# q
  5914.   ;;
    + E# d$ x, i, r2 `5 H& F% k% G
  5915.   ;; Handle for all objects
    & N& u, H" E: E  i* N) g% L# z* O( m
  5916.   ;;
    1 B$ _$ E0 F! R* }+ `. v4 r
  5917.   (defun set_tile_handle ()2 Z$ z! E/ s, ~5 ?
  5918.     (if (setq hand (cdr (assoc 5 elist)))
    # W8 E* D" S# g$ H; ^  _* S: ~
  5919.       (set_tile "Handle" hand)! K) \1 N1 R3 s& i) e" \" [" l
  5920.       (set_tile "Handle" "None")
    + t3 J1 {6 y" h( V) M$ E
  5921.     )
    5 \/ T+ K3 g9 q
  5922.   )' Y9 V+ R! i7 S8 }; y0 m* R2 C7 W
  5923.   ;;. {$ O4 e' Q& O% `) q( P1 x" ~
  5924.   ;; Radius for ARC and CIRCLE
    8 ]/ d) O# d, T( T
  5925.   ;;
    7 N; l& \1 c! C5 j
  5926.   (defun set_tile_rad ()9 o3 X7 s1 A# L8 c' c' `
  5927.     (setq radius (cdr (assoc 40 elist)))
    0 c0 p5 H' A- o
  5928.     (set_tile "radius" (ai_rtos radius))1 B' O$ D7 a- n, |
  5929.   )
    ; X5 X7 \8 `5 _/ ^3 `( g; ]7 ~9 M, ]
  5930.   ;;$ A/ R+ j* S/ t" ^& e
  5931.   ;; Start angle for ARC' [7 p) L) O5 m0 X
  5932.   ;;  z& o+ _5 F& Q* _, q) J* C* K* N
  5933.   (defun set_tile_stang ()
    - o5 r7 [* D# W% r
  5934.     (setq st_ang (cdr (assoc 50 elist))). B4 O: C; N4 o' a
  5935.     (set_tile "st_ang" (ai_angtos st_ang))/ |4 v/ `6 n9 L( N9 Z! J
  5936.   )6 {( s( V: B  K3 R3 Z4 V
  5937.   ;;  s) G% t+ ]5 {" @) ?0 v
  5938.   ;; End angle for ARC
    . I5 O5 Q9 A! B. U! K* u
  5939.   ;;
    & y( ^1 c9 m" R
  5940.   (defun set_tile_endang ()
    & S: j6 F# a+ }+ z; B7 `
  5941.     (setq end_ang (cdr (assoc 51 elist)))- J8 }; |  J+ t% R" q  n6 j' h( O
  5942.     (set_tile "end_ang" (ai_angtos end_ang))
    2 m7 E4 ?# m" j# `
  5943.   )# A  f6 G  d5 ~: Q2 i6 z
  5944.   ;;, w" U! `7 U$ ^% h1 l6 G1 B
  5945.   ;; Rotation Angle - Text, Attributes, Block insertions and Shapes: s; ]5 g8 a+ Z- F  M7 C
  5946.   ;;
    6 ^* i, V, Y2 L& }: Y- }3 ^
  5947.   (defun set_tile_rot ()
    " p1 L5 J0 y1 p6 h+ F
  5948.     (setq rot (cdr (assoc 50 elist)))
    ! I7 i  O9 L* L4 @
  5949.     (set_tile "rot" (ai_angtos rot))* @0 v8 G5 p# c) _
  5950.   )
    8 W% c  x/ k/ g
  5951.   ;;+ P/ X8 _1 g/ Y& a/ n- A
  5952.   ;; Height - Text, Attributes and Shapes# N% Q5 d1 r1 }' D5 I
  5953.   ;;0 @" c# \; j- q2 x  G+ f$ n9 W% n
  5954.   (defun set_tile_hght ()/ l" E9 @3 N9 F, }. e9 C
  5955.     (setq hght (cdr (assoc 40 elist)))
    ' c# r# b# o( r
  5956.     (set_tile "hght" (ai_rtos hght))
    , m* K9 b8 @& w
  5957.   )3 E* r; `% c3 D3 P; ^
  5958.   ;;8 ~5 a3 D; J) S( G  t
  5959.   ;; Width Factor - Text, Attributes and Shapes9 ~2 @% H% l2 y) C% c  [1 O3 E1 `* s3 Z
  5960.   ;;0 f" R- O4 m# K" s$ c! ]1 S- r
  5961.   (defun set_tile_wid ()
      Z6 a# }* N7 H
  5962.     (setq wid (cdr (assoc 41 elist)))/ t& ]' n2 k! ~3 c
  5963.     (set_tile "wid" (ai_rtos wid))* @7 U) \$ x0 C* M) e
  5964.   )
    + ]/ u8 ?" I8 b+ T' F- M6 n% i2 t
  5965.   ;;
    4 Z4 z5 r# y- l! V8 X
  5966.   ;; Obliquing Angle - Text, Attributes and Shapes1 N' X; a4 g/ x2 J2 S. d1 f
  5967.   ;;
    9 l7 ~; _) ~- {2 v1 u, C+ K% d: u) l
  5968.   (defun set_tile_obl ()
    ' I  w. ^5 @, f+ z$ j
  5969.     (setq obl (cdr (assoc 51 elist)))
    # e2 a: T2 [% k- C. m, [
  5970.     (set_tile "obl" (ai_angtos obl))4 d; Q5 q4 W3 N+ l, r+ h2 e6 O& G1 m
  5971.   )
    " ^3 g: g, I: L% Z, Z
  5972.   ;;1 L( r5 I/ F0 O; @9 I
  5973.   ;; Text string
    + ~* h& v; h- J/ @
  5974.   ;;7 |; R* ^0 y7 f
  5975.   (defun set_tile_text (): u, a: i. K8 x3 I
  5976.     (setq text (cdr (assoc 1 elist)))
    9 t0 A! }7 _4 i0 `+ w: N8 @
  5977.     (set_tile "t_string" text)
    ) B" e1 d9 R: K) _6 t( u  `
  5978.   ), G. u4 Y7 u5 @8 ?' D+ Q0 j) O* @1 c
  5979.   ;;
    1 ^% k, m0 r1 e0 p9 Z6 \7 Z+ M
  5980.   ;; Attribute Tag: n2 p# r' ~- Q: a* ^( ?/ C
  5981.   ;;: ~7 p- Q( h5 Q  g
  5982.   (defun set_tile_tag (). J0 X, W' A& B- b/ g
  5983.     (if (= etype "ATTDEF")
    7 h- y# b1 v5 ^
  5984.       (progn
    2 K. m4 X( o- n
  5985.         (setq attag (cdr (assoc 2 elist)))2 ~# b0 `7 b2 Q" t6 ]; ?; ^7 R0 f
  5986.         (set_tile "tag" attag)
    ) z9 X/ }! \4 W4 t. L/ s
  5987.       )
    2 @" M( e- ?6 T- u
  5988.     )
    ; X" U/ N' `0 `  f9 o; R
  5989.   )1 `& A0 j9 I, v5 B  G. x
  5990.   ;;
    7 t& M" \9 R6 i: j* s
  5991.   ;; Attribute Definition
    $ i; y5 a* x$ n3 j
  5992.   ;;
    : M: j3 V8 O2 @3 \8 F
  5993.   (defun set_tile_prompt ()
    + q$ u& f. d$ r& u
  5994.     (if (= etype "ATTDEF")
    6 p# d/ P) H1 `4 h2 W' a1 S
  5995.       (progn: o* d. m1 X6 q: @4 {
  5996.         (setq atprompt (cdr (assoc 3 elist)))4 c7 z: Z8 K3 H( ^/ a/ P4 s
  5997.         (set_tile "prompt" atprompt)
    / Q2 Y4 \9 R" r- M- |) i
  5998.       )2 Z- r3 ^! ]; M- E8 x: \
  5999.     )0 K( u1 Z) j" Q" G7 [
  6000.   ); u- g7 V' U! ?# r* ~0 U& H
  6001.   ;;0 `9 u/ q6 s' T+ b" b5 a& f+ x
  6002.   ;; Justification setting for Attributes and Text.  Initializes
    8 v; K# t/ C& o+ x4 i( H- p4 k4 `
  6003.   ;; popup list box* l6 O& q: x9 P) G
  6004.   ;;0 p: A8 y3 n( i; r* ~
  6005.   (defun set_tile_just ()6 B5 _/ r; ]! |
  6006.     (setq ha (cdr (assoc 72 elist)))  ; horizontal alignment0 |% V! C8 I: A1 z% s# a
  6007.     (setq va (cdr (assoc 73 elist)))  ; vertical alignment
    # `& r, v2 p2 G) y) l
  6008.     (setq ha-prev ha)
    & a0 M( u2 x* E$ {# h( D# o2 A1 a
  6009.     (if (= etype "ATTDEF")0 j7 a8 T' p" K3 o9 k! h+ ^
  6010.         (setq va (cdr (assoc 74 elist)))  ; vertical alignment/ M3 B+ ?7 o( ~& U5 q
  6011.     )  g0 c" a. {' o" r. W: L( a
  6012.     (setq jlist
    7 r5 \( V& C6 K  V$ O7 k0 }3 R- ~$ c$ D
  6013.           (list "Left"        "Center"        "Right"
    % y' i* O. V3 M5 p; x
  6014.                 "Aligned"     "Middle"        "Fit"+ o8 [: d) x" J2 |0 V' R& e
  6015.                 "Top left"    "Top center"    "Top right"
    9 j- F3 }/ w5 U9 \
  6016.                 "Middle left" "Middle center" "Middle right"6 Z: Y! d1 S3 L" a1 K0 z
  6017.                 "Bottom left" "Bottom center" "Bottom right"5 S( y! x/ L, G, X% X
  6018.           )+ j% ?1 u7 V. p& Z
  6019.     )7 ~* V1 ]. |% _# R/ A3 @* l; N$ P, y
  6020.     (start_list "popup_just")7 n: g, F1 v' a4 e
  6021.     (mapcar 'add_list jlist)" X+ {4 x! `1 H8 a
  6022.     (end_list)
    % D! a/ l- g+ L1 W: r6 g& F6 f6 r
  6023.     (set_just_idx)
    ' A' A% {1 E6 g* F* {/ u7 d7 M
  6024.     (set_tile "popup_just" (jlist_act just-idx))
    ! y/ W. t/ `' m' [
  6025.   )# n6 `' h) f; m. a8 {7 H& j2 {
  6026.   ;;
    ; H2 _$ l) z9 V/ [$ y, Z3 O9 ^: [  Z
  6027.   ;; Style setting for Attributes and Text.  Reads symbol table for popup list
    ( W& K* `* f2 G  _
  6028.   ;; box.
    - L7 j8 L* ^: l  s
  6029.   ;;' X1 Y% W0 R: @' W6 n( G
  6030.   (defun set_tile_style (/ sname style-idx tlist)4 C! S: A$ K& k; F
  6031.     (setq tlist (tblnext "STYLE" T)
    " @3 y! W: G! I
  6032.           slist nil)
    : }5 h3 F( y8 X) ^2 k
  6033.     (while tlist
    $ A7 Z0 n' K) a5 y6 `( B- E% G
  6034.       (setq sname (cdr (assoc 2 tlist)))
    ' K/ s  `, M! c5 j* r4 c) A6 P
  6035.       (if (and (/= sname "")
    ( J, T; Z. C" e
  6036.                (/= (logand 16 (cdr (assoc 70 tlist))) 16))
    . O6 `/ o: C: s; D& T
  6037.           (setq slist (cons sname slist)))
    ( _+ o% f+ N, B! K% r
  6038.       (setq tlist (tblnext "STYLE")))
    : h) m: g+ g: ^4 e7 n6 O1 _9 h9 e
  6039.     (if (>= (getvar "maxsort") (length slist))* _3 z$ T4 r, q; S! E: a
  6040.         (setq slist (acad_strlsort slist)) ; alphabetize style list' R* f, M  n5 H6 G3 f9 ~) d* r+ m
  6041.       (setq slist (reverse slist)))     ; or reverse it to put it in DB order, M/ q- m) O4 M( M6 M
  6042. 9 Y5 a) o) J+ p* f* P1 _2 D" ?+ U
  6043.     (start_list "style")
    ' |4 w# Z/ \9 c, _6 b
  6044.     (mapcar 'add_list slist)  C, A, \9 H  p0 i; p1 b/ b- x
  6045.     (end_list)+ Z' Y, d: e1 p% W
  6046.     (setq tstyle (cdr (assoc 7 elist)))
    1 ~) _- d# t0 u3 d
  6047.     (setq style-idx (getindex tstyle slist))
    7 k( I; J2 {6 r) }
  6048.     (set_tile "style" (itoa style-idx))% Z8 t4 q/ q' j% y' u
  6049.   )* C; L. }3 R- b$ O3 u- v
  6050.   ;;
    5 w; k* W; Z: {; Y) `% k% e$ B
  6051.   ;; Text and Attribute setting - upside-down, backwards& t3 k8 c* S5 ^4 Z
  6052.   ;;
    ; Y5 N# k; o2 w. L& V0 r! q. K, ^  |5 ]
  6053.   (defun set_tile_bk-up ()
    . m6 V. Y$ ^6 _4 Z9 f+ \3 D
  6054.     (setq bk-up (cdr (assoc 71 elist)))# u) D4 ~( X1 K7 a$ n+ K( r" @
  6055.     (if (= (logand bk-up 2) 2); S, _" q; P$ c( c. e
  6056.       (set_tile "bkwd" (itoa (setq bkwd 1)))3 a3 y6 g& S; n; c6 g' x
  6057.       (set_tile "bkwd" (itoa (setq bkwd 0)))
    ; \" S" s0 D: ~4 |2 J$ H
  6058.     )
    6 B1 L" }" O3 k/ H
  6059.     (if (= (logand bk-up 4) 4)
    9 I3 q$ [' Z( Y: O1 U
  6060.       (set_tile "upsd" (itoa (setq upsd 1)))
    2 o+ i! W1 s/ E. C! ~* m, T! }3 O
  6061.       (set_tile "upsd" (itoa (setq upsd 0)))- }. H/ j1 N( r, _
  6062.     )
    ) \: D9 N0 J1 u" B3 ~' y7 A; W; t
  6063.   ): r6 z# \/ m9 R6 R2 W. s  G
  6064.   ;;& k6 i0 x2 U, p0 J( d* v
  6065.   ;; Attribute setting - invisible, constant, verify, preset
    ) P0 q7 K. m, ]- y  Y
  6066.   ;;
    . y; \3 k' p" o
  6067.   (defun set_tile_icvp ()
    - H, f; ]2 {* k( G8 g
  6068.     (if (not (setq icvp (cdr (assoc 70 elist))))# D8 I( q' w2 T0 E( s4 m: k
  6069.       (setq icvp 0)
    # ]; {$ C/ U( l' C
  6070.     )5 ~" E$ G# ^! @; [% g
  6071.     (if (= (logand icvp 1) 1)4 \* Z0 M' t4 k! y+ i9 |
  6072.       (set_tile "inv" (itoa (setq inv 1)))9 B: \+ V) ?# n8 R# o$ C# s' @# K1 R
  6073.       (set_tile "inv" (itoa (setq inv 0)))
    8 Y  L9 w! K- e8 P! F. f
  6074.     )& E4 r3 @( @4 y* W# L$ Q
  6075.     (if (= (logand icvp 2) 2)+ n; P/ }9 F2 C7 l+ [' W2 d/ `8 i
  6076.       (set_tile "con" (itoa (setq con 1)))
    6 e# U3 R1 y! F! S
  6077.       (set_tile "con" (itoa (setq con 0)))
    $ w7 A! q! {8 {! O
  6078.     )
    * G3 c0 }" b! S) R$ H, Y8 P
  6079.     (if (= (logand icvp 4) 4)2 X, d( X8 ^9 x  g4 s' w
  6080.       (set_tile "ver" (itoa (setq vfy 1)))
    - M" O; }* ]( T6 ~# u7 p% Q) V
  6081.       (set_tile "ver" (itoa (setq vfy 0)))8 E/ O6 C* A7 A6 W
  6082.     )" U" e4 m0 o! F  ~0 z1 D
  6083.     (if (= (logand icvp 8) 8), l) s% h. t3 x% V' \
  6084.       (set_tile "pre" (itoa (setq pre 1)))* ~5 P$ I9 Z% m" S
  6085.       (set_tile "pre" (itoa (setq pre 0))); I9 E; v2 J' e- A, ^* n
  6086.     )
    ' t! C- E- V# {& N6 a
  6087.   )
    & o2 t2 Y7 g" A  _% J- t
  6088.   ;;
    ! |, m# n: T( a3 T* s
  6089.   ;; Scale factors for block insertions
    . T) |8 `' S6 ]2 R  O1 a% a
  6090.   ;;. {) H+ Y* P0 S* ^) k
  6091.   (defun set_tile_scale (/ temp)
    / R3 E# k  X# h; f1 T( N
  6092.     (setq temp (getvar "LUNITS"))
    7 I4 o: D5 F5 o9 O- f: v
  6093.     (setvar "LUNITS" 2)  B: h+ a. K0 s
  6094.     (setq xscale (cdr (assoc 41 elist)))
    - q  Y4 O: F/ ]' ]% K
  6095.     (set_tile "xscale" (ai_rtos xscale))* U; M3 i7 @, r% w1 a( E" I6 u1 ^
  6096.     (setq yscale (cdr (assoc 42 elist)))
      f2 [, [, x0 n
  6097.     (set_tile "yscale" (ai_rtos yscale))
    ) T3 l6 C# e5 s
  6098.     (setq zscale (cdr (assoc 43 elist)))
    2 N5 i% I+ t( t. W$ w
  6099.     (set_tile "zscale" (ai_rtos zscale))7 r: r8 U4 ]; Y
  6100.     (setvar "LUNITS" temp)
    . ^: S3 t" {* C7 t  c4 p
  6101.   )% I0 o7 S* }4 q
  6102.   ;;9 |+ q; m9 @$ V" i; {2 D$ Q
  6103.   ;; Rows and columns for block insertions! }2 Q  @- d' W. Q: f1 X
  6104.   ;;' F- X, G: J" q$ d: w+ L
  6105.   (defun set_tile_rc ()
    ! h% ~  e6 [- u, d; H4 W" C
  6106.     (setq columns (cdr (assoc 70 elist)))
    ) J, L8 k$ d- r3 t' b8 O
  6107.     (set_tile "columns" (itoa columns ))
    . s0 v) Q! V$ ^- l+ s
  6108.     (setq rows (cdr (assoc 71 elist)))
    ) |) `9 w; j- e0 d$ I
  6109.     (set_tile "rows" (itoa rows))
      c- F  i; [8 o5 H! e6 c1 @
  6110.     (setq col-sp (cdr (assoc 44 elist)))1 {6 G5 [- a" U
  6111.     (set_tile "col_sp" (ai_rtos col-sp))
    ( C% O0 _$ {. h! V9 n8 G! R9 k: v) |9 h
  6112.     (setq row-sp (cdr (assoc 45 elist)))7 _; w$ U( W5 j$ |
  6113.     (set_tile "row_sp" (ai_rtos row-sp))$ a! A  P- ]& W" S$ o, q( T# S
  6114.         (if (/= hasclip T)
    , G# J4 @- \6 v4 t/ k
  6115.                 (mode_tile "xcliponoff" 1)
    # x* W$ [1 @. |
  6116.                 (set_tile "xcliponoff" (itoa xcliponoff))( `6 ~  [' q1 k
  6117.         )) E8 r  `, d& a; }. \1 ^  ~
  6118.   )
    2 j5 S" |+ e& L* ?8 _2 u  N2 U
  6119.   ;;. @$ x7 y" {- [  i# ]  N7 V
  6120.   ;; Invisible edges for 3DFACE7 B- j, E  W4 z0 M
  6121.   ;;; M% [9 y# k$ G& O, ?$ `
  6122.   (defun set_tile_edges ()
    9 ^3 x7 Q* G2 g
  6123.     (setq f-vis (cdr (assoc 70 elist)))3 S1 ?  n- z) N0 `3 u6 [
  6124.     (if (= (logand f-vis 1) 1)8 n' j+ |( i' @( }# c
  6125.       (set_tile "edge_1" (setq edge1 "0"))
    ; I# F- ~5 h/ r+ u. W
  6126.       (set_tile "edge_1" (setq edge1 "1"))
    & X  P. W5 u/ m- \# O* d
  6127.     )
    / {; s/ E  [, E& k) W& H+ Q
  6128.     (if (= (logand f-vis 2) 2)) A+ D7 h. X& k4 Q
  6129.       (set_tile "edge_2" (setq edge2 "0"))
    2 S: J; P4 O. T( i
  6130.       (set_tile "edge_2" (setq edge2 "1"))8 v3 q: E* m) e# F, t8 R0 C
  6131.     )  V4 p# C; T# J9 _. p) {' j
  6132.     (if (= (logand f-vis 4) 4)
    8 H8 _8 _" B+ d9 `5 ?3 _
  6133.       (set_tile "edge_3" (setq edge3 "0"))
    - C, B) U8 m2 p2 H8 _1 ~& C
  6134.       (set_tile "edge_3" (setq edge3 "1"))! ]3 H/ d8 _" ~& M; R, U! q
  6135.     )7 ?0 q/ X7 F  \1 t1 Y5 [
  6136.     (if (= (logand f-vis 8) 8)
    8 D8 O; U/ b" f, v
  6137.       (set_tile "edge_4" (setq edge4 "0"))& R5 J7 J% ]4 e% b- M
  6138.       (set_tile "edge_4" (setq edge4 "1"))5 O% _9 r% ^2 z! r7 T' \6 l
  6139.     )0 n+ _! w5 g! B
  6140.   )& F- C0 ?8 T7 h6 L
  6141.   ;;/ f& \% N5 F+ c- S* |
  6142.   ;; XYZ Point values for polyline vertex
    ! S0 L; v: f' `+ I2 \+ Q/ l
  6143.   ;;8 b8 }) y) o! T% C& D- C6 g% V
  6144.   (defun set_tile_vpt (ptype)9 d( ?  p0 L$ @
  6145.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")
    : s5 W$ h& T- P0 }, `: P3 j; z# q
  6146.         (progn
    $ l! P/ w/ S: ?7 v/ l! e( E
  6147.             ;; ctr is 1 based, vertices are zero based.
    $ M& K. U( i" p4 B( I/ j
  6148.             (setq vpt (cdr (getLwVert (- ctr 1))))
    8 n) h6 Z# T, n* w1 O  r: X
  6149.             (set_tile "xtext" (rtos (setq x1 (car vpt))))
    ' m6 v2 i( a% }# {6 b
  6150.             (set_tile "ytext" (rtos (setq y1 (cadr vpt)))); u5 i7 A& _! z9 P$ A* x( a
  6151.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    2 x- ~' a- S# G. h/ T
  6152.         )
    " M) d& Q/ Z" K; e1 s8 |# _- c
  6153.         (progn9 ?; l& t* G/ n
  6154.             (if (= ptype 0). E. N' s2 Z4 d9 E
  6155.                 (setq vpt (trans (cdr (assoc 10 vlist)) 0 1))7 T" |' Y$ P+ O' O: y+ ~
  6156.                 (setq vpt (trans (cdr (assoc 10 vlist)) ename 1))" J1 e! s# C8 b6 P4 B
  6157.             )
    " u; f8 ^% v. D5 F  Z) A* w
  6158. ! \4 i+ [) J! f# P8 u  S
  6159.             (set_tile "xtext" (rtos (setq x1 (car vpt))))% `# z2 X5 U* G, ]
  6160.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))' |: e+ @- v; H8 c% f9 n5 ]6 C# t
  6161.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))) l% L7 G5 T: V5 c
  6162.         ): J7 S% ~* B  H/ ?( R
  6163.     )9 B) Z7 X2 a* \  }9 W

  6164. 9 @, ?2 c9 n4 r, h
  6165.   )+ V* X* y- Q& M5 X9 t
  6166.   ;; This is the equivalent to doing an entnext on the heavy weight
    - S+ `9 c- Y# V7 \  Q
  6167.   ;; polylines. The hard coded '4' below allow stepping over the
    5 d( B8 w9 t' s( _4 O
  6168.   ;; 40 41 and 42 group code information. The while loop finds the  G& h" W% D( K1 [7 w
  6169.   ;; first vertex which will be used as the starting assoc in the. o/ z$ j  j9 I/ [1 k8 W+ t0 M
  6170.   ;; call to nth.
    2 b! w# P7 h2 H: ]2 v6 }- f5 H
  6171.   ;;7 k! ^- d/ U3 u6 j, z# H- L
  6172.   (defun getLwVert (tmpctr / count tmp)
    ( P+ p/ [+ P9 i  H' `
  6173.     (setq count 0)* v9 e( x" c- Z0 m2 m  }! u, `3 n, \
  6174.     (while (/= (car (nth count vlist)) 10)
    # ^- J4 ~3 Z. [$ V1 ]: r: ^$ g
  6175.         (setq count (+ count 1))
    2 [; z6 Y$ u( i  B5 h* T2 e
  6176.     )
    ( j  e7 |5 U' R# K
  6177.     ;; If the counter reaches the number of vertices,# T) z( Z, t9 e9 ?  F
  6178.     ;; reset ctr and tmpctr to zero again.% v: ~: ]- [7 {
  6179.     (if (= tmpctr (cdr (assoc 90 vlist)))
    & b3 I1 {- o6 F& x" `& @
  6180.         (progn0 r4 y5 u  C& X  q
  6181.         (setq ctr 0)
    " S, _. F+ B) u( L, k! f
  6182.         (setq tmpctr 0)
    % t" A+ ]" H, b8 N- f8 v) h. w
  6183.         )$ b! Q. |5 k' D7 w6 r4 _1 D
  6184.     )
      z+ s( v2 M9 G* z, \6 B, o
  6185.     (setq tmp (nth (+ count (* tmpctr 4)) vlist))
    - ~5 S; D$ U7 p  n: y: W7 t$ E$ S
  6186.     (setq tmp (append tmp (list(cdr (assoc 38 vlist)))))1 F% y" K7 H- w! g% a
  6187.     (setq pt1 (trans (cdr tmp) (cdr (assoc -1 vlist)) 1))# @  ^. g0 a. H5 H% n- o
  6188.     (setq tmp (cons 10 pt1))
    - i) T: V3 t8 `. d
  6189.     (setq tmp tmp)
    # H% C- j/ K% j0 e9 I+ g$ P' X  K
  6190.   )% F$ V+ @# k) g# \
  6191.   ;;
    2 e* R5 R" V. c8 u) [2 q3 ]
  6192.   ;; Set tiles for Spline properties. If the spline is rational then we
    " G- j$ P: A( M7 D, `) d$ x
  6193.   ;; need to display the weight values of the control points, so set! Y- N& d4 k8 g
  6194.   ;; flag to 1.
    8 F* `3 }) W" s" {
  6195.   ;; 1 = rational spline
    0 U3 U  H4 [. O* [
  6196.   ;; 0 = non-rational spline' L/ D; m$ G7 j+ K
  6197.   ;;6 c& ?; X$ t# Y- D8 `5 Q
  6198.   (defun set_tile_spline_props ()
    9 s% u8 O8 {# d/ H
  6199.     (setq rational_spl_flag 0)      ;; initialize rational spline flag
    " B1 e2 [! h2 q5 f
  6200.     (set_tile "Degree" (itoa (cdr (assoc 71 elist))))
    % n& v& a6 Y& c
  6201.     (setq bit70 (cdr (assoc 70 elist)))" ^& w) p$ P5 _4 |' G
  6202.     (if (= (logand bit70 1) 1)
    . T5 d6 D! Q- Y8 N
  6203.         (set_tile "SpProp4" "Closed")
    + M& d! Z* L3 J, A4 Q
  6204.         (set_tile "SpProp4" "      ")% q8 O+ ]9 ~* m: z6 i" X- }
  6205.     )
    / y# b( l* r# y" C2 e2 V% w8 y
  6206.     (if (= (logand bit70 2) 2)
    / j; _6 P' r/ f9 V4 p- b
  6207.         (set_tile "SpProp3" "Periodic")
    4 H3 H* h( e; c3 t0 ^9 ]# i% C
  6208.         (set_tile "SpProp3" "Non-Periodic"); I7 U, S2 N- S" w* c
  6209.     )
    4 s# g. g) A1 w8 ?
  6210.     (if (= (logand bit70 4) 4)2 y" T+ }, F" ]$ V5 ]& Z$ P6 r4 I
  6211.       (progn
    7 t, {/ D& l; H1 l9 \: D+ \- u
  6212.         (set_tile "SpProp2" "Rational")
    ! `* r5 I& q( j! y# o% W9 q! }# y
  6213.         (setq rational_spl_flag 1)      ;; this is a rational spline# e" c0 K# ~/ P7 ~9 Y8 J9 s2 k
  6214.       )
    . m; d. a3 H. J2 C* z
  6215.         (set_tile "SpProp2" "Non-Rational")
    . [* @, F; t. Z) E2 S9 P0 m
  6216.     )
    7 h$ X$ X4 {/ M% t# k
  6217.     (if (= (logand bit70 8) 8)
    + V  V0 z3 \# W6 K' o
  6218.         (set_tile "SpProp1" "Planar"). Y. X# f" A# h* g3 v
  6219.         (set_tile "SpProp1" "Non-Planar")
    7 x* n; _7 w9 ]: R& m
  6220.     )5 d# a; G5 y" f. S. O4 |  n  b
  6221.     (if (= (logand bit70 16) 16)
    7 _; h: \7 H  ]* v1 V6 I7 a
  6222.         (set_tile "SpProp5" "Linear"): {6 W+ p/ [9 W
  6223.         (set_tile "SpProp5" "      ")
    1 _3 P  F" q2 u/ v2 |. R
  6224.     )
    ' G0 ~6 j/ N8 U4 E' k( M
  6225.   )
    # G: {9 O% p$ l: @$ b7 }6 t( K: a
  6226.   ;;) w0 A5 z7 r) j0 N1 ?. s
  6227.   ;; XYZ Point values for spline points) D" @8 `9 A0 e$ a  A( ?
  6228.   ;; Need to account for WCS/UCS* Y& Y, U' A% u6 o) F( M
  6229.   ;;7 n9 g3 z: h6 x" S' A
  6230.   (defun set_tile_cntl_pt ()# S. c4 S! [2 S- H, a& O' t8 b
  6231.     (setq cntl-pt (cdr (assoc 10  elist)))* Z4 X! h! L: M: m2 ?  J- k
  6232.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    $ o$ q% g" c9 I- F. b
  6233.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))) I5 \- k0 i+ U& `2 a/ O
  6234.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))$ M' L: O% J) v
  6235.     (if (= rational_spl_flag 1)      ;; if rational spline  ?  P  K: q7 B7 t$ ?
  6236.       (progn                         ;; show weight6 i7 @% n7 P) Z
  6237.         (setq weight (cdr (assoc 41 elist)))4 g% Z9 }6 D" x0 D  g! H; p
  6238.         (set_tile "weight" (rtos weight))
    1 C& T& P. u/ w: Z7 y4 \
  6239.       )                              ;; else8 P0 x. q. P& _$ I$ W2 Q1 h
  6240.         (mode_tile "weight_text" 1)  ;; disable weight field
    ) N/ w! l# m9 j$ g9 ~4 J. I
  6241.     )( t" t9 N7 t9 }0 ~: n" m
  6242.   )
    % r9 u2 [7 Z) d! ~
  6243.   ;;
    $ S( l5 P# i- J4 @( p; S! v+ x0 k' E3 c
  6244.   ;; XYZ Point values for spline points
    , l* p5 k9 {4 t* B6 Z2 }
  6245.   ;; Need to account for WCS/UCS  i) o) u% N0 Y4 }* c
  6246.   ;;3 [/ Z4 y: q9 \
  6247.   (defun set_tile_data_pt ()
      C4 U! w8 }8 R& t9 q+ S
  6248.     (if (not (assoc 11 elist))
      A  P, G( B, f; l0 c6 L4 T& I
  6249.       (mode_tile "data_pts" 1)
    8 U$ l/ ~% G! r/ y2 l1 N, O
  6250.       (progn$ R; Z- ?3 e! }7 O& x
  6251.          (setq data-pt (cdr (assoc 11  elist)))
    0 b, N5 |/ l2 A/ S& B
  6252.          ;; display points with current precision.
    9 g$ ^, b6 M: T& ]2 P5 g2 g
  6253.          (set_tile "dxtext" (rtos (setq x1 (car data-pt))))
    7 C9 f* L! Y4 ]8 H
  6254.          (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))
    ! {% w% I* q( [4 Z( {9 l1 Z
  6255.          (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))7 f% T' d3 H: _, P, x, |  x( [
  6256.       )8 q5 C9 W, F8 \/ T. e6 R) e  R4 s+ J
  6257.     )
    " E; j' F0 B/ g+ i
  6258.   )
    9 B5 c& h/ Y: B; y( ^) c* d( P+ t
  6259.   ;;
    0 h3 X8 Y3 b' k) ?
  6260.   ;; Fit curve, fit spline, or smooth spline surface setting
    ; w) s) V" M9 @% g8 B+ u
  6261.   ;;
    % C8 J2 y# `3 l
  6262.   (defun set_tile_fitsmooth ()
    % {. Q- B; k9 V, I& c+ D. K
  6263.     (cond
    : q! h& z+ C0 V! E- t# |
  6264.       ((= (cdr (assoc 0 elist)) "LWPOLYLINE")2 O7 u* P, A8 A7 M7 x/ ?
  6265.         (set_tile "none" "1")
    8 d& {0 Y8 `/ w* z& Y. M
  6266.       )% [/ I$ r5 p5 x* L/ j  \3 a
  6267.       ((= (logand bit70 4) 4)1 f. L8 [" D" ?: J- ^2 w' B& K2 r; N
  6268.        (cond9 \! b2 x7 \& M& O
  6269.          ((= bit75 0)
    " q5 [$ P( \4 t) C
  6270.            (set_tile "none" "1")1 \( N. y# |$ G& Y4 n
  6271.            (setq spltype 0)
    1 D. _# q& d( A7 s7 U
  6272.          )
    ! M+ G1 W6 O3 U. \/ }+ [
  6273.          ((= bit75 5)
    % N$ C$ b' i2 n0 U
  6274.            (set_tile "quad" "1")
    ! ~4 l& H4 ?. X/ t' M9 b
  6275.            (setq spltype 5)  ^' S! b8 d7 S' i4 F" E, \
  6276.          )5 d  G' m3 `1 D! D
  6277.          ((= bit75 6)
    & v' |* G0 y7 m: L
  6278.            (set_tile "cubic" "1"), T0 w) D; D$ ?( ~
  6279.            (setq spltype 6)4 m. H3 J2 b% X/ l9 n
  6280.          )
    : O/ t" m- ^7 O, J3 M
  6281.          ((= bit75 8)% U- ]; V1 X/ A9 b8 I
  6282.            (set_tile "bezier" "1")1 _6 L. {0 a5 r* x5 k; K
  6283.            (setq spltype 8)
    3 E  f; C) \5 ?. G. \* h( G
  6284.          )
    . A8 ?; s+ X4 u) p2 P8 y6 W4 A
  6285.        )2 O" _0 I2 k5 B
  6286.       )1 w/ c- o, f! C, m) n& W5 E3 e
  6287.       ((= (logand bit70 2) 2). ]8 Y7 t3 K' P0 z5 S& H
  6288.         (set_tile "fit" "1")
    " d. _$ |0 g! |' ^9 d0 ^4 h
  6289.         (setq spltype 1)" {9 z9 R7 ~, G! Z- t) ~* g4 v  ]
  6290.       ), f* V/ A# V  i
  6291.       (T (set_tile "none" "1"))6 r  `( T0 y- S# R; ~7 ~" h
  6292.     )
    1 @" _, {, ?6 {; Y
  6293.   )
    8 R8 q) \% d6 Q; ^
  6294.   ;;9 r$ |& {0 g) m/ V
  6295.   ;; Closed or Open mesh and polyline setting! o' b$ ?3 I9 W1 Y: L! M
  6296.   ;;9 }/ ]/ T6 x* L6 V
  6297.   (defun set_tile_closed ()
    & B0 ~/ S# ~/ u  y$ Z3 Q9 `
  6298.       (if (= pltype "3D mesh")
    2 f* ~% j. J( q* G; F# n
  6299.         (progn
    , m0 y; D% S4 `, B5 L: }4 F9 ?
  6300.           (if (= (logand bit70 32) 32)
      n7 p" N8 o3 s% }- V! k
  6301.             (set_tile "closedn" (setq closedn "1"))
    4 @8 {5 q+ s5 C5 u% t
  6302.             (set_tile "closedn" (setq closedn "0"))
    6 h! f3 o' ^( U- a; k& U* S
  6303.           )
    $ @7 c8 P8 A9 V4 z8 T, U7 t5 Y% L
  6304.           (if (= (logand bit70 1) 1)9 d3 Y' @% K: }. R
  6305.             (set_tile "closedm" (setq closed "1"))
    - d8 o6 v0 E4 ^7 A; r1 ?# E
  6306.             (set_tile "closedm" (setq closed "0"))9 r/ |. `. W) `* Z
  6307.           )
    $ w+ E; v' E9 q2 d' ?# [2 o$ W
  6308.           (setq old-closedm closedm old-closedn closedn)
    ! o* T' B& ^& v
  6309.         )! d- S# j6 P$ e& v( U
  6310.       )
    : ?" P' S4 Y+ a  ], Z8 _1 F" Q
  6311.       (if (or (= pltype "2D polyline")
    # U3 H' V0 l2 k# S6 Y3 V
  6312.               (= pltype "3D polyline")* K( F9 G( x, n
  6313.           )9 l! G* a8 H: {* L3 v3 O0 M) M7 T
  6314.         (progn" O  U" ^: B- |7 M; q
  6315.           (if (= (logand bit70 1) 1)! T% w4 r, s4 ]9 w( b) `  |, s
  6316.             (set_tile "closed" (setq closed "1"))
    . F5 q" d% J. K5 e! Z9 u7 W+ k4 L, |) M
  6317.             (set_tile "closed" (setq closed "0"))
    2 d- ^. R0 w/ p8 L5 l! B; Q
  6318.           ); }, |  M/ N6 E; P9 R* q# M- T) \
  6319.           (setq old-closed closed)
    3 n/ o+ f8 ~$ Z; V
  6320.         )
    ) W7 [/ f8 l( r8 p
  6321.       )" u0 Q% F3 n7 L' b: y1 s3 y3 t+ ~" \
  6322.   )/ e9 l3 l  Z! D4 D  G7 l
  6323.   ;; Set common action tiles+ E+ N& M$ x& i) p0 @6 N
  6324.   ;;5 \0 X+ r9 |0 A+ S  c. [0 E
  6325.   ;; Defines action to be taken when pressing various widgets.  It is called
    ' }9 q: j3 N, s) O+ L* `8 g& I
  6326.   ;; for every object dialogue.  Not all widgets exist for each object dialogue,) n* j& f# m$ i' k0 ?: B5 c
  6327.   ;; but defining an action for a non-existent widget does no harm.8 {7 s" w/ u' d2 G0 p: b- M. c( X
  6328.   (defun set_action_tiles ()# h8 h) @1 W. o. l. o- E
  6329.     (action_tile "cancel"       "(dismiss_dialog 0)")4 s) q$ O6 q# x, [2 e6 O
  6330.     (action_tile "accept"       "(dismiss_dialog 1)")
    & Q9 w) s" d0 j+ _0 {
  6331.     (action_tile "help"         "(help \"\" help_entry)")4 [1 s- z' b* A3 v) W
  6332.     (action_tile "b_color"      "(getcolor)")
    0 N1 @9 M: ], C! n$ r! o
  6333.     (action_tile "show_image"   "(getcolor)")5 Z) W& m0 _- @8 Y2 K" d2 c
  6334.     (action_tile "b_name"       "(setq elayer (getlayer))")8 Q; G4 \2 K. a$ H2 i- I  R: k3 o' J
  6335.     (action_tile "b_line"       "(setq eltype (getltype))")$ U1 X- Z: B% m/ l3 Q" \
  6336.     (action_tile "eb_thickness" "(getthickness $value)")8 i( X! g. o5 Y& l% `# I  J
  6337.     (action_tile "eb_ltscale"   "(getltscale $value)")- O; J6 s6 ?, K8 Y7 f/ H

  6338. 1 j% C4 V+ S( B
  6339.     (action_tile "pick_1"       "(dismiss_dialog 3)"); n5 P3 U7 w- B9 @
  6340.     (action_tile "pick_2"       "(dismiss_dialog 4)")
    9 {# G, T& \  ~, ^8 j! d8 |5 S* t
  6341.     (action_tile "pick_3"       "(dismiss_dialog 5)")2 z7 K) f  c; k% y
  6342.     (action_tile "pick_4"       "(dismiss_dialog 6)")
    ; ^& m- [7 `3 A" N3 f+ v( \
  6343.     (action_tile "x1_pt"        "(ver_x1 $value)")# b; N  Z. S% P; x
  6344.     (action_tile "y1_pt"        "(ver_y1 $value)")$ V( r# p. q" `) C0 \8 N+ V
  6345.     (action_tile "z1_pt"        "(ver_z1 $value)")# w( n# m( i( Q3 H8 x/ i4 T. m
  6346.     (action_tile "x2_pt"        "(ver_x2 $value)")
    . X% F, X! r' j: \% F
  6347.     (action_tile "y2_pt"        "(ver_y2 $value)")% c' |, ~/ F' ?. l- K! a3 e1 O
  6348.     (action_tile "z2_pt"        "(ver_z2 $value)"), j- `/ Q9 u( K; i
  6349.     (action_tile "x3_pt"        "(ver_x3 $value)"). X( E" a/ ]' f( L2 D. R; D
  6350.     (action_tile "y3_pt"        "(ver_y3 $value)")
    8 J8 D9 j  U; [  T8 s
  6351.     (action_tile "z3_pt"        "(ver_z3 $value)")) \! n; L' ~  j. i+ c' y
  6352.     (action_tile "x4_pt"        "(ver_x4 $value)")5 L* w% U9 Y' e7 G! J3 x
  6353.     (action_tile "y4_pt"        "(ver_y4 $value)")
    * q# v+ v! p" q: G
  6354.     (action_tile "z4_pt"        "(ver_4 $value)")
    7 u* g# ^# i4 ?$ ?) ?& ^; n! `
  6355.   Y7 b9 u, F' i7 R& M% `
  6356.     ;; Action tiles for Xline & Ray' t2 e. z& u4 w$ K7 L
  6357.     (action_tile "xline_x1" "(ver_xline_x1 $value)")
    ; b3 v- \0 p  O* R( c1 \3 @5 k; I
  6358.     (action_tile "xline_y1" "(ver_xline_y1 $value)")
    7 j3 O. \' V$ x
  6359.     (action_tile "xline_z1" "(ver_xline_z1 $value)")% i% K% X/ l' w
  6360.     (action_tile "xline_x2" "(ver_xline_x2 $value)")( U# y3 K: }0 x" d' `: Q: h
  6361.     (action_tile "xline_y2" "(ver_xline_y2 $value)")! H( y3 c) o+ M9 P7 d
  6362.     (action_tile "xline_z2" "(ver_xline_z2 $value)")
    ! d" G1 p( s2 K9 H) c

  6363. % [$ e! i* ?- n& s7 [
  6364.     (action_tile "edge_1"       "(setq edge1 $value)")
    # E( [: x0 v9 k& F, w
  6365.     (action_tile "edge_2"       "(setq edge2 $value)")
    & z, C$ R* b+ O/ D1 p0 j7 h* g
  6366.     (action_tile "edge_3"       "(setq edge3 $value)")
    $ j+ |4 U% t3 ]
  6367.     (action_tile "edge_4"       "(setq edge4 $value)")
    8 E& N' F" `2 g3 `: S
  6368. ) Z  O8 e5 O5 [3 V9 G- Y& j
  6369.     (action_tile "radius"       "(ver_rad $value)")
    3 ?4 T7 W7 n; K3 s( [: _
  6370.     (action_tile "st_ang"       "(ver_ang1 $value)")6 u) M4 [5 j, y3 `7 t8 i
  6371.     (action_tile "end_ang"      "(ver_ang2 $value)")9 N, @( X- s+ g# x& G: I! l
  6372.     (action_tile "end_eang"     "(ver_eang $value)")" [4 ?0 M5 `- E6 W$ B8 K
  6373.     (action_tile "minrad"       "(ver_minrad $value)")
    ( V: _$ _$ Y  R. W# ~
  6374.     (action_tile "majrad"       "(ver_majrad $value)"): F4 s5 _$ Z. U$ j

  6375. 5 ]0 v0 I6 H) l- A5 B9 \
  6376.     (action_tile "xscale"       "(ver_xscl $value)")
    ) A# b4 r& s$ A
  6377.     (action_tile "yscale"       "(ver_yscl $value)")
    1 Y- }$ E+ Z( T& L
  6378.     (action_tile "zscale"       "(ver_zscl $value)")
    4 G9 {- O( ~: C% v# x
  6379.     (action_tile "rot"          "(ver_rot $value)")5 o, A9 Q4 \, u  q4 Y0 v2 G$ F, j
  6380.     (action_tile "columns"      "(ver_col $value)")  T% ^% K  [3 Y9 w
  6381.     (action_tile "rows"         "(ver_row $value)")
    8 h( {8 k7 R  T
  6382.     (action_tile "col_sp"       "(ver_colsp $value)")9 F  `3 d2 F8 ]' j$ U3 L
  6383.     (action_tile "row_sp"       "(ver_rowsp $value)")4 S1 h+ _% o7 u2 ]2 h4 a
  6384. $ M  D7 A! ~  m3 _* V
  6385.     (action_tile "hght"         "(ver_hght $value)")# }/ D! M8 u4 A$ Y6 I' {; I4 G
  6386.     (action_tile "wid"          "(ver_wid $value)")
    5 r  I4 R, b, c- P- x9 [
  6387.     (action_tile "obl"          "(ver_obl $value)"), m3 A% D2 p5 g
  6388.     (action_tile "style"        "(style_act $value)")0 m5 Y. S, a3 B! ~- e# k/ \
  6389. / Q- X+ p" c- W5 U
  6390.     (action_tile "t_string"     "(ddgettext)")2 t; f) G% \3 {% t. q7 |
  6391.     (action_tile "tag"          "(ver_tag)")+ Q5 a) d8 H: }
  6392.     (action_tile "prompt"       "(ddgetprompt)"); U# O; u5 w1 u+ R% b2 S8 {$ j
  6393.     (action_tile "bkwd"         "(setq bkwd (atoi $value))")
    2 E; o2 Z! r; [& I1 q
  6394.     (action_tile "upsd"         "(setq upsd (atoi $value))")
    : _2 C+ Y8 }- Q1 Q% S  B: X& d
  6395.     (action_tile "inv"          "(setq inv (atoi $value))")
    . l  M7 [, U( y
  6396.     (action_tile "con"          "(setq con (atoi $value))")' F9 b0 Z- ?) R3 i( y
  6397.     (action_tile "ver"          "(setq vfy (atoi $value))")/ u- G, ^. |+ G& P4 p0 c
  6398.     (action_tile "pre"          "(setq pre (atoi $value))")  f: L& b3 p, `
  6399.     (action_tile "popup_just"   "(jlist_act $value)")
    5 p& _2 v+ ?9 s, m. h# `. Q

  6400. 2 V1 Z6 M. y, L. C- A) W6 s
  6401.     (action_tile "closed"       "(setq closed $value)")
    ; m2 _+ F3 \/ L
  6402.     (action_tile "ltgen"        "(setq ltgen $value)")
    3 H/ ]9 m' `; l  y' G
  6403.     (action_tile "closedm"      "(setq closedm $value)")* M$ o* I9 p7 I0 p; [9 z# M
  6404.     (action_tile "closedn"      "(setq closedn $value)")0 m7 |" o; d' M5 ~* n( v$ Q
  6405.     (action_tile "next_v"       "(next_vertex)")
    / W+ _9 L1 f. `7 Z0 D2 H( O+ A& b
  6406.     (action_tile "xcliponoff"   "(setq xcliponoff $value)")5 o0 _4 B  F. H9 I4 z1 i

  6407. 0 {# x* B* i) Y1 W* f
  6408.     (action_tile "next_cntlpt"  "(next_cntl_pt)")( h2 k1 e0 E* H- A% Q$ q
  6409.     (action_tile "next_datapt"  "(next_data_pt)")
    * P0 n% K/ E% b8 p6 `

  6410. 9 M9 w1 D5 h/ S0 [# b
  6411.     (action_tile "none"         "(if (radio_gaga \"none\")(set_uv 0))")' |8 Y# g5 f. N' r
  6412.     (action_tile "fit"          "(if (radio_gaga \"fit\")(set_uv 1))"); o# |+ }" q6 @
  6413.     (action_tile "quad"         "(if (radio_gaga \"quad\")(set_uv 5))")8 X' r1 H8 W: p% n6 Z
  6414.     (action_tile "cubic"        "(if (radio_gaga \"cubic\")(set_uv 6))")3 ]" `9 z7 N& z5 s! n2 H
  6415.     (action_tile "bezier"       "(if (radio_gaga \"bezier\")(set_uv 8))")
    & y, {, I: j: ~- D$ F

  6416.   H' H( L) B/ N, @1 }
  6417.     (action_tile "u"            "(ver_u $value)")
    ' |! k+ |% U  x4 J$ g1 N
  6418.     (action_tile "v"            "(ver_v $value)")
    5 A9 Z+ c: i( e7 I1 |, g- C) e
  6419.   )& G- ]4 R5 ^3 U5 B9 A' [

  6420. + [0 h5 N# x) q4 W
  6421.   (defun ddgettext()9 n- z5 H& C9 G
  6422.     (setq text (get_tile "t_string"))
    * c3 D3 ?+ n7 o- R$ X0 X5 [9 \1 p
  6423.   )
    8 s4 c* M; ]! `7 _$ d: H) n2 f/ ]

  6424. 0 V; k1 e- s, A- N
  6425.   (defun ddgetprompt()1 f) U% A* ~6 b% N* F6 e3 j
  6426.     (setq atprompt (get_tile "prompt"))
    * W* K4 `1 L7 w' g% M
  6427.   )
    " R  [0 r- U+ O/ v9 B; {1 B. R
  6428. + ^  k' p& g9 N# V& X5 x
  6429.   ;; As OW doesn't support disabling of individual radio buttons within0 W4 u* @$ G- G1 {! w# _
  6430.   ;; clusters, a check must be performed as to the legitimacy of the
    , G% l" Q) \! s/ M
  6431.   ;; button pushed and reset if necessary.
    5 s8 ?" [; `6 R5 y9 D
  6432.   (defun radio_gaga (pushed)
    . ]  g. r# q' w8 H, |: z: s
  6433.     (cond3 R* \% F9 `) o  l1 `( i7 @) {
  6434.       ((and (= pltype "3D polyline")* `% _$ J/ T+ E) u& O- k$ P
  6435.             (or (= pushed "fit")# x4 F1 z% n( C. O3 g
  6436.                 (= pushed "bezier")
    $ V4 X- I# w% o% O+ K+ j: ^
  6437.             )$ c( a  V, o* E
  6438.        )
    5 B# C+ k% X4 U. \; f* g
  6439.         (set_tile "none" "1")) S4 J5 q, R/ {) R; {- P8 c: B) A( V
  6440.         nil
    % h% y) X$ w; m$ I! z! s$ ?
  6441.       )
    $ R1 @6 N  Z9 N# C* S: P1 A
  6442.       ((and (= pltype "3D mesh")5 N3 S3 F& S3 c% i0 x
  6443.             (= "fit" pushed)
    & v: r" w# H& W9 y) M6 b
  6444.        )
    ' o* b" h6 F. H3 L( V) \2 ?1 W
  6445.         (set_tile "none" "1")
    2 L6 A4 g* `( h. \+ D
  6446.         nil
    6 E4 N  Z1 P" E( D- Z% C' V9 x; a
  6447.       )( L8 L8 }0 C- M- |( t: r) |& ^$ B
  6448.       ((= pltype "Polyface mesh")
    $ U9 w  n; t! f! r
  6449.         (set_tile "none" "1")( `* `% m! l' J4 D5 n" Q* _
  6450.         nil
      a7 I* n8 D5 l( G' |) o) L$ S* j
  6451.       )
    9 ~- _, _% H& j5 u, \
  6452.       ((and (= pltype "2D polyline")
    1 p' d& q, c/ h3 O1 k+ A
  6453.             (= "bezier" pushed)% C7 N8 O' o7 \1 f& z: Z
  6454.        )
    2 ~2 b6 L" I/ y/ p
  6455.         (set_tile "none" "1")
    " G1 J2 R- i/ {: F' W  e3 p
  6456.         nil
    " w/ y9 ~  h- [, q& r# P
  6457.       )) X' j3 d% s1 Q5 T
  6458.       (T)4 {, d7 J$ `* B/ v1 J% O5 }
  6459.     )
    . B8 P% X4 L, L9 F8 L! @
  6460.   )2 e: Y$ M" m* U# [
  6461.   ;;
    2 v9 Z- N" _* ~9 m9 q( }! m
  6462.   (defun set_uv (type_n)
    3 M4 v" a5 C0 H# z% O! ?6 Z1 p5 X
  6463.     (setq spltype type_n)8 J. z0 v/ O( L# K6 I1 }. M  e  g
  6464.     (if (= pltype "3D mesh")
    # W! U  Q  X3 r
  6465.       (if (= spltype 0)
    . F6 z( x# O8 c% s& r
  6466.         (progn$ a" u/ k, V! E
  6467.           (set_tile "u" (itoa (setq u 0)))$ }6 i, P" i+ Z4 t) I7 n$ `8 y( }+ o
  6468.           (set_tile "v" (itoa (setq v 0)))
    ! P5 T7 U. l  z
  6469.         )
    / d" }( l! f8 P7 T& Z7 a
  6470.         (progn2 ?0 p+ \9 V7 n; Q* y. L
  6471.           (if (= u 0), K3 U! t6 }9 z- F( \; B- }
  6472.             (set_tile "u" (itoa (setq u (getvar "surfu"))))
    " Q5 J8 I8 m! V) v& a# `
  6473.           )
    ) j) {" t' m' d
  6474.           (if (= v 0)! O3 U9 ^. U: Q7 t% _0 U2 @
  6475.             (set_tile "v" (itoa (setq v (getvar "surfv"))))! P( k1 @6 l% L" Z% Y
  6476.           )
    : {* S2 o$ _# q- s) ?' w0 c
  6477.         ), M% S# O. z: C
  6478.       ), W% M- f) F0 z6 I$ h
  6479.     )' a! c" E+ b. V
  6480.   )! d8 X0 N( y% e2 f' U- k

  6481. - B3 {5 g4 }6 \5 r, a" \
  6482. / A% e& a3 K, B" y
  6483.   ;;
    8 B. X, w5 G. \1 G$ `7 g
  6484.   ;; Verification functions$ l$ l( [0 I3 |" a- a
  6485.   ;;! u: c% [0 ]$ U. A- i! E* ^
  6486.   ;; Verify distance function.  This takes a new X, Y, or Z coordinate or/ h0 d9 K8 H8 r! d
  6487.   ;; distance value, the tile name, and the previous value as arguments.
    $ H0 `. d0 b+ h" F' _
  6488.   ;; If the distance is valid, it returns the distance and resets the tile.
    ' b6 U  r4 [$ `9 ?
  6489.   ;; Otherwise, it returns the previous value, sets the error tile and keeps) P% M8 O& N# v) z8 g5 K( ?
  6490.   ;; focus on the tile.  Shifting focus to the tile with invalid value can) K0 Z3 E, {$ ]1 g" H5 l
  6491.   ;; trigger a callback from another tile whose value is valid.  In order
    ; t0 R' B$ L: ^
  6492.   ;; to keep the error message from being cleared by this secondary callback,
    : ?2 x6 Q( {. E* c# J' t2 f7 z
  6493.   ;; the variable errchk is set and checked.  The last-tile variable is set
    : S) ]! P+ W* G+ h) e
  6494.   ;; and checked to ensure the error message is properly cleared when the% l8 K  P2 s4 r8 N: i  A. K( m5 D8 z( e
  6495.   ;; user corrects the value and hits return.2 k8 j5 N6 O/ Y- I
  6496.   ;;1 R7 _, Y/ j5 e$ P, }: j
  6497.   (defun verify_d (tile value old-value / coord valid errmsg)
    ( d! Q# z/ n: w
  6498.     (setq valid nil errmsg "Invalid input value.")
    6 i) k; |- ~( d* w1 _
  6499.     (if (setq coord (distof value))( M( v3 B, x+ W7 `. v
  6500.       (progn
    6 U5 ]% N5 z5 _$ R8 i9 L1 c
  6501.         (cond2 l4 U9 G% h5 x% @+ O6 N( R$ x7 N+ P
  6502.           ((or (= tile "radius")
    2 R+ A( X+ W. r8 u. V7 g
  6503.                (= tile "hght")
    6 V3 ]( X9 B- J- ?* }1 R) c( }$ v  \
  6504.                (= tile "wid")
    ' z8 v& T) x! e+ w2 d7 @' o
  6505.                (= tile "majrad")) \5 e$ Z+ J/ P9 Q3 y5 F# s5 \) {
  6506.                (= tile "minrad")8 ?& G/ E/ s7 }' b/ G
  6507.                (= tile "eb_ltscale")( I: S; Y  s1 P/ _
  6508.            )
    8 B! A$ ~) p' h' Q$ x
  6509.            (if (> coord 0)
    8 W2 f$ F3 P' O; {
  6510.              (setq valid T)
    ! S0 a: `1 }) W$ w
  6511.              (setq errmsg "Value must be positive and nonzero.")
    0 y7 u0 i* R( `; p; x) V
  6512.            )
    + p! ^4 U/ H/ a) t5 A9 |; x$ B
  6513.           )3 F- p0 d. Y$ v0 Q) j7 f
  6514.           ((or (= tile "xscale")/ Z# \7 i+ J, t! B' a% ]* Y( h
  6515.                (= tile "yscale")4 i0 C/ \5 w; U  \( L) p1 ]
  6516.                (= tile "zscale")
    $ l8 b+ ]4 n: Q
  6517.            )
    + S; T% I( s6 y. X! ]
  6518.            (if (/= coord 0)
    * A. p" `( _  i/ r
  6519.              (setq valid T)
    6 x1 e. g- Z- y2 @3 Z2 }
  6520.              (setq errmsg "Value must be nonzero.")
    # J6 \* i. Y9 [& t
  6521.            ); u$ n# _* o7 S" Q! |
  6522.           )
    ( F( _5 k  K7 ?! S8 I. V
  6523.           (T (setq valid T))  L- U2 D6 Y) c: E
  6524.         )+ Q" C- {. j, o+ I
  6525.       )
    / }. q5 T( \, [  L5 L
  6526.       (setq valid nil)
    1 k' ]" N1 U: t4 U' S% N% j1 n2 c
  6527.     ): B7 q$ h, }0 A) o8 B$ H; W# M9 b' L9 y2 h
  6528.     (if valid
    ) _* [4 X+ Y5 P) d# O) {
  6529.       (progn% }0 d6 A( F/ C# N# c5 M7 \
  6530.         (if (or (= errchk 0) (= tile last-tile))
    ( Y$ m$ U+ b, O' B% J# _2 x* k
  6531.           (set_tile "error" ""); }4 ?/ b; K! a' i8 U- W( Y- g
  6532.         )+ f- r: e/ ~0 v9 ~. F7 k+ R3 C  y
  6533.         (set_tile tile (ai_rtos coord))
    " M4 S: l& s. H/ S( W
  6534.         (setq errchk 0)
      l! t) n' d7 [9 f6 t, Z
  6535.         (setq last-tile tile)
    1 f# N9 |# Y& b/ H4 F( a
  6536.         coord- O. S. d5 X3 s4 \
  6537.       )3 b9 T) `- Q7 ?$ M5 p$ v
  6538.       (progn1 }1 z! F# t" g9 W. w3 {; T
  6539.         (mode_tile tile 2)            ; Move focus to offending field8 _, l2 ~' T% g6 x: U
  6540.         (mode_tile tile 3)            ; Select offending text
    ! y, n1 T" M; y' W
  6541.         (set_tile "error" errmsg)
    ; |9 W8 P/ }; I+ A
  6542.         (setq errchk 1)
    / D  @) p2 n+ z( N/ l2 q- t
  6543.         (setq last-tile tile)
    1 ?# q6 [1 p) D4 W0 U0 W
  6544.         old-value
    ) d! P; e- A7 _
  6545.       )
    , ~0 q9 }( Q1 V; C* r$ m
  6546.     )) I) m+ B0 t9 \9 _) p6 ?6 k& m8 w# h
  6547.   )
      w" e* k  a0 C* T# V$ E
  6548.   ;; Function for Xline coord edit box checking.
      c; x/ d" q4 `9 m, z
  6549.   (defun verify_xline (tile value old-value / coord valid errmsg)! q& U8 O* M% b" }; s9 ]2 x
  6550.     (setq valid nil errmsg "Invalid input value.")
    & S% W3 i2 Q* `. f! g2 j7 b7 _
  6551.     (if (setq coord (distof value))4 w: U9 }0 H: C
  6552.       (setq valid T): ], j. X3 X4 I) Z; a& n+ h7 F8 \7 V  s
  6553.       (setq valid nil)9 q/ t2 P" }! H6 r  f7 }
  6554.     )
    . K( p% d9 L' B3 A0 \
  6555.     (if (and coord
    3 K1 H& A# p- i( J" n, E+ l
  6556.           (and (= (atof (get_tile "xline_x1")) (atof (get_tile "xline_x2")) ); B4 @+ Z2 r, U" V
  6557.                (= (atof (get_tile "xline_y1")) (atof (get_tile "xline_y2")) )
    ; }* {' N6 l2 L  d; k1 l! p: V
  6558.                (= (atof (get_tile "xline_z1")) (atof (get_tile "xline_z2")) )+ i$ T* l3 ?4 f3 K
  6559.           )$ j; H5 p; S8 ~1 T
  6560.         )' V5 x* N' n  F( x
  6561.        (progn
    & E1 c* j8 N0 Y* J7 l9 X. c
  6562.          (setq errmsg$ ~- o0 w7 w# [
  6563.                   "The Root point and the Second point cannot be equal.")8 _6 e" S: `6 M* C
  6564.          (setq valid nil)
    8 |; H3 d& ]7 p$ J& r
  6565.        )/ Z$ P* ^5 ^6 p6 Q2 G
  6566.     )
    9 }1 m6 n4 U, s% c: W0 Q
  6567.     (if valid
    7 n1 H8 R& E+ O+ O7 b5 l4 `; Q
  6568.       (progn
    ( i; @+ T4 c2 N: I2 c" b
  6569.         (if (or (= errchk 0) (= tile last-tile))/ ]5 Q4 j' O1 r! j4 y, T7 l6 E
  6570.           (set_tile "error" ""): ?, ]+ r! a  j, u( a" C
  6571.         )6 G7 a7 Q( w( d  W$ U0 h
  6572.         (set_tile tile (ai_rtos coord))
    $ Q1 C" z% B! e7 M" a
  6573.         (setq errchk 0)
    4 K5 [1 h! T8 B4 F1 p
  6574.         (setq last-tile tile)
    3 c1 S: V& C+ Y# o* \- ^9 I
  6575.         coord, d" T/ B1 [6 q, R
  6576.       )
    6 q; a; D9 Z$ U' d9 G
  6577.       (progn1 c' _1 W1 v+ _2 u
  6578.         (mode_tile tile 2)            ; Move focus to offending field, s* o7 P; h$ A. s) p2 a( m
  6579.         (mode_tile tile 3)            ; Select offending text- f$ @0 W( J3 ~3 M; V7 T
  6580.         (set_tile "error" errmsg)
    : b9 b: X  B9 u
  6581.         (setq errchk 1)
    5 ]/ R1 `7 D. ~* Q3 ?/ M; D( X
  6582.         (setq last-tile tile)
    1 ^' S$ G- d+ U% X$ K
  6583.         old-value
    # a( z* k- h* U. L( S
  6584.       )
    $ I) a9 p5 @  B7 X, Q
  6585.     )! c% ~* b" o/ S, J: J' |* x/ `
  6586.   )5 u1 w; p, K, T6 F$ d/ r( f

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

  6920. ) _3 c  K; Y* n
  6921.   (defun cir_calc ( / area units)5 d8 F- f( S3 |0 G
  6922.         (setq radtest radius)
      a# A- r+ ]3 {/ V* ~. j
  6923.         (set_tile "Dia" (rtos (* 2 radius)))
    * F6 t) _1 V. W
  6924.         (set_tile "Circum" (rtos (* 2 pi radius)))
    , S2 S" p  P" e  y, v/ R, A: T. Y
  6925.         (setq area  (* pi (* radius radius)))
    ' k! @$ w5 e" L- c9 J" q
  6926.         (setq units (getvar "LUNITS")): C: a3 ~% j1 X0 y0 d
  6927.         (if (or (= units 3) (= units 4))/ d9 q! X* F; W8 h. q1 C7 P- k
  6928.             (progn) X7 i2 D$ m# {1 t, G
  6929.                (setq area (/ area 144.0))
    * k- v$ W2 m* d3 e, x4 n
  6930.                (set_tile "Area" (strcat (rtos area 2) " square ft"))
    , \" o1 `0 ?0 S  B9 k4 G1 o
  6931.             )  }- Y4 ^, J7 Q+ k4 ~0 X- W  U$ ~
  6932.             (set_tile "Area" (rtos area))
    " ~( ^, V8 b& L: p! x) s
  6933.         )- i; ?; r3 x, n( a% Q* `
  6934.   )
      N/ v1 ]5 @* }) R/ a
  6935. & F4 ^3 q! ?  V; U, w2 ?
  6936.   (defun arc_calc ()1 U5 z9 R9 R/ C& J# \; |0 K
  6937.     (setq totang (- end_ang st_ang))
    + |+ N/ w" h$ B* [0 @
  6938.     (while (< totang 0)4 b! b$ c/ @, T+ [" G( b3 |5 k
  6939.       (setq totang (+ totang (* 2 pi))). |8 p0 K9 H7 K
  6940.     )4 _6 y! W) G5 O) s% J% V
  6941.     (while (> totang (* 2 pi))7 W, p/ ]( B- {3 X4 S1 W; V9 S
  6942.       (setq totang (- totang (* 2 pi)))) _0 P7 s/ l5 ]- R% L
  6943.     ); C6 ]; E' z, q
  6944.     (set_tile "tot_angle" (angtos totang))% _- X3 {4 ~% O- C9 `, B3 a: {5 h
  6945.     (setq arclen (* (* 2 pi radius) (/ totang (* 2 pi))))* f- _" T4 r5 C# v' Y) }/ a
  6946.     (set_tile "arclen" (rtos arclen))1 G' `" a6 Z$ I9 J
  6947.   )/ j0 t; C+ C+ [  {: G3 ]
  6948.   ;;
    7 g1 F% e# I$ s# b1 J5 A3 y
  6949.   ;; Calculate the major radius, minor radius, major axis direction.
    . m8 }$ ]7 N+ V
  6950.   ;; Get radius ratio. Convert Start, end parameters to start and end7 m6 e5 ^$ J. l; a( q
  6951.   ;; angles. Save Major Radius value in "old_majrad" in case the user
    $ Z( T: F: O9 R. ~
  6952.   ;; chooses to input a new Major Radius value later. It's needed to6 N5 `( Y4 t" |3 U* a& s+ J/ t
  6953.   ;; calculate a new Major Axis Vector value.6 r3 l$ D& k" T% m! P
  6954.   ;;9 q/ z, T9 d- K' D: o
  6955.   (defun ell_calc ()- X& d5 ?4 x# L4 v$ q7 e7 s4 X, }
  6956.         ;; Get major radius from the major axis vector.3 Z; N! \: g, T9 p! n4 j
  6957.         (setq majaxis (cdr (assoc 11 elist)))
    # V, N3 N. u$ K; @- r. r
  6958.         (setq xx (car majaxis))
    # i' U8 T1 R: f* r. a
  6959.         (setq yy (cadr majaxis))6 M+ \( r5 Z% `; ^
  6960.         (setq zz (caddr majaxis))* e6 g3 U. |; {. A1 Q
  6961.         (setq majrad (sqrt (+ (* xx xx) (* yy yy) (* zz zz) )))
    ' V% E0 r) ~+ s- ]9 q' l
  6962.         (set_tile "majrad" (ai_rtos majrad))
    5 S6 Y) \0 k: |: A3 T5 n
  6963.         (setq old_majrad majrad)
    7 [0 [' @  p2 I) w
  6964.         ;; Get radius ratio
    3 x' L8 H- E2 N& ^$ K% e" x8 X! R
  6965.         (setq rrat (cdr (assoc 40 elist)))( c0 I" |" a& m; E9 O0 F
  6966.         (set_tile "rratio" (rtos rrat))
    % j6 K/ x$ X/ f
  6967.         ;; Calculate minor radius/ ?* u$ k' k, W
  6968.         (setq minrad (* majrad rrat))  t: d3 D9 b& F+ D) |8 d" g
  6969.         (set_tile "minrad" (ai_rtos minrad))/ C3 J* ^! G: W4 B) o9 g
  6970.         ;; display major axis vector
    ( c4 L# s7 J& @% t
  6971.         (set_tile "Majraddirx" (rtos xx))
    3 ^, \! Z6 ^* B( ~) `" s; U) q( G0 \7 M
  6972.         (set_tile "Majraddiry" (rtos yy))# I6 a% b; e2 ]& L* e. x1 a
  6973.         (set_tile "Majraddirz" (rtos zz))* _2 B) j( y6 R3 j4 y, v/ o8 s
  6974. 6 E- n# u2 U8 D' V  d
  6975.         ;; Convert start parm to start angle3 s% \5 S% v: \# C2 {
  6976.         (setq stparm (cdr (assoc 41 elist)))" ^+ U4 K# F* @2 b9 z, R
  6977.         (setq vecx (cos stparm))
    5 Z4 S- K2 u6 v
  6978.         (setq vecy (sin stparm))
    # `' _+ b( L6 G  C, t- [7 n
  6979.         (setq st_ang (atan (* rrat vecy) vecx))
    7 v" L) [7 f- `
  6980.         (setq tempst_ang (ai_angtos st_ang))
    % G6 n/ Y) T: r) U
  6981.         (set_tile "st_ang" tempst_ang)( i! F/ B4 ~* Q* M2 E8 O
  6982.         ;; Convert end parm to end angle. If end angle evaluates to 0
    & w  y# N' ~% g  u6 S& {6 I' j- g
  6983.         ;; degrees then display it as 360 degrees.$ m1 E* E# V/ _5 ^. S/ y) v9 b
  6984.         (setq endparm (cdr (assoc 42 elist)))
    5 r8 i) m  }# ]0 g
  6985.         (setq evecx (cos endparm))1 H( _. {* Z7 r7 y
  6986.         (setq evecy (sin endparm))
    & r0 U0 q5 E9 U( R" q) s
  6987.         (setq end_eang (atan (* rrat evecy) evecx))
    0 w% T, w' \$ Q7 M2 F- i7 T
  6988.         (setq tempend_eang (ai_angtos end_eang))4 m# _/ A# w5 H2 C8 _( J' J
  6989.         (if (= tempend_eang "0")
    2 i8 M0 C6 B4 Q* W& A+ t% V
  6990.             (set_tile "end_eang" "360")/ g: I6 k9 Y. |! V3 s" G+ i
  6991.             (set_tile "end_eang" tempend_eang)
    - m& s# j/ m/ f6 M8 `
  6992.         )$ ]3 H& z. H  H( y( n0 a
  6993.         ;; Get area of the ellipse.9 ^5 L7 Y/ p( g- w* A
  6994.         (ell_calc_area)
    % [/ y/ k. c; p4 r, ?
  6995.   )
    ! m4 K! @# f2 |; Q
  6996.   ;; Calculate area of ellipse. If it is an arc then
    ( t4 d% Q+ s8 \5 ^/ ~* O8 C
  6997.   ;; grey out area display.
    2 Z0 Y/ P2 W% M; ^2 j* p
  6998.   ;;* w) N% }3 D1 v
  6999.   (defun ell_calc_area ( / area units)) |: _4 q/ _0 ~: @) u1 r
  7000.      (if (and (= tempst_ang "0") (= tempend_eang "0"))7 g0 D+ X6 f% T: b, c
  7001.          (progn
    0 z3 d" s: K" \' y
  7002.              (setq area  (* pi majrad minrad))
    0 W. e8 Y( S: d& z8 V( b8 Q0 r9 |( W
  7003.              (setq units (getvar "LUNITS"))
    : O! n$ Q( e7 X1 ~# P
  7004.              (if (or (= units 3) (= units 4))3 P1 C4 j2 h" V. w
  7005.                  (progn
    & c9 M; g+ ^8 ~9 A
  7006.                      (setq area (/ area 144.0)), T3 P6 O3 y9 k, `7 W% c) k
  7007.                      (set_tile "Area" (strcat (rtos area 2)" square ft"))
    : c1 n2 F. o( l
  7008.                  ); D) E2 ~0 {  T: E+ F; e5 N9 x# i
  7009.                  (set_tile "Area" (rtos area))4 i, n% K: v+ I( {
  7010.              )
    / W* z* b1 h  o
  7011.          ): s# ^3 c  y# z$ ^- L& v* M
  7012.         (mode_tile "Area_text" 1)
    ( c1 ^# X- M' N" q4 k* R
  7013.      )5 ?5 t$ z( ^2 }4 T) b
  7014.   )
    - v" p0 Z4 r* c
  7015.   ;;
      Q# N/ d( v$ ~) w4 I0 n6 z2 H
  7016.   ;; Calculate new values for ELLIPSE6 B  g, R0 v6 ]3 S3 Q! ^
  7017.   ;; Minor Radius, Area* h1 k- J$ C2 d' ~- r. n
  7018.   ;;- {! R. R% B: D9 s$ I4 I# P( Y
  7019.   (defun ell_calc_newval (ell_tile)
    . X, p* W6 m8 G3 O$ `
  7020.     (if (= ell_tile "majrad")
    4 I3 R$ k9 I6 ?; l$ \# f: b" C
  7021.       (progn
    / h! J, R6 M% K" j% l/ i5 F$ E0 w
  7022.          (setq rrat (/ minrad majrad))
    9 i$ U; M7 a" N9 _4 U7 b$ f1 O# S
  7023.          (set_tile "rratio" (rtos rrat))
    . ~6 H. ?+ v0 y7 l/ n2 T4 G+ U( e
  7024.          (ell_calc_area)+ S: K) S! ~/ j  k
  7025.       )2 I1 A- i( k9 ~
  7026.     )
    5 J" {: l7 ^. F
  7027.     (if (= ell_tile "minrad")" q( \, ~& l, c% d" Y; G: Y9 }
  7028.       (progn, o) y; a' _4 b$ K
  7029.          (setq rrat (/ minrad majrad))5 f+ t; Q* n4 I4 j+ g0 E% }
  7030.          (set_tile "rratio" (rtos rrat))8 Q8 l4 D1 Z! P9 A# Z
  7031.          (ell_calc_area)! b* n; g1 ~( ^# y) @: P, c
  7032.       )
    / l  w. V* q2 ]
  7033.     )
    ( R+ `* Y1 T' N  ^4 H* g
  7034.   )
    ; ?" V/ M7 `! W3 i+ U+ @8 x- ~2 q

  7035. 9 s) y7 V0 j( y& L: B* j
  7036.   (defun set_dimen_props (/ loop a stl txstyname)
    - r7 R; B6 q% r1 d( {- o

  7037. $ b' r% w* v- |2 z4 _2 P& H* l- \
  7038.     (setq stname (cdr (assoc 3 elist)) ; get style name
    % G' B4 b9 w7 ^& j( U
  7039.           stl (tblnext "DIMSTYLE" T)# ]5 {) g1 C) c; h6 y2 @
  7040.           stlist nil)7 B9 ]' X' j6 v. s
  7041.     ;; Get all style names and list them in alphabetical order; O' B5 Q, I& ?9 D" ?' _/ C, h
  7042.     (while stl2 r6 L' o1 |2 R; Y0 A4 f( K
  7043.       (setq sname (cdr (assoc 2 stl)))
    " h0 O: C/ L' K+ s1 s
  7044.       (if (/= (logand 16 (cdr (assoc 70 stl))) 16)
    1 T" v* u, J5 z5 c8 I1 h
  7045.            (setq stlist (cons sname stlist)))
    ( n/ s' ]6 n( Z9 c3 ]
  7046.       (setq stl (tblnext "DIMSTYLE")))0 q* N* b  }% A6 Z

  7047. ( Q+ U8 V) b" V" i
  7048.     (setq len    (length stlist); d: |4 e0 F( \; Z
  7049.           loop   0# I* R0 B* {; n8 U( J% z) o2 k
  7050.           dimsty stname8 E% I& r7 X! Q- }3 _
  7051.     )$ y" |1 [6 F- o
  7052. 4 C' Z( W0 \% w
  7053.     ;; alphabetize style list, depending on maxsort  C7 \) ?7 g4 y: l4 M
  7054.     (if (>= (getvar "maxsort") len)
    ) U) C& V& j$ J  q
  7055.         (setq stlist (acad_strlsort stlist))8 w! c) H# C, p/ y( A
  7056.       (setq stlist (reverse stlist)))
    + e( B( G, g! T! _$ g

  7057. , Q5 t- j5 i% S9 o
  7058.     ; *UNNAMED style (dimsty = nil at this point) is replaced with
    5 L% c- M  a/ C$ `
  7059.     ; the current style.  After R13, we require dimensiosn to have a4 [# O: q6 w0 S+ }) o
  7060.     ; dimstyle, so we plug any holes where we find them.' ~3 }5 N: w6 F  Z  \, c, v# x
  7061.     (if (null dimsty)0 A) K6 U( P8 l9 |1 [1 ?! M$ K
  7062.       (setq dimsty (getvar "dimstyle"))# q& c$ }+ i! A
  7063.     )
    1 f0 l' L' D+ t5 ]
  7064.     ; Show the styles in combo box
    % U2 i: g- T; W* P4 k* o6 T
  7065.     (start_list "mod_style" 2)
    ! b" j  d! t& w3 X4 S, M
  7066.     (while (< loop len)
    * g1 I# S8 P2 D8 W: G) G
  7067.       (add_list (nth loop stlist))  y2 {( _6 o1 K5 o1 b1 }
  7068.       (setq loop (1+ loop))8 y7 g* Z/ ~3 L9 R- f3 r1 F( X
  7069.     )
    9 n' B! j1 z# W) n& o

  7070. " b' o0 x8 K7 X9 j  e$ |" u
  7071.     (end_list)
    ! a. O1 R0 z( J# I( ~

  7072. 5 p; y% [! q9 ]) v6 c1 B
  7073.     ; Hilight the style name of the selected entity4 N8 v9 A6 ^. {, V. {
  7074.     (while (and (< 0 loop) (/= dimsty (nth loop stlist)))
    3 k; }6 [" B+ y5 _  J
  7075.       (setq loop (1- loop))2 O* \5 r. {' `4 q7 S
  7076.     )8 S- j% o2 i5 \( {
  7077.     (set_tile "mod_style" (itoa loop))
      a* ^2 s; L, v$ c! X, E: A' a

  7078. 9 N% x$ e1 A0 q3 x: I" S% h
  7079.     ; The following is the list dimvars. It must be sorted in the same
    * C- N5 }8 f5 ?5 A
  7080.     ; order as the resfub returned from DDIM (ADS module).2 G3 h2 A) ~: n% Z& r! r# k! j
  7081. % C8 c' `0 \' F5 |
  7082.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"
    ' F0 g. H% R& U; n7 W. p
  7083.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"
    ; A8 \! b7 B' v7 [. H1 i
  7084.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe". X  H1 a* C5 c. M- C" _
  7085.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"+ b# }7 s7 T4 y
  7086.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    6 _; I; f; T% G1 m- `: ~9 B
  7087.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"" A" o9 \* u6 C* J
  7088.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"# q3 n$ x  f* {0 x3 f6 r# l! O
  7089.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"- Y) H6 a- l) i1 p2 p, L6 E
  7090.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"
    + E6 _% |7 T6 x- Q
  7091.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"
    4 V; u* S3 P  ?# a& G
  7092.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"+ _2 q+ H  j- q! L$ f
  7093.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"
    $ q, W# \9 t. N+ L5 |
  7094.         "dimtxsty"; B: H3 X6 a* g4 l0 S6 a
  7095.     ))
    / L2 X/ N' |8 F* M$ o( q$ X0 ]
  7096.     (progn
    ( E9 V: T) N+ Y
  7097.         (setq sv_dvlist (ddimen_getostate dimsty)$ ^9 c5 u: W* X' S  B3 z' a" {0 H
  7098.               txstyname (assoc 340 sv_dvlist); ?- ^: r. \+ D% t
  7099.               sv_dvlist (subst (cons 340 (tblobjname "STYLE" (cdr txstyname)))+ X( M% J% u# F, P0 W1 s
  7100.                                 txstyname sv_dvlist)
    " I1 w' P3 p% N5 S4 ^; o+ g
  7101.               dimlist sv_dvlist1 j0 W" u! D* b. _) w: g
  7102.         )
    1 D( R+ g9 v2 P. t3 ?4 H
  7103.     ). c8 X& s& m& x# ~0 N( I6 W
  7104.     (if (= dimtype "DDLEADER")8 S3 }/ s; E; ?5 b+ C2 A  Y& p
  7105.       (mode_tile "mod_format" 1)! z" w2 O4 m7 d5 u
  7106.     )
    8 X% z( E; I- y2 X" H
  7107.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")# [* }: Y0 T' A0 P; i6 z- f* U
  7108.     (action_tile "mod_text"  "(done_dialog 4)"). c/ J9 C* |0 u! d2 B
  7109.     (action_tile "mod_geom" "(setq dimlist (ddimen_dlg dimtype 11 dimsty dimlist))")
    % A8 d% c' g, Q! Z8 r9 u
  7110.     (action_tile "mod_format" "(setq dimlist (ddimen_dlg dimtype 12 dimsty dimlist))"): ^. I5 D) M/ o7 k( ]4 k
  7111.     (action_tile "mod_annot" "(setq dimlist (ddimen_dlg dimtype 13 dimsty dimlist))")1 l$ E: @" U$ L' `
  7112.     (action_tile "accept" "(done_dialog 1)")
    7 j) D8 S/ Z$ }- D
  7113.   )- H+ t( N# a2 W
  7114.   ;;/ {; Y1 L: S8 o" N! x1 y7 F
  7115.   ;; Get dimvars that have been restored./ z& W2 S( ?$ h1 ?6 y& r' R6 S" g  b
  7116.   ;;! g6 V1 n9 [- W& K7 l. {
  7117.   (defun ddimen_getvars (/ elm dvlist dv i)
    6 x% [! m' \: X( |: m! g' f1 m
  7118.     (setq i 3
      Y' E' s  q; m' @
  7119.           dvlist (list (cons 0 "DIMSTYLE")
    8 F' V# z4 K# u7 V- _
  7120.                   (cons 2 (getvar "dimstyle")) (cons 70 0))9 K  r! Z% F/ ~0 X
  7121.     )! j9 o+ H/ s& S5 t1 R
  7122.     (while (setq dv (nth i dimtbl))
    ( [  Y! n! J, g: l
  7123.       (setq elm (getvar dv)$ ~0 g7 T* V8 d! R5 X
  7124.             dvlist (append dvlist (list (cons dv elm)))
    9 a* l% ?$ ^1 C1 ]
  7125.             i (1+ i)! t8 r$ |; f. Y/ O: t; w
  7126.       )0 L6 v. P; p0 v  s" |
  7127.     ): B& R% H& }: R# T% C; r' \
  7128.     dvlist( [) ^7 e0 Z5 o) O
  7129.   )
    * T/ \" U' d. c3 B( B

  7130. 9 m3 r4 m$ N" k
  7131.   ;;+ ]& \1 |& C* N2 j0 s  g
  7132.   ;; Get the original states of dimvars. This is for DIMENSION entities.
    ' p& `4 N4 Y3 }' Z) M1 X. F( l
  7133.   ;;
    % R6 G" b# ]$ L6 ]9 a" ^, H
  7134.   (defun ddimen_getostate (dimsty / dvlist elm i dvvars)
    5 K) r% ?  @9 P# G5 C$ A0 W
  7135.     (setq dvlist (tblnext "dimstyle" T) ; Get a skelton list
    # \9 g( i% g* w
  7136.           dvvars (ddimen_getvars)       ; Get dimvars for that entity
    . s: m5 n! h% K
  7137.           i 1
    & E, l$ S! W; f  s
  7138.     )2 u1 Y+ m  j, Y; k. ]% S
  7139. - o/ d! N" W* N: |
  7140.     ; Create a list that contains values of the selected entity.$ M) h  X9 g5 \6 h* m

  7141. / B) V: M; v3 |5 d
  7142.     (while (setq elm (nth i dvlist))
    2 V8 l) `" s4 g  ?# |
  7143.       (setq dvlist (subst (cons (car elm) (cdr (nth i dvvars))) elm dvlist). O% P$ q; t# I/ n( u
  7144.             i (1+ i)
    9 ?" m2 J. b  X: R
  7145.       )) q5 q" {2 o9 O4 I, i, l
  7146.     )
    % \2 \% H1 e6 t% [" _
  7147.     dvlist. q0 i1 C* {/ \( n4 B; J7 }: l2 ?2 k/ T
  7148.   )
    & n" |9 h! e7 g. B( S7 s3 o
  7149. ! l3 F2 Y; G1 l# I
  7150.   ;;
    8 _7 W  N$ [1 S* U2 b5 E$ Z
  7151.   ;; Restores dimvars of the selected enity.: \$ B- j$ O! R! K- \- h, B
  7152.   ;;, k9 _; k6 g0 W0 ~% e! l* i
  7153.   (defun ddimen_dimsty_restore(/ dimtbl dimsvcurset en)/ c: |. C1 M) n
  7154.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"$ x% v& i* s; P$ w
  7155.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2") S$ C' I/ I7 }7 ]9 g( `
  7156.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    9 j8 _2 B9 w" I. S# v
  7157.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"5 O/ u7 N2 V) ^, J1 r7 z2 R
  7158.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    : o0 {" a2 U4 m8 @
  7159.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"
    % g% Y9 g! ~4 N2 U
  7160.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"
    * q  E0 S& [) e4 E/ W, `  G0 l5 n
  7161.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"
    * L1 v' O' a/ P, b
  7162.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"5 I- y$ ]" B( K! n! h; X$ E2 q
  7163.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"% A, q$ _' F( W) m
  7164.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"
    2 q* _& ?1 c( i
  7165.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"
    & a* |  L; ^4 ?- M9 L! R5 b: J
  7166.         "dimtxsty"
    . W6 T2 _# B! ?- j
  7167.     )): I2 M9 c1 @$ c! `* `
  7168.     (setq dimsvcurset (ddimen_getvars))  ; Save current variable settings
    / ]8 L5 g2 ^. e3 f& S: F7 v# B
  7169.     (progn3 d& z7 C3 e" y6 V
  7170.         (setq en (cdr (assoc -1 elist)))
    ' I7 C2 `3 D9 e9 I2 n- Z* {
  7171.         (command "_.dimstyle" "" "" en)
    6 d- U( |# P: T, h8 R
  7172.     ): M8 Z; |6 ~+ e# o$ ]& p4 ~
  7173.     dimsvcurset
    6 z9 Y8 o6 V: o( W: `
  7174.   )
    2 o0 b, {. f2 W* ^( }
  7175.   ;;' E; z* ]+ D9 c9 {( w/ P$ q
  7176.   ;; Modify Leader% ]7 J! Z& X+ _- e# p
  7177.   ;;
    0 ]% Q3 z$ z1 z
  7178.   (defun ddleader (/ dtypebit blkname bename sublist a  stname n dimtbl+ C3 L1 `+ u* [* U
  7179.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist
    , |+ Q6 z4 i! D; m1 G" {9 Z& ^
  7180.                    dimtype dimsvcurset), J7 u9 r# M0 l4 o# W% o, x& P8 Y
  7181.     (setq dimtype "DDLEADER"# y8 B: k" y3 T, x) ^& k( a
  7182.           dimsvcurset (ddimen_dimsty_restore)1 e2 k# q/ M& |( A6 g8 d, s
  7183.     )
    " p7 }2 {" k. g0 z8 e) y- K
  7184.     (if (not (new_dialog "ddleader" dcl_id)) (exit))
    % k% I; f- s2 G0 t& G: Y
  7185.     ;; Set initial tile values
    & ?: f  T& a+ A8 x; j$ Y
  7186.     (set_tile_props)
    6 ^( ^- B3 e8 |* ]; E
  7187.     (set_dimen_props)
    ( R) g' t/ X" @
  7188.     (set_tile_handle)
    , j9 e8 k5 `+ B0 Y/ |
  7189.     ;; Define action for tiles9 Y2 n2 p6 X4 r; Y) i, ]
  7190.     (set_action_tiles)
    % D2 ]* f/ w. Y% m1 R
  7191.     (mode_tile "mod_text" 1)6 |$ c" D) I  g) j" S* @
  7192. & r2 Z# J, O1 R% j) `6 u
  7193.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")
    $ L% v% U& r; M8 E6 R6 _0 m
  7194.     (action_tile "accept" "(setq leadtype (get_tile \"s-s\"))(setq arrow (get_tile \"arrow\"))(done_dialog 1)")
    . D" ]) e1 K/ `- W1 X0 f
  7195.     ;; Get ARROW and TYPE.
    " s- E* V3 d; O/ m2 I4 n/ s
  7196.     (if (= 1 (logand (cdr (assoc '71 elist)))) (set_tile "arrow" "1"))
    6 ?/ U; v. ?" b
  7197.     (if (= 1 (logand (cdr (assoc '72 elist)))): A* K5 Y% R# I$ \/ I
  7198.       (set_tile "s-s" "spline")
    . {& ^9 |: m: ?; {. O
  7199.       (set_tile "s-s" "straight")# W- j  P4 }% i- N8 [- b0 O
  7200.     )
    1 s9 D* |  H1 B' A
  7201.     ;; Start the dialogue.2 P# g% l" s" {
  7202.     (setq dialog-state (start_dialog))
    & v8 C* ?' x* C! o
  7203.     (if (= dialog-state 1)6 d8 b1 u1 H1 q- Z" k
  7204.       (progn
    * y( n# E) L/ [% n
  7205.         ;; update the style
    # ]2 j0 ]  j5 o' Y; o& c1 x  f8 B
  7206.         (if (/= dimsty stname)' X& y$ _& O$ h# U: A" k  x+ L" E
  7207.           (progn+ w- m, h' }  u  ?# `1 ?
  7208.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    4 C$ Y9 n8 y& u; E4 `; [  a
  7209.             ; doesn't have it.  P, M/ A1 N/ Q" c! \$ F* I
  7210.             (if (null (assoc 3 elist))% h2 F, p, S* f
  7211.               (setq elist (append elist (list (cons 3 dimsty))))
    / L3 _8 U1 [- F9 i/ K0 b5 w# L
  7212.               ; else just replace it., r  W* c, m. E5 C2 c& U
  7213.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))- r3 g! {. }. k
  7214.             )
    & }' c; @0 V9 J; k6 q" d
  7215.             ; refresh sv_dvlist with new dimstyle.! O( d% u, t/ b3 `
  7216.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))4 |( E: c( e2 n$ ]% g$ h0 H% q
  7217.           )) m( P- f* O$ J8 a. e9 [: Y5 R" I; P
  7218.         )2 B2 m. g# m8 H% q( x( P
  7219.         (if (not (null dimlist))   ; attempted to change dimvars
    & F- G- `+ `' X5 `
  7220.           (ddimen_complist sv_dvlist dimlist dimtbl)
    2 s$ i; z7 I7 l0 X
  7221.         )  _2 A& J0 a4 R6 ]- o7 G
  7222.         ;; update for ARROW.
    4 G7 z- b/ f& p; p& z$ k
  7223.         (if (= "1" arrow)
    6 I/ x4 J. f, f0 H2 O- N
  7224.           (setq elist (subst (cons 71 (logior 1 (cdr (assoc 71 elist)))) (assoc 71 elist) elist))
    ( T' ~" G8 V- F  X% V0 {9 {3 ?5 [
  7225.           (setq elist (subst (cons 71 (logand (~ 1) (cdr (assoc 71 elist)))) (assoc 71 elist) elist))& P0 O' ]  j2 L6 a+ Z; g
  7226.         )$ `7 h& r1 U: i
  7227.         ;; update the TYPE.
    7 f' {: n" G! a; h5 S$ R9 }
  7228.         (if (= "spline" leadtype)
    3 [/ U. ~; J9 T6 D: i2 k, c' ~
  7229.           (setq elist (subst (cons 72 (logior 1 (cdr (assoc 72 elist)))) (assoc 72 elist) elist))- e) R& f1 k% S1 V0 W
  7230.           (setq elist (subst (cons 72 (logand (~ 1) (cdr (assoc 72 elist)))) (assoc 72 elist) elist))/ m: O  n9 k. l! [8 A" x3 T# {
  7231.         )
    1 Q4 h  N( G4 L$ H  b" z. v4 n
  7232.         (modify_prop_geom)
    - w; l9 `' S  ?+ B2 s- v, E3 [
  7233.         ;; update the Color' d' m/ i7 \. k7 O; T- }
  7234.         (setq elist (subst (cons 77 ecolor) (assoc 77 elist) elist))
    $ @& m9 @2 Y7 b: L8 ^+ o  s
  7235.         (entmod elist)* C( b- V3 j( l* `) r
  7236.       )4 A7 V/ `# a  N* l" F. S7 z5 i$ ]( |
  7237.     )
    " ^( f5 q- |# M) h3 e0 B2 ~
  7238.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    # b) h3 ]  _9 O" p# {' K
  7239.   )% B% f2 _) N" J8 G% g+ V$ P% w0 \
  7240. . ]4 s. t* }" q$ O0 N( Y5 Q
  7241.   ;;
    - m& e, B9 }- {- o
  7242.   ;; Get dimvars of a dimstyle with overrides.
    ' H5 q% k) c% V# W9 |
  7243.   ;;8 `# I. a) A" Q2 M# n& k9 ?

  7244. 3 ?5 Y8 O9 ^, Y5 Y
  7245.   (defun ddimen_getdimvars (dimsty / dimovr dvlist elm i)
    , z" [8 m/ _. [8 |$ \; Z6 h
  7246. $ a+ N3 g8 y7 c
  7247.     ;; Get override information for the specified entity.
    3 p( v. W. s4 R: s8 V+ f! q  N9 b9 m
  7248.     ;; Leader/Tolerance cannot be restored by DIMSTYLE command, so we
    6 X2 K3 h% F/ u5 [
  7249.     ;; must obtain override information through this tedious operation.( I  p& N5 Z" E$ E, u$ }; v
  7250.     (setq dimovr (car (cdr (assoc -3 (entget (cdr (assoc -1 elist)) (list "*")))))
    2 R3 _) K- k9 E  p
  7251.           dvlist (tblsearch "dimstyle" dimsty)% A0 Z& w  i3 v
  7252.           i 2% |; j  O  u4 y; U6 z
  7253.     )0 j, N5 }$ f: q  U
  7254. . j) Y, q: g9 `) \5 s3 \
  7255.     ; Update the list with overrides if overrides exist.6 y' E8 D% v7 E/ Q5 e
  7256. * R/ @# Z% Q! R& H& [3 r: u6 p' O
  7257.     (if (and dimovr (= "DSTYLE" (cdr (nth 1 dimovr))))
    6 Y/ a+ ]5 l' l
  7258.       (progn
    5 y0 q- j' U/ \* _
  7259.         (while (setq elm (cdr (nth i dimovr)))) T$ D3 l$ j+ b# g' b
  7260.           (progn8 h9 G; {5 Q# C# I0 s
  7261.             (if (or (= elm "{") (= elm "}"))
      _& V3 C2 \5 M5 l
  7262.               (setq i (1+ i))
    ) R6 K! X+ E9 T1 q+ f
  7263.               (progn0 N1 S. y1 b: e# ?  G2 j8 J/ x
  7264.                 (if (or (and (< 180 elm)0 j& J, K% S* G" j" A
  7265.                              (< elm 190)
    ( T" m' U+ V; B9 O( k/ u
  7266.                         )
    1 m' `7 [$ B" x0 }: V5 r
  7267.                         (and (< 80 elm): U( [# b2 K0 U$ A1 A
  7268.                              (< elm 90)
    + Q5 b) \' V+ M4 n: b1 h; m
  7269.                         )
    0 `* ^; b7 P' m6 P- a  T( G$ M
  7270.                     )
    8 `3 _& I% z+ ]1 a3 V
  7271.                   (setq elm (- elm 10)). t# ]/ h; y& d" X1 ]9 Y% g
  7272.                 )9 ^" i' k+ X2 y3 S
  7273.                 (setq i (1+ i)- v! d4 ~* P3 ]4 w# g- Q& L
  7274.                       elm (cons elm (cdr (nth i dimovr)))) R1 B" a0 G* ]; p
  7275.                       dvlist (subst elm (assoc (car elm) dvlist) dvlist)
    5 J# ?( D+ k. x/ f  J9 d
  7276.                       i (1+ i)* F! u. `9 I& g5 U
  7277.                 )
    3 c2 Y1 D; i% k; P- I; [& m! a
  7278.               )- ?/ d8 f1 N2 J# ^
  7279.             )
      d" C/ R2 k4 Z: m
  7280.           )( u( j% y, E! D7 _7 g" F& L7 I
  7281.         )
      h8 |8 V" E3 C' P- s
  7282.       )
    1 N. m; k$ \8 u/ Z4 q' ]% B& G3 [; R0 N
  7283.     )
    ) j' K' J# ^  I: Z3 T% y/ F
  7284.     dvlist
    6 \; p& C7 @+ Q9 a' P! G+ Q  z. q& W4 j
  7285.   )/ n* U1 L3 n% i' r! }7 [+ X

  7286. / V- e' J! d6 E, `# N0 C% R% N
  7287.   ;;6 c; V# H  H; w! Q2 X
  7288.   ;; Modify POINT
    0 \7 F% Y" h8 A& C: w% a/ R, @2 B) A
  7289.   ;;  D. E1 P% ^, i7 ~
  7290.   (defun modify_point ()0 j, L6 L9 ]4 F+ ~0 \
  7291.     (modify_properties)
    0 S, R, ~. w$ T8 @
  7292.     (setq pt1 (list x1 y1 z1))3 d) i( v7 v) U! a3 S
  7293.     (tempmod pt1 10 0)
    , w5 g! e" [; x- c5 _
  7294.     (entmod elist)/ }% `# r/ E- f9 v' N
  7295.   )4 p/ G% Y7 e5 Z, R  B" g

  7296. # L! k! b. e: G; j4 @+ V# ]+ S0 P
  7297.   (defun ddpoint ()
    ' a, p1 F" V: A9 C' O
  7298.     (if (not (new_dialog "ddpoint" dcl_id)) (exit))! P; V+ J! B( {
  7299.     ;; Set initial tile values8 E& e% `9 \( r( V. X$ K
  7300.     (set_tile_props)
    0 D7 q, _0 w- i; V! I( \
  7301.     (set_tile_handle)
    * o9 |* F; u9 k& g* a, v" |
  7302.     (set_tile_pt1 0)6 L3 O- k- u" j7 Q1 f( F) _
  7303.     ;; Define action for tiles; b* _; r7 P% x% W
  7304.     (set_action_tiles)
    , }0 t: \" ?. F0 @% s0 }
  7305.     (setq dialog-state (start_dialog))
    9 d, b- C* |, x
  7306.     (if (= dialog-state 0), p. M6 G! y+ P" F$ q8 X: `# N) r
  7307.       (reset)
    8 i; t, Z1 O( L  Q$ T$ H4 H
  7308.     )
    " F0 C( [' J% J& V# C0 D- `% z! d
  7309.     (if (= dialog-state 3)# _! A8 A+ r% x0 @0 d2 ~) `
  7310.       (progn: W0 A3 X; y0 d
  7311.         (modify_point)3 e3 u3 k+ }- W0 v% p
  7312.         (setq pt1 (getpoint (list x1 y1 z1)  "\nPoint: "))
    * p5 E' s4 |* X7 k% M% k
  7313.         (ver_pt1 0)7 |: L6 T$ U3 s4 W, m9 J6 G4 D; z
  7314.         (ddpoint)
    % [) E: C9 B0 T, [. C8 n
  7315.       )$ A9 ]* x) T5 m2 i, T$ H/ `4 E
  7316.     ); }; p7 G. o4 i+ B  T; o1 y0 H1 z
  7317.     (if (= dialog-state 1)
    . }/ e. m0 @  S
  7318.       (modify_point)! F9 b9 b& v2 @
  7319.     )
    6 c4 h; j8 J0 G& |4 g4 O" ]4 h
  7320.   )
    , }. J2 o/ x$ ~0 N/ `1 Y
  7321.   ;;
    * R7 N3 I7 P  C" U
  7322.   ;; Modify LINE7 {8 m+ l$ ]' r9 O
  7323.   ;;4 L" R) D- k9 a- k
  7324.   (defun modify_line ()
    ! K8 r1 m/ D4 D7 g
  7325.     (modify_properties)
    / m8 c) W1 F* V
  7326.     (setq pt1 (list x1 y1 z1))
    $ z, [2 }0 `' A8 Y
  7327.     (setq pt2 (list x2 y2 z2))1 {4 `# k3 r$ f" C: M
  7328.     (tempmod pt1 10 0)& K2 J, S2 m; |: W
  7329.     (tempmod pt2 11 0)
      \2 z; m" ]  n' ]
  7330.     (entmod elist): b9 d  Z  V* W! a' ^( |7 k. I
  7331.   )
    # c2 @3 V+ l: x( V7 w% l  e/ ]6 E) Y
  7332.   (defun ddline ()
    / }/ r; c$ `* Q
  7333.     (if (not (new_dialog "ddline" dcl_id)) (exit))
    - u0 q8 q7 s. {) X: f) l
  7334.     ;; Set initial tile values
    % x# ^/ R+ i8 ^
  7335.     (set_tile_props)
    ; `3 U2 l8 D5 O2 f4 `3 b
  7336.     (set_tile_handle)
      C0 X8 I/ `% [
  7337.     (set_tile_pt1 0): H5 \9 e8 ^  v$ ^1 A
  7338.     (set_tile_pt2 0)) a4 r. Y0 g" S( u! s
  7339.     (line_calc), I# N3 O1 \# o: Z
  7340.     ;; Define action for tiles) O2 d5 A8 L5 I" V( U
  7341.     (set_action_tiles)3 b8 Y" v9 i3 d: f8 U
  7342.     (setq dialog-state (start_dialog))
    $ l" Y! J, r) I8 j
  7343.     (if (= dialog-state 0)
    4 u! t5 v2 c5 x/ F7 c4 s( F
  7344.       (reset)
    8 T, Q0 M3 y. u% B' \2 [
  7345.     )% a/ ~$ o3 V9 x7 U* ^2 o. I
  7346.     (if (= dialog-state 3)
    ) r9 l* X$ F: X& O  O. @( m9 S2 @0 Z
  7347.       (progn5 o, P1 `! w( N5 G. E
  7348.         (modify_line)
    ( i9 X# [6 E7 w7 j* x3 @" A/ z
  7349.         (setq pt1 (getpoint (list x2 y2 z2)  "\nFrom point: "))0 f5 P( f1 o6 o! R  V& K9 a6 L
  7350.         (ver_pt1 0)3 r% o- h+ @, Z8 d( ]
  7351.         (ddline)
    ) S! u/ R- v, T; B$ A
  7352.       )
    ' _  E: l  D5 K* G* `
  7353.     )
    0 q6 k+ k; l, e/ E0 x$ U0 \
  7354.     (if (= dialog-state 4)' E' O! ~' q: n# W8 B/ o8 Y6 t
  7355.       (progn
    - Q4 s, L  _7 @) N" ?7 t% n( R! n8 }7 I
  7356.         (modify_line)) t" y9 J$ [) c9 V7 Q, R9 E
  7357.         (setq pt2 (getpoint (list x1 y1 z1) "\nTo point: "))! u. k- Z# w5 F* q  e
  7358.         (ver_pt2 0)
    & T# _( q0 p& ]9 _3 |1 [/ ]  P. `7 \
  7359.         (ddline)
    + [& t: r2 {1 i' M8 V; V  e, ^
  7360.       )+ a8 u8 |# ]( Z6 s6 ^
  7361.     )
    ! o' i* ^! X9 R: d
  7362.     (if (= dialog-state 1)
    6 \& Z3 ?( J8 Q) @8 ~
  7363.       (modify_line)
    8 Q- ?7 F) p5 q* M# z7 G. q& k! ~
  7364.     )  E6 j! B% V  C
  7365.   )
    . C  M, [% `7 ~# M  y6 l& {
  7366.   ;;
    2 P/ f8 R, d4 r+ f2 A. a
  7367.   ;; Modify MLine* u$ l( ^5 b; `" B. h0 O/ q$ x5 v
  7368.   ;;
      o+ r% e; k4 g+ `5 t  ]- G
  7369.   (defun modify_mline ()
    8 z0 V7 ^8 J0 I
  7370.     (modify_properties)
    4 c6 R$ A6 n0 Z! n9 Y
  7371.     (entmod elist)$ T, h# V. ?" W9 e. x$ Y% S
  7372.   )
    6 B( @7 t$ K: O
  7373.   (defun ddmline ()
    9 ]- v% C' u% V. K; r9 a
  7374.     (if (not (new_dialog "ddmline" dcl_id)) (exit))
    * j+ V; A0 n4 R0 V: z. i" W) I
  7375.     ;; Set initial tile values- }; A7 c" U6 l4 e: b
  7376.     (set_tile_props)8 O: p1 g& z8 k% T# ~
  7377.     (set_tile_handle)7 p( k; e( w, s! O. t
  7378.     ;; Set mline style text field.
    * Z4 `4 l4 w1 R# h$ j. b
  7379.     (set_tile "ml_style" (cdr (assoc '2 elist)))
    * [- j; r9 X2 ^' U7 y3 E, w
  7380. , v( I* ~- G9 w& i8 `
  7381.     ;; Define action for tiles
    5 ?! Z/ W' S) T; E
  7382.     (set_action_tiles)
    ; e# t) f% S5 Z  A" ^
  7383.     (action_tile "ml_edit" "(done_dialog 3)")3 N! E" \2 B) r8 t+ M
  7384.     (setq dialog-state (start_dialog))
    % N/ ]% Q/ j2 z4 Y# U9 v, B5 y
  7385.     ;; Dialog cancelled, reset to original values.
    % ~6 ~, m' [! e$ Z, P: ?
  7386.     (if (= dialog-state 0)
    & z% d& q- i! W# j& ^1 R6 Y
  7387.       (reset)+ X0 A" ?% [( S1 x
  7388.     )
    # o1 f6 c+ E  O5 A; C5 i- h" m
  7389.     ;; Dialog OKed, update the mline.
    ; Z3 B( q' B2 o
  7390.     (if (= dialog-state 1)0 a8 T; i7 @- `2 Q$ Z1 Z
  7391.       (modify_mline)
    4 f+ t) ^& }- N. @! T3 ?
  7392.     )
    % R( o! M+ p% s4 _
  7393.     ;; Edit Mline, call MLEDIT.
    * E& ]) I& d: V3 q& @
  7394.     (if (= dialog-state 3)7 D( O7 I; U$ ~$ W' Y
  7395.       (progn
    7 k! S6 q2 W3 w" @$ l
  7396.         (modify_mline)7 [% }  b! @7 w. U9 F1 K
  7397.         (command "_mledit")  @0 ?6 x. ^( Q& ~* W
  7398.         (ddmline)% x. ~: F1 N# Z3 [$ W! l. Z
  7399.       )& j4 D4 A+ I5 J6 ?" P
  7400.     )2 a. |2 D( i# k) C. a
  7401.   )  X2 n" e8 L$ A! `: Q0 P& @
  7402.   ;;
    " v0 F+ D, A! l) X: |1 v! Y. H6 f
  7403.   ;; Modify Xline
    1 l4 j) s6 H. b* S, S. e: m
  7404.   ;;
    ; X* u% q4 |: o; _
  7405.   (defun modify_xline (flag)! x3 O% b$ J* F
  7406.     (modify_prop_geom)
    % L# W$ Z8 e+ G' h1 r# o5 O& g( e
  7407.     (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))
    . L) R" }- o( [2 `( t" o
  7408.     (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))) m; C! p9 i4 n3 Z; u
  7409.     ;; Update the Root point.% ?7 A- Q5 p0 i6 E9 @
  7410.     (setq elist (subst (cons 10 (trans xline_pt1 1 0))
    ! ^+ M& t0 l" i3 S: V6 P
  7411.                        (assoc 10 elist)) D% F, t& q) D9 k8 s, ]
  7412.                        elist
    : a% j6 X9 R* N- c' P! q2 k! `" f
  7413.                 )
    $ S4 H! J- G" u( U. |
  7414.     )
    * ]* z9 Q3 x1 q: u  A: B
  7415.     ;;
    1 A% ~1 ^8 ?( u% M8 A- ^3 ~. b+ e
  7416.     ;; Calculate new Direction Vector WCS
    ; m% L: @8 H$ W" B7 U
  7417.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))& y/ M' z# o& ?/ E& w& t

  7418. . t, C& z4 h$ C7 I$ a
  7419.     (setq temp_dir (trans xline_pt2 1 0))
    1 z" j& ~5 ?) l+ E' D7 ~
  7420.     (setq temp_dir_x (car temp_dir))
      g( t) W5 I* l+ h. w) I- S
  7421.     (setq temp_dir_y (cadr temp_dir))& p- W: h3 U) D- R& g7 }* H
  7422.     (setq temp_dir_z (caddr temp_dir))
    8 U1 V+ J, q# f2 m
  7423. # L1 w4 @: P$ x) g; ?- ~
  7424.     (setq temp_xline_pt1 (trans xline_pt1 1 0))7 R- u) |1 H5 ?
  7425.     (setq temp_xline_x1 (car temp_xline_pt1))
      b- D) e" W0 H% O. {
  7426.     (setq temp_xline_y1 (cadr temp_xline_pt1))$ j# m9 V# D) R2 r
  7427.     (setq temp_xline_z1 (caddr temp_xline_pt1))4 o7 r( \; s9 b' ]- W+ m- c
  7428. / E" Z/ }5 y. U2 z
  7429.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    2 O+ G% b. U+ _) ?9 V1 f
  7430.                          (expt (- temp_dir_y temp_xline_y1) 2)6 ?4 a: [( l! s, Q
  7431.                          (expt (- temp_dir_z temp_xline_z1) 2)) L, y5 o# }2 U, f- `7 x7 a
  7432.     )))
    - Y& F% D/ n5 n1 F, h
  7433.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))
    # p7 C( ~0 w/ u4 g
  7434.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))- ]6 h6 l: S! \! R6 G8 M9 W* d
  7435.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))/ g! w; {* n) s8 h% S+ C
  7436.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))4 X; T0 ~4 l) Y: K$ X( N, F
  7437.                        (assoc 11 elist)4 D. N( h4 u: y9 [3 ~3 w
  7438.                        elist
    5 c6 P& M" g( B
  7439.                 ), ?+ T! q& w8 u! ?% j4 d' k" r
  7440.     )
    ! i7 E+ B& t: ~6 \9 b9 K8 B2 `
  7441.     (if (= 1 flag)8 Y1 J. k$ G1 j0 g; ]" Z
  7442.       (entmod elist)
    3 v% \/ @6 }7 X+ t1 {0 J
  7443.     )
    + u( R8 Z# Q$ Q" \& R7 Y9 i2 ^
  7444.   )# @: Y$ b: ]. n$ C3 X
  7445. . U( L- z2 h' m' g) `- x5 R
  7446.   (defun ddxline ()# B6 p7 g" y, N, Q9 a8 @9 j
  7447.     (if (= etype "XLINE")+ q( T; V, c( k
  7448.       (if (not (new_dialog "ddxline" dcl_id)) (exit))
    : \1 W# x, N& g4 Y4 w! }* H
  7449.       (if (not (new_dialog "ddray" dcl_id)) (exit))
    5 B; V' n$ l" K5 T8 Q1 G
  7450.     )
    # G4 E4 E- C" H
  7451.     ;; Set initial tile values6 `. O, U  g/ Q0 c3 Z
  7452.     (set_tile_props)
    $ I4 t9 G6 |" t% A  l
  7453.     (set_tile_handle). i8 Z. [8 C! N& w& a+ e6 e4 [9 P
  7454.     (set_tile_xline_pt1)' Y4 z; Q, m  H# x- w! a
  7455.     ;; Convert to UCS and post Direction vector.7 i0 @! l& d1 b. p" C5 d! b) s1 @
  7456.     (set_tile_dirv)
    . r- {# }6 F, K, Q8 }1 S
  7457.     ;; Calculate second point by adding Root Point + Direction Vector.0 F% X! @7 k  Y/ `* h
  7458.     (set_tile_xline_pt2)" G6 L+ C# L* N1 O
  7459.     ;; Define action for tiles
    ' E+ _# M& D# L0 a/ [
  7460.     (set_action_tiles); A. }( B" o0 Q
  7461.     (setq dialog-state (start_dialog))% m! l( Y9 G3 x  ~
  7462.     (if (= dialog-state 0)
    1 v2 U0 M9 H8 ?. U' ~" c( O- @
  7463.       (reset)* ~. ~4 S8 g7 B) q# k
  7464.     )0 x. r2 T+ n& E1 [
  7465.     (if (= dialog-state 3)/ D1 o( z; Z, ]1 O
  7466.       (progn& A* l. B4 [. {; u' N6 P& ?
  7467.         (modify_xline 1)
    4 M( G- f0 i- x
  7468.         (while (equal xline_pt22 h; U8 b0 c1 r8 o$ k/ T
  7469.           (setq xline_pt1 (getpoint xline_pt2 "\nRoot point: ")) 0.000001)
    1 w  h% P& W8 `8 u' E& p
  7470.           (princ "The Root point cannot equal the Second point.")& g5 R9 ~* Y% _" w
  7471.         )
    # z* |) Y3 ?; `* R9 @
  7472.         (ver_xline_pt1)
    / @) B& m& C5 O( n% }: C) }, g
  7473.         (ver_xline_pt2)
    ! M  h6 H! ]3 Q$ R* R
  7474. (princ)
    - s- L3 a6 H! k4 N. z  n/ N+ ~
  7475.         (ddxline)
    ) Q6 F; m9 I- Z' F
  7476.       ): d5 U. |  t  s
  7477.     )
    : j5 [; [5 j9 M" E
  7478.     (if (= dialog-state 4)5 s5 w6 }" k! [6 d0 m) Y; q' I
  7479.       (progn
    3 N, X- r. F4 N
  7480.         (modify_xline 1)
    ' D5 U0 k3 P) e2 J4 e& T0 R% g
  7481.         (while (equal xline_pt1
    - F, n$ Z$ s& B1 }: H4 O  h( Z( D8 g
  7482.           (setq xline_pt2 (getpoint xline_pt1 "\nSecond point: ")) 0.000001), E0 [4 ^! r( t9 K) V
  7483.           (princ "The Second point cannot equal the Root point.")2 D+ p, ?) p6 o. h
  7484.         ). l- n" Y5 b5 A, K, u
  7485.         (ver_xline_pt2)
    . n+ ?, n, b- Z. K6 V
  7486. (princ)1 W2 S/ n; a& a% c3 s
  7487.         (ddxline)
    / i- z! t; t1 }( e
  7488.       )* o: ^) I4 B8 N+ C* B1 B. {
  7489.     )
    - |: E4 o5 T8 P$ I
  7490.     (if (= dialog-state 1)
    4 d, Z- |+ I. t9 L9 E/ Y4 ]+ ^  d
  7491.       (modify_xline 1)
    % o$ U+ h$ S' F* z& I9 [0 [
  7492.     )) E$ k+ A/ u  I# W# C3 x' E- m0 ^
  7493.   )  q/ b, k) r4 J+ x' a7 @4 a) ?
  7494.   ;;
    1 ?2 K& w- s0 `; d* J# [; J
  7495.   ;; Modify ELLIPSE/ q0 g: Q; v) S+ I+ c
  7496.   ;;
    # p" H2 y& \& a: ]* S
  7497.   (defun modify_ellipse ()
    ' S0 h  y* g& F  N- j7 G1 N
  7498.     (modify_prop_geom)
    ! E4 w8 |4 ~5 X6 d% L3 C3 ]
  7499.     ;; Update Ellipse Center Point value.
    ( V1 h' ?1 N; `1 _
  7500.     (setq pt1 (list x1 y1 z1))) }: h9 M0 B2 Y) u" ]4 z
  7501.     (tempmod pt1 10 1)- r% {  D8 E5 F1 c8 @% Z: M
  7502.     ;; Update Start Parameter value.: j' w5 {# ?. q9 W* [$ N9 _
  7503.     (setq y_val (sin st_ang))
    # g6 ]( T' `; c' a5 ]
  7504.     (setq x_val (* rrat (cos st_ang)))/ _: k% K& ?  A0 u8 [0 z
  7505.     (setq stparm (atan y_val x_val)), _: v5 c# i5 k& S
  7506.     (setq elist (subst (cons 41 stparm) (assoc 41 elist) elist ))
    " W! X! G! S; P1 F3 X$ _# N# T6 L4 l4 T
  7507.     ;; Update End Parameter value. Normalize it, if it's less than3 e& @0 Z. T* v3 g4 m& T
  7508.     ;; the start parameter.2 ?" h& ]7 b9 Z, H  x
  7509.     (setq y_eval (sin end_eang))
    7 y2 J# z" N4 p$ S8 s: [
  7510.     (setq x_eval (* rrat (cos end_eang)))
    $ c9 c: Z* P% u$ X" J, B- p
  7511.     (setq endparm (atan y_eval x_eval))
    0 o' d- S* E7 h, G  Q6 [* w9 o
  7512.     (setq diffparm (- endparm stparm))5 ^6 B: M9 ?+ _* n# T% r
  7513.     ;; Epsilon of 1.0e-6 radians for checking a zero length arc.
    $ D% P4 o* o" H1 i+ D. x* r, ]
  7514.     ;; Since zero length arcs are not allowed - construct the full
    ; C- t( T$ W- r& v5 f- Q$ O8 R8 k" _4 P
  7515.     ;; ellipse in this case.
    ' x# }* o( l% `
  7516.     (if (<= (* diffparm diffparm) 1.0e-12)8 j& k$ ]7 }1 s. @
  7517.         (setq endparm (+ stparm (* 2 pi)))& l2 {" a! E# J8 q8 k
  7518.     )
    * }1 ~1 W; k% T
  7519.     (if (<= endparm stparm), m# c4 E; }$ U# ?8 Q9 r
  7520.         (setq endparm (+ endparm (* 2 pi)))4 y8 h9 l$ ?* ~# |
  7521.     )! [" h6 l# b6 C$ t& r
  7522.     (setq elist (subst (cons 42 endparm) (assoc 42 elist) elist ))
    6 r4 L( a- y! @) o5 V+ N
  7523.     ;; Calculate the Major Axis Vector by first calculating& i* T- L" i( M1 d; u. ]* n: @
  7524.     ;; a unit vector using the old Major Radius value. Then- \+ O+ Z/ p1 l; J( m
  7525.     ;; Multiplying that by the (possibly) new Major Radius% ]" V* U- ~2 r; |/ Z+ l
  7526.     ;; value to get the new Major Axis Vector value.. B$ G6 g. U  u7 I. [4 t1 B( Z6 e
  7527.     (setq unitxx (/ xx old_majrad))
    & d1 T. ]( C. g) K8 j" w3 b
  7528.     (setq unityy (/ yy old_majrad))
    , H8 H  w& I7 z0 p3 `  E) W- l
  7529.     (setq unitzz (/ zz old_majrad))
    6 |7 Q8 l+ s% u0 F. e6 f
  7530.     (setq newvecxx (* unitxx majrad))
    ' H7 @% x& s9 P: `& M
  7531.     (setq newvecyy (* unityy majrad))
    1 H4 Y3 B! X) ~. f( [
  7532.     (setq newveczz (* unitzz majrad))$ I! V- X) A, F
  7533.     (setq newmajaxis (list newvecxx newvecyy newveczz))' N* ^$ Z8 n. V! O8 o' F$ O
  7534.     ;; Update Major Axis Vector value
    " t/ \5 v( T* n0 ?: ^
  7535.     (setq elist (subst (cons 11 newmajaxis) (assoc 11 elist) elist ))
    ( C9 ~  v; X1 c: S: ]: @2 w
  7536.     ;; Update Radius Ratio value  ~& ~- I5 x$ t5 {2 w- d- |
  7537.     (setq elist (subst (cons 40 rrat) (assoc 40 elist) elist ))
    " s( c) ?0 R! ~. v1 Z
  7538.     (entmod elist)
    ' U/ N$ ~6 y  w2 M! ~5 y
  7539.   )% A% e# k% Q2 I( r4 c

  7540. ! m4 r: C( x7 n) s" I
  7541.   (defun ddellipse (), g% M- c% |$ K& }* i4 h% A7 m
  7542.     (if (not (new_dialog "ddellipse" dcl_id)) (exit))
    ) p! g5 X1 e- D9 [+ e5 D
  7543.     ;; Set initial tile values) ~0 J. p1 D+ G" b/ @+ C: k" C
  7544.     (set_tile_props)
    & b) g, T) e9 h: y* M( T
  7545.     (set_tile_handle)* y4 `# v7 t: k8 j! g
  7546.     (set_tile_pt1 1)6 C8 U0 K. y( X8 `! {: L
  7547.     (ell_calc)3 F$ l  F/ z7 f; U. b
  7548.     ;; Define action for tiles: n2 x1 H" A( O1 n+ y
  7549.     (set_action_tiles)
    8 G, w0 ]( i; M! T" Q) b- i
  7550.     (setq dialog-state (start_dialog))
    8 Q# _3 E5 R& D2 n* ?, ~% B
  7551.     (if (= dialog-state 0)9 |& E) v7 O" m4 b# \: z3 `
  7552.       (reset): Y; ~3 u1 ^4 ^/ ^) a# m* b
  7553.     )
    + {% U! N3 m+ O, Z3 d
  7554.     (if (= dialog-state 1)6 U4 B% S+ d8 H$ [
  7555.       (modify_ellipse)
    ' O. h; Y8 x3 Q3 \1 M! q+ K
  7556.     )% T. \7 U" q6 s) A; H* O, A
  7557.     (if (= dialog-state 3)5 R' s- g% k* \  f" b7 r* G2 ?% }
  7558.       (progn
    # q5 i+ X% v1 f% \/ H
  7559.         (modify_ellipse)
    1 j  u3 v1 M$ M7 R. Z2 n  F: T
  7560.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))
    2 ]2 n* O7 h4 P% H
  7561.         (ver_pt1 1)8 {8 d5 K7 z! C. r2 \3 Z
  7562.         (ddellipse)6 ~+ c) @# G& E" s: i0 e3 I( ?
  7563.       )* w1 z8 ~+ v  T+ D# m- J$ c
  7564.     )0 k3 [: b$ e. u. E0 ]
  7565.   ): W( \% B- I) f& {$ E: O3 d( ?( M
  7566.   ;;
    2 p7 K/ `7 \1 J5 r- ]3 ^0 g
  7567.   ;; Modify REGION
    * U; O+ E( Q- E3 a% }& s
  7568.   ;;2 d0 k, U- \8 n7 q' N
  7569.   (defun modify_region (). u' G- ?4 z3 G2 j3 h. A
  7570.     (modify_prop_geom)- J* |0 W4 V/ q; n
  7571.     (entmod elist)4 S5 b% h5 M# }9 {# }  W! M3 U6 R
  7572.   )9 a% z& p8 {2 H; t7 g/ I

  7573. # z, N# z0 R7 s
  7574.   (defun ddregion ()
    " w5 D! E. E4 S6 p$ F$ o! K' K
  7575.     (if (not (new_dialog "ddregion" dcl_id)) (exit)). B- Q. y$ N( {  Z& [
  7576.     ;; Set initial tile values
    ) ]. X; o4 V$ x0 F; Z% T
  7577.     (set_tile_props). P# ?) l$ v' y2 e# I* W1 H0 Z
  7578.     (set_tile_handle)) j' g7 X1 I4 g! V4 F
  7579.     ;; Define action for tiles, W+ k; W: A. k1 u5 g
  7580.     (set_action_tiles)
    ' O; i+ e3 E* r6 C7 Z% K
  7581.     (setq dialog-state (start_dialog))3 ^0 e' L& H+ z. j
  7582.     (if (= dialog-state 0)1 r5 p0 v0 r; C0 }" n
  7583.       (reset)
    ! G) o7 E6 U3 g3 L  O  e
  7584.     )
    9 C9 j, B! e2 l
  7585.     (if (= dialog-state 1)" u  B5 |- n- F0 s7 q) x$ Y
  7586.       (modify_region)  p' [: [$ i7 Z. [* ^
  7587.     ). _+ g" c8 s  G
  7588.   )
      Y0 N1 ~; i, X( t& O' ^
  7589.   ;;4 d, K3 U& I% \9 q1 J& y2 ]
  7590.   ;; Modify 3DSOLID
    * `: t4 l0 S9 P& R' e6 {
  7591.   ;;
    ; n: R: G) {8 {
  7592.   (defun modify_3dsolid ()
    + k! A4 f5 ?7 A
  7593.     (modify_prop_geom)3 W- d7 \6 Q/ I0 e* a4 ]9 n% ?$ ^
  7594.     (entmod elist)) x' v' y7 |" [9 |
  7595.   ). m: ^3 R4 x& H- B5 C  R! b- ^
  7596. - R4 B  \% _; p
  7597.   (defun dd3dsolid ()4 r/ Y; r, a* Q4 [% m$ x
  7598.     (if (not (new_dialog "dd3dsolid" dcl_id)) (exit))
    ) C8 D  a5 ~: X) R. M
  7599.     ;; Set initial tile values
    * z3 W# q3 F; P' S) k. o
  7600.     (set_tile_props)
    , y$ Y. B3 A9 O1 ], l
  7601.     (set_tile_handle)% p& \& B& V$ h) X; e
  7602.     ;; Define action for tiles
    ) R4 h6 C. h# o5 ?0 _( Q
  7603.     (set_action_tiles)' m1 `9 }5 E/ \9 }3 b) @
  7604.     (setq dialog-state (start_dialog))& n1 O5 }2 y, m9 L
  7605.     (if (= dialog-state 0)
    $ ~3 a& w+ V/ i+ ^, w
  7606.       (reset)
    , ~6 o4 W% d1 u" c0 t
  7607.     )
    4 q) j: h# P$ a8 S- M+ F. t
  7608.     (if (= dialog-state 1)% {. l- i- B. q1 A
  7609.       (modify_3dsolid)
    , x: g" W/ P+ Q6 D, w
  7610.     )
    " y# |6 E7 ?0 F$ S& P
  7611.   )
    . o& j: N9 B* @
  7612.   ;;8 T4 o; L+ D9 |* u+ ^
  7613.   ;; Modify AcDbHatch
    0 g2 h. l, u' G# e
  7614.   ;;1 u: a* L0 a5 Q: ]3 w& [- y( {4 e/ \
  7615.   (defun modify_hatch ()9 T* @) c9 i% Q1 M) E/ C
  7616.     (modify_prop_geom)
    6 z6 q) M0 f, e9 v. b
  7617.     (entmod elist)
    ! r- j5 L- s7 V- K8 O
  7618.   )
    - a3 x: k1 `: J: a  }) B. v& l

  7619. 6 s4 i/ u) g! O' t3 e( l
  7620.   (defun ddnewhatch ()  ^- `* l8 u/ D3 h, N" _
  7621.     (if (equal hatch-elist nil)( k9 v' [% k/ p6 F% S# _+ P
  7622.          (setq hatch-elist old-elist)7 V- b1 U+ `8 B
  7623.     )
    1 i! B' u; @- x5 b) @1 d! Q

  7624. ; ~8 v* T  s# K% v) M
  7625.     (if (not (new_dialog "ddnewhatch" dcl_id)) (exit))9 Z+ G! }) C4 j0 g5 X

  7626. . D9 y" b* h) A
  7627.     ;; disable the thickness tile+ s: N. Z, p2 @% Y. H
  7628.     (mode_tile "eb_thickness" 1)- Z- ]* M! v1 W! |+ ]
  7629.     (mode_tile "e_thickness" 1)( H+ H& H. Q' d: K5 [8 z
  7630. % ]# Q1 U( V2 }: L5 d8 Q
  7631.     (setq help_entry "modify_associative_hatch_dialog")
      L- z" Q7 m( y
  7632.     (set_tile_props)+ x$ q# V9 P* z" z& K/ \9 ~
  7633.     (set_tile_handle)
      _/ Q2 m4 a* Q$ x

  7634. 3 }* X1 r. A0 Z% D9 S2 Z
  7635.     ;; Define action for tiles
    " `! q6 W# c, S% O
  7636.     (set_action_tiles)
    + `- H$ D3 x4 {+ @; I) \
  7637.     (action_tile "b_hatch" "(done_dialog 2)")& ?- |, r; y$ T1 p7 S; S4 C3 Z
  7638.     (setq dialog-state (start_dialog))
    ( }* O3 ~( [$ l, U! Z# c3 Q
  7639.     (cond
    ! C+ R  q1 V9 P2 z; g) H7 N6 g
  7640.        (  (eq dialog-state 0)& [. r' h+ I3 A- |% V
  7641.           (setq old-elist hatch-elist), @) K3 M) H7 H0 H7 Y
  7642.           (setq hatch-elist nil)
    - }$ F' b' @% q5 i0 J
  7643.           (if (= (checkforlockedlayer ename) nil)
    & E2 p" T$ v7 s$ s5 W  \' J" H
  7644.              (reset)
    ! ]5 |/ @; ~+ p( q$ e! b+ x6 X
  7645.              (progn         ;;; special handling for locked layer reset
    - m; `1 M/ V; i2 U. B( e0 R" F
  7646.                 ;; unlock the layer: k! f9 i3 y1 }8 G3 ]
  7647.                 (setq layername (cdr (assoc 8 (cdr (entget ename)))))  l( d. ?) K+ b0 ?4 E4 \# `: K! A
  7648.                 (command "_.-LAYER" "_Unlock" layername "")% K* E6 ]/ I* V) M- R0 N; H- g
  7649.                 ;; reset modifiction9 J' x( D7 L7 r! J3 k' Q4 p3 B
  7650.                 (reset)! Z7 E$ E& [# K4 I9 F
  7651.                 ;; lock the layer again
    ! O1 b1 ^; j# {% t) @
  7652.                 (command "_.-LAYER" "_Lock" layername "")
    ' s- Y: _0 n, h: Q; A2 x
  7653.             )
    ' x+ m8 [/ N8 q
  7654.           ): I' m% ~* P' w. L, x- U0 V7 i- D
  7655.           nil       ;;; makes (ddnewhatch) return nil for Cancel- A: x0 Q* K; w$ w& ~, D! V
  7656.        )3 _- T/ z7 ?, C
  7657.        (  (eq dialog-state 1)0 I: D8 @/ v# G- l
  7658.           (setq hatch-elist nil)+ _/ I6 b/ Q4 f' A5 g5 L( v% ?. S
  7659.           (modify_hatch)# [* Q- X' o+ E; k/ T
  7660.           T         ;;; makes (ddnewhatch) return T for Ok
    ' V/ E& ]! ?' e, E6 q
  7661.        )
    0 ?' Z  h: L6 T4 N' F
  7662.        (  (eq dialog-state 2)
    ! C* n. \4 }/ ]/ A" }/ q" |
  7663. 4 Z  p" N. k  E7 m- x# H0 a& P4 S
  7664.           (if (= (cdr (assoc 70 (tblsearch "LAYER" elayer)))
    % c- F3 m$ y$ A% f2 z
  7665.                  4* x, J8 N1 J7 Q# B5 N; g0 a. j
  7666.               )             4 @! v$ s: ?& _% z
  7667.               ;;; new selected layer is on a locked layer
    , {8 r- M* ?. V' X5 U9 z8 K& {
  7668.               ;;; we can simply modify the hatch properties( j( j5 O1 O: |3 |3 b1 ?0 f
  7669.               (modify_hatch): H$ X) M  G/ Y/ h% E! j
  7670.               (progn3 ?; S9 b8 ?+ B3 n1 D0 G) }
  7671.                     (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (cdr elist))))))
    . n6 X0 D, Z- n  y9 D
  7672.                             4
    $ Z6 j: f8 ]( v
  7673.                         )           
    & z* [  \! j, Z/ ?
  7674.                         ;;; We changed the layer previously and now the hatch lies on a locked layer.
      A! d& B/ d/ Z% o9 I
  7675.                         ;;; We have to unlock the layer forethat we can update the hatch properties.
    - Q  Z9 j3 t' D1 G0 X" `2 l
  7676.                         ;;; If we don't do that (entmod) fails to update to the new layer.
    ' ^3 N4 h  V/ h1 h( R& F
  7677.                         (progn' O. ^1 g& l/ u' I
  7678.                             (setq layername (cdr (assoc 8 (cdr elist))))" f- k1 F: P) U* A- V
  7679.                             (command "_.-LAYER" "_Unlock" layername "")     ;;; unlock the layer7 t8 T; C5 n6 @5 o% W2 n4 D
  7680.                             (modify_hatch)                                  ;;; update the properties
    # u7 v: _) Q1 V# L* ]0 P
  7681.                             (command "_.-LAYER" "_Lock" layername "")       ;;; lock the layer again
    / M7 U" e+ u+ Q' V7 u
  7682.                         )
    + @6 O1 P% ~& W3 R" C
  7683.                         ;;;  All other cases we simply update the properties
    ' e8 [5 Q( `, p# n
  7684.                         (modify_hatch)
    ! p- `* r1 S/ g/ N0 U. B6 m
  7685.                     ), W' o' ^, m$ a( R. |5 r6 ?
  7686.               )
    & w) B6 t- o! n$ v2 h
  7687.           ) " w9 Q8 b: Q6 L3 ^
  7688.           (if (= (checkforlockedlayer ename) nil)
    % P. W' p; r6 ?4 i3 i) x1 T
  7689.               (command "_hatchedit" ename)7 h/ W+ m6 B) u# y4 ~1 F$ A: j& D
  7690.               (alert ;|MSG111|;"The hatch object is on a locked layer.")- w# G: u1 C+ q- G  i, C! c
  7691.           )3 u) k5 T/ g' R- J2 M( H* |: ~) p
  7692.           (ddmodify ename)" k& f. Q4 ]8 u
  7693.        )
    4 q  r1 {/ d. w$ f: U7 B4 B7 ?
  7694.     )
    0 `' W% b; m- m8 M+ K& e) U
  7695.   )
    $ `" `6 E- q8 L
  7696.   ;;
    , d8 @5 l# ]  J! l# {: s/ A# L
  7697.   ;; Modify BODY& h4 M4 j9 J) Q& Y
  7698.   ;;4 T. `. p. y1 O/ H, A# P. N
  7699.   (defun modify_body ()6 b1 x: @# ~5 K# o. s7 L  W5 L
  7700.     (modify_prop_geom)
    + S, c2 l* v+ _1 E8 w' H  T$ P; a
  7701.     (entmod elist)$ P) u4 i# I1 H2 Q
  7702.   )3 f7 e0 x; P4 a; {% h

  7703. 0 t' Y# A8 ]; a) j+ B
  7704.   (defun ddbody ()
    ! h! m- F/ N/ J4 j
  7705.     (if (not (new_dialog "ddbody" dcl_id)) (exit))
    , y. E  o7 |2 l6 I9 e
  7706.     ;; Set initial tile values
    ; {9 \/ v$ {3 \& H) w
  7707.     (set_tile_props)
    " ^/ @) f: u# n2 K, S, }
  7708.     (set_tile_handle)
      w( G9 j8 L+ W" l3 A
  7709.     ;; Define action for tiles
    & `, n) ?# Y: ]  b  p
  7710.     (set_action_tiles)
    1 D. N; e. A7 e% Y8 U# o
  7711.     (setq dialog-state (start_dialog))
    : X* N' M  ^9 M1 ^  [& p+ E# z
  7712.     (if (= dialog-state 0)$ n5 F  n9 |  G9 J  g: P+ I) D
  7713.       (reset)
    - H2 m! a& `4 _5 Z1 M3 `
  7714.     )
    $ Z7 {% `& C4 j) D1 ~
  7715.     (if (= dialog-state 1)
    % g) k- ?3 w  {& n. }2 i$ \9 k4 x/ V
  7716.       (modify_body)
    & ^1 }( [, ^! B
  7717.     )
    ) p! e, w5 j# K' M6 E
  7718.   ); f' y5 V- x9 _6 c- Y
  7719.   ;;
    / p0 V/ W2 e7 o0 |9 ?
  7720.   ;; Modify CIRCLE. ?( s/ g1 ~# [  O
  7721.   ;;) \8 i' s; N: ?1 j( ~8 m- S
  7722.   (defun modify_circle ()
    # h- t, `6 ]9 a, f7 `. C) h
  7723.     (modify_properties)
    / p+ s; I7 F. ?
  7724.     (setq pt1 (list x1 y1 z1))
    % g( X/ ~* |0 y8 s
  7725.     (tempmod pt1 10 1)
    ! \. b# u/ h; I5 E  ?2 ?
  7726.     (tempmod radius 40 nil)
    9 E( x9 Q3 C* o0 n( P  b7 Q
  7727.     (entmod elist)) f1 _' I7 R; J( ^1 T/ V
  7728.   )5 X# K" ?/ b6 n, e
  7729. 1 f0 J6 p# O0 o7 X/ p0 A
  7730.   (defun ddcircle ()
    5 R+ p5 |% C0 x% V- m1 u; [4 G6 ]
  7731.     (if (not (new_dialog "ddcircle" dcl_id)) (exit))
    ( R& w; k# _$ `; \0 A
  7732.     ;; Set initial tile values/ G% G; J5 f1 B7 @( `" M# D4 X" e; L
  7733.     (set_tile_props)2 n1 n1 @$ T1 `3 [) g
  7734.     (set_tile_handle)% g4 i. N. Z. m3 [% x5 }- p
  7735.     (set_tile_pt1 1)
    , H" t3 @0 V7 P
  7736.     (set_tile_rad). w' U# u' x: Y  a$ a. h! d- W9 P4 l: j
  7737.     (cir_calc)
    # d# j$ Q* @! ?1 F
  7738.     ;; Define action for tiles4 O1 f8 p4 n: I; A
  7739.     (set_action_tiles)
    6 x2 M3 a" V0 j1 T* F- o
  7740.     (set_tile_pt1 1)7 u) _8 D. ~  G- V$ D+ P5 v0 j+ ^
  7741.     (setq dialog-state (start_dialog))2 {, b8 a2 j! `8 U. [2 K
  7742.     (if (= dialog-state 0)
    + ]  f; F( L* u
  7743.       (reset)8 i6 b0 f9 y4 w5 C% J
  7744.     ): a2 |" w7 \; F7 R2 {( c
  7745.     (if (= dialog-state 1)
    - a! N. C/ c2 u0 a  R
  7746.       (modify_circle)2 m% @$ @6 s( y6 P8 y- h2 z
  7747.     )
    ( O9 n- j0 @# F# e7 g( w  D
  7748.     (if (= dialog-state 3)
    * A5 w+ ]8 N( l
  7749.       (progn( V& F( U0 P$ d$ Z6 S- D7 F$ g% v
  7750.         (modify_circle)( I; m3 c6 \+ ]9 x( }2 Z$ T4 `9 K) {
  7751.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))2 A: z/ H9 m4 S- s/ q
  7752.         (ver_pt1 1)
    2 \( I/ @; I% h% m6 x1 ]
  7753.         (ddcircle)& ]2 ^9 B$ Z. Q. p
  7754.       )+ \  S8 j3 g$ k% D5 O" J! |7 q
  7755.     )
    ; L2 v5 F1 Y9 f! y9 v8 V3 _
  7756.   )' g  `, L) K. d! c1 P3 x
  7757.   ;;
    9 V. K8 r- v5 X( O0 V8 `
  7758.   ;; Modify ARC
    9 I! q  m$ l- E1 Z! Z7 `& O- h
  7759.   ;;
    1 ]9 V1 M( E( M5 u9 Y3 b/ P
  7760.   (defun modify_arc ()
    ! Z% N9 @  v8 ^( x4 I' P5 @, [
  7761.     (modify_properties)
    0 x. J$ H2 A. J) g% |
  7762.     (setq pt1 (list x1 y1 z1))3 y  ~& {4 y( z1 C3 E
  7763.     (tempmod pt1 10 1)
    ! [% Q! p8 G2 C; v* l1 s
  7764.     (tempmod radius 40 nil)- K5 ^: g% r- O" T) i+ `, k
  7765.     (tempmod st_ang 50 nil)) {8 B1 [' R$ m. {. A- n& g
  7766.     (tempmod end_ang 51 nil)
    0 @" P" U) [, e8 X
  7767.     (entmod elist)- a4 y0 T/ ~: Z. Y# U/ u$ E
  7768.   )& J" @3 b( v& N5 M2 {* g
  7769.   (defun ddarc ()1 G7 i. x, a+ N# h2 k/ e1 G
  7770.     (if (not (new_dialog "ddarc" dcl_id)) (exit))
    4 y1 H( U8 _! ^& @* K. o# u
  7771.     ;; Set initial tile values
    * h! i/ o3 t7 Y  r, A8 y! {* {
  7772.     (set_tile_props)! K0 Y2 X( Q' k/ s0 E0 {. P/ K
  7773.     (set_tile_handle)
    6 v, r" n& M1 O$ f3 m
  7774.     (set_tile_pt1 1)
    2 ^: H6 h/ s  T4 R& P: a$ J0 _& r
  7775.     (set_tile_rad)
    5 u3 {2 C3 h* e) t1 X5 I
  7776.     (set_tile_stang)
    / y' W& F, F. l( B8 k# i
  7777.     (set_tile_endang)2 L  n' `! u( E! @8 F
  7778.     (arc_calc)4 \& c: r' i3 ^0 f0 ~& O' z
  7779.     ;; Define action for tiles
    4 j3 z7 R6 V! f9 A4 S7 I4 l
  7780.     (set_action_tiles)" m1 ^  t$ f$ R8 d+ c' o
  7781.     (setq dialog-state (start_dialog))6 J" o3 o" a4 k! \
  7782.     (if (= dialog-state 0)
    5 i+ i, b! f5 ?1 G
  7783.       (reset). p; O* N6 c( s
  7784.     )/ L$ n5 x, Q0 Y3 T' b, Z( O, n2 x
  7785.     (if (= dialog-state 1)6 ^: W2 _# ]  Y# i
  7786.       (modify_arc)
    ' X! {; ^) ?( z" P* m2 Y
  7787.     )# P5 j4 l2 w+ z6 @
  7788.     (if (= dialog-state 3)+ O4 i2 O8 M4 C" m9 h+ }+ X" Q
  7789.       (progn
    # i' }5 _8 h, r# Z9 O
  7790.         (modify_arc)
    1 h( V% n- F- b2 @
  7791.         (setq pt1 (getpoint (list x1 y1 z1) "\nCenter point: "))
    ' Z* K  W* U7 {' M
  7792.         (ver_pt1 1)
    4 ]3 V7 E+ ^9 u  i
  7793.         (ddarc)
    " d/ }2 N# ?! a  H/ l% o
  7794.       )
    8 g! v6 D$ I) _' V4 ^0 B4 b
  7795.     )
    * u0 |. z3 [* d
  7796.   )6 `7 Q2 H  R+ c& L7 s8 |
  7797.   ;;8 A* n4 _" u0 C% n; C
  7798.   ;; Modify SOLID or TRACE  r6 |2 |+ x2 [, h: E) \
  7799.   ;; Note the Z value of the object is determined by the Z value of the fourth
    + f3 J1 Y8 j# Y# X: q8 u- s2 N
  7800.   ;; point - code 13.  Changing the point values of a solid or trace from a UCS2 x/ T3 p( X. Q6 w  I2 V
  7801.   ;; that is nonplanar to the UCS the object was created may confuse the user.
    7 a' G  n' j8 I$ Y- Z& }
  7802.   (defun modify_solid ()
    0 w0 H  x" A7 i( C5 u; r& M
  7803.     (modify_properties)
    # e) j# V5 G& |# D8 R
  7804.     (setq pt1 (list x1 y1 z4))$ s' X# z4 |7 r6 n. f9 l: m
  7805.     (setq pt2 (list x2 y2 z4))6 Y( k2 @& C' t2 x9 b# S
  7806.     (setq pt3 (list x3 y3 z4))
    7 [# x4 T, o/ S# n
  7807.     (setq pt4 (list x4 y4 z4))
    1 w2 x5 H6 J' X" N3 I
  7808.     (tempmod pt1 10 1)1 ?3 [+ i0 G5 ~% M
  7809.     (tempmod pt2 11 1)8 y; c9 r+ d, O4 q2 b5 `
  7810.     (tempmod pt3 12 1)/ G' {+ a+ `; s) Y& N
  7811.     (tempmod pt4 13 1)- |5 ^8 p  j, R: m8 y
  7812.     (entmod elist)' x8 n. d" J. Q+ L6 S' G
  7813.   )
    * x' T$ T2 Z- B+ @" E. N  r

  7814. / M( w4 c# g1 {; X' g, f
  7815.   (defun ddsolid ()
    + A: ^- ~4 t7 L! V( _
  7816.     (if (= etype "SOLID")
    2 P" X( z% Z, X* y  L4 H
  7817.         (if (not (new_dialog "ddsolid" dcl_id)) (exit))
    / J& @9 g. }. |) c
  7818.         (if (not (new_dialog "ddtrace" dcl_id)) (exit))
    1 o$ z% E' l2 r9 F( |2 O7 l
  7819.     )
    - q) C! S  V2 R! u5 _/ c. b) c
  7820.     ;; Set initial tile values4 w- m6 K+ N& j) H
  7821.     (set_tile_props)
    8 Z* M, p0 Y- M: h
  7822.     (set_tile_handle)
    : S% e+ r$ u: d& s4 h4 I
  7823.     (set_tile_pt1 1)
      p5 C# e' W5 a8 S: U
  7824.     (set_tile_pt2 1)& W8 ~! p+ _4 ?5 R8 s) R1 F
  7825.     (set_tile_pt3 1)+ l. \. q' `) e5 I0 [* X) y2 f
  7826.     (set_tile_pt4 1)& e! d+ @# p1 s6 q" k
  7827.     ;; Define action for tiles7 x! @; V5 S) y4 K& F% c5 K
  7828.     (set_action_tiles)$ k& ?$ G+ i! v/ y, F7 H' T/ t
  7829.     (setq dialog-state (start_dialog))7 a+ ?) u1 z$ r- ]! o1 R
  7830.     (if (= dialog-state 0)
    " ~  S7 B  K& |$ v5 j1 j- m, ]  [
  7831.       (reset)/ N; W. O4 Z; i# p
  7832.     )6 k  e5 ], ]+ v- c. p5 H
  7833.     (if (= dialog-state 1)# K, [! s# {6 l3 a
  7834.       (modify_solid)
    " r  ~+ z; o' b
  7835.     )
    , o6 V& B; o" c5 d! c8 B0 k6 Y
  7836.     (if (= dialog-state 3)3 ~7 G9 ~  U- s2 j( S; ?: d' t6 F& X- K" z
  7837.       (progn6 A. O6 d4 P# W; S. r1 P
  7838.         (modify_solid)7 w2 a; K8 s0 e' v% [6 \
  7839.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst point: "))$ X$ T7 q5 I% N9 Y
  7840.         (ver_pt1 1)* f- `5 ]* l& ?$ k) Y4 b9 D0 B
  7841.         (ddsolid)
    2 M/ D4 {& R9 Y
  7842.       )
      O% H4 Q9 p4 W, k% X7 b* Y
  7843.     )
    0 k. A1 N: \5 h; E, p
  7844.     (if (= dialog-state 4)8 w, \- g( i1 k. ~1 D
  7845.       (progn; O, s8 v! u2 j) r& {
  7846.         (modify_solid)
    5 ^' v& x% K* Y( x! k6 s2 D: f
  7847.         (entmod elist). {2 q/ a- s. F! N2 ?
  7848.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))
    8 y/ [  P7 B+ x$ [8 q8 F- o
  7849.         (ver_pt2 1)+ `8 {1 W6 }* i9 S; x
  7850.         (ddsolid)
    2 n9 j7 h/ }' E+ A% s3 Y  X3 n
  7851.       ); J( T1 G5 e: y5 f" G
  7852.     )
    4 M+ V& t1 D& B
  7853.     (if (= dialog-state 5)3 ?/ O0 E. a7 u& K
  7854.       (progn& F3 m5 o. i5 B6 D
  7855.         (modify_solid)8 q0 S& C8 o3 P/ Y; T
  7856.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))
    ; Q2 W9 M3 s4 z2 z9 F
  7857.         (ver_pt3 1)5 k* x7 \2 M0 x
  7858.         (ddsolid)2 @2 m3 R1 x2 O! e$ K! u
  7859.       )
    - f. U& N$ s% v, \
  7860.     ). n& l, Q1 {' a6 F
  7861.     (if (= dialog-state 6)
    # C# M0 K- [; _
  7862.       (progn3 {) ?( G) t( @) _. y
  7863.         (modify_solid)
    / E, N0 F+ i+ N# q: R
  7864.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))
    ! K6 u% e2 {% Z$ ]7 W( e
  7865.         (ver_pt4 1)
    & V) ]; U3 j6 I) H1 L
  7866.         (ddsolid)
    / v1 w& Z6 K+ s, J$ Z& |6 y& C* S
  7867.       )
    - v+ w  h. P# s' H3 m8 m
  7868.     )1 j! t( c% P/ z8 F6 W% F& U( T! B1 q
  7869.   ): a; ^; j( S7 V8 u6 s
  7870.   ;;
    ( f9 x5 s9 h8 \, ~/ \! V8 [6 `
  7871.   ;; Modify 3DFACE* U; E6 d# ~/ h
  7872.   ;;
    8 b* g3 m' U" u7 l" S" h2 `7 J- k
  7873.   ;; Check visibility of edges  C$ v. v% x0 H; q/ ^
  7874.   ;;
      R. E2 J4 B1 V5 t- r9 K
  7875.   (defun edgetest (/ bit1 bit2 bit3 bit4)9 _& r. t6 D1 I- r
  7876.     (if (= edge1 "1") (setq bit1 0) (setq bit1 1))
    - R& V3 D$ `* Q0 ]" d
  7877.     (if (= edge2 "1") (setq bit2 0) (setq bit2 2))
    $ b* Y9 ^$ b7 ]& q( I
  7878.     (if (= edge3 "1") (setq bit3 0) (setq bit3 4))
    1 a: Q/ s3 W, _2 z# V2 M+ u
  7879.     (if (= edge4 "1") (setq bit4 0) (setq bit4 8))
    & c* R; v. `! f. |" z
  7880.     (+ bit1 bit2 bit3 bit4)! U2 N3 l0 I0 r+ j$ R6 A. N  Y
  7881.   )% x! u) R# S" k9 r
  7882. & d, I* ]' X7 L! C
  7883.   (defun modify_3dface ()
    9 p$ g9 y" N. S) Q% U
  7884.     (modify_properties)! d% R7 C- R8 }) K2 @) H  k4 Y/ S1 Q
  7885.     (setq pt1 (list x1 y1 z1))
      D" _6 ^$ F, K9 F5 [+ M
  7886.     (setq pt2 (list x2 y2 z2))
    # S+ |- G. H. G; h4 E( R
  7887.     (setq pt3 (list x3 y3 z3))
    / [" Q3 Z0 Y6 K8 J
  7888.     (setq pt4 (list x4 y4 z4))+ I' N6 i6 w/ Y9 t, A
  7889.     (tempmod pt1 10 0)
    % W. @6 S% z8 H9 m4 Y
  7890.     (tempmod pt2 11 0)
    / c: y3 _" Y' I, }- e- I
  7891.     (tempmod pt3 12 0)4 J  D4 L; E3 o7 \  ?8 ^  j
  7892.     (tempmod pt4 13 0)9 |* i$ _3 v1 v1 \
  7893.     (tempmod (edgetest) 70 nil)
    ' e* m$ J) n9 N/ H1 C' m7 o
  7894.     (entmod elist)
    0 Y- G2 t# y8 \3 y" _2 |0 g6 F
  7895.   )- c  R  g: X& g7 f2 Z  [& l7 I
  7896. 3 Z1 U9 q0 u/ w% l! G2 W, V
  7897.   (defun dd3dface ()- {* i8 D, I' T$ x5 w, k. N+ y
  7898.     (if (not (new_dialog "dd3dface" dcl_id)) (exit))
    ; H+ W/ u' g) u6 w; Z  h" o$ Q
  7899.     (set_tile_props): i/ T5 Y) N- E% O5 ^
  7900.     (set_tile_handle)
    $ m: R' F+ Y6 O6 A+ B3 h/ V
  7901.     (set_tile_pt1 0)
    ; Q; s( i3 T. g; J: c  `; {- m! C' s
  7902.     (set_tile_pt2 0)" {) s# F# s' v: V
  7903.     (set_tile_pt3 0)
    : M, E9 F2 z+ n
  7904.     (set_tile_pt4 0)
    & ~8 Q9 J1 B+ k: m! n
  7905.     (set_tile_edges)
    1 h7 r4 l& r* g1 v. {& v
  7906.     ;; Define action for tiles
    3 Z. K  V- J" f* n  z
  7907.     (set_action_tiles)
    + C1 B3 _! b6 r2 l) N, ]+ Z
  7908.     (setq dialog-state (start_dialog))
    2 K: R% X+ W2 k. {
  7909.     (if (= dialog-state 0)& K8 \0 f! V6 l$ g- t* f. s
  7910.       (reset)
    0 x9 F" S/ C( m0 i5 E  z
  7911.     )
    " g7 j/ R1 I, O1 @
  7912.     (if (= dialog-state 1)
    1 P  t6 B# u2 ~- M
  7913.       (modify_3dface)
    # B9 V2 P7 ^6 n% ~
  7914.     )
    8 o$ D4 n9 ]% I6 @+ l2 R' b9 }
  7915.     (if (= dialog-state 3)
    " `" X5 B7 l( u' z" z' ]
  7916.       (progn4 J# u3 J8 T' p8 n
  7917.         (modify_3dface)$ m1 k  b- k- p! H2 N7 i
  7918.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst pt: "))0 T, O# j0 d# Q6 L
  7919.         (ver_pt1 0)
    * u# Y/ S8 N6 j  p2 R+ e% Z) f6 Y1 a
  7920.         (dd3dface)9 v2 t# `: u7 n% p* ?
  7921.       )
    + Z" v% s8 o) j- Y0 G) L
  7922.     )1 c. g3 `& Y6 N/ ~8 Q7 {
  7923.     (if (= dialog-state 4)
    ( l; L; ]2 ^+ U# u
  7924.       (progn# u0 ]1 `8 T' ~
  7925.         (modify_3dface)
    1 S4 S* N0 V6 G) D; \5 v: V9 n! [
  7926.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))8 ^+ y. `1 H7 }% h8 L
  7927.         (ver_pt2 0)
    3 M' P+ Z: q% ?; ?$ _
  7928.         (dd3dface)! n* `, f6 O9 @5 j$ i
  7929.       )
    % Z- _! c* c1 M- G
  7930.     )
    , c) B9 s8 s9 `8 t( g. G
  7931.     (if (= dialog-state 5)
    # c0 r( L: |1 K- u" K" I
  7932.       (progn" B2 ^- {8 W1 X0 t! ^. q7 y+ \: C
  7933.         (modify_3dface)+ {; c! D( g9 H# p
  7934.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: ")); l0 w2 T( r" D% F, ~
  7935.         (ver_pt3 0)
    # ~6 N& l7 z  j7 B! q" n
  7936.         (dd3dface)
    ! L% k% Y& j* K. \) z' u3 y
  7937.       )
    . F  l5 u6 M8 K, Q) e2 X
  7938.     )
    6 N1 {6 k8 `. H$ Q: L. x- P. |
  7939.     (if (= dialog-state 6)
    2 d" @. ?  k; U  H
  7940.       (progn) T, A( G. m" \2 l( u% S
  7941.         (modify_3dface)
    ( h. F' f. s5 F6 K6 [* R1 J
  7942.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))+ ?$ F, ?1 A8 b% |/ g- E/ T
  7943.         (ver_pt4 0)
    8 W0 m$ t- n+ L$ E8 }4 I9 M' H
  7944.         (dd3dface), c4 P8 H# C5 I( [& a: ~% i+ W
  7945.       )
    + l$ D( i4 e- ~, E# x# i' h: y
  7946.     )
    ' |/ Q! ?1 ~0 L* X3 p
  7947.   )- v* }, Z3 A9 U% f

  7948. : \+ k- @' x/ e* Q
  7949.   ;;$ `5 {8 B4 m# s; F: n7 e; w, `
  7950.   ;; Image functions  F! D& @* h$ L2 P& R% g
  7951.   ;;
    , V# y$ n8 ^+ _) `  L4 A1 P8 Y0 S
  7952.   (defun image_scale (/ upixel en n userscale temp)
    & |# ]7 D; o' g* B
  7953.     ;; Calculate the size of an image pixel in AutoCAD units
    , c) |; N* F  U$ @
  7954.     (setq upixel (distance '(0 0 0) (cdr (assoc 11 elist))))
    " y# j% @: b3 N) z9 S, B# }* r3 C9 s
  7955. 7 b) C, S4 n9 L8 B2 v
  7956.     ;; Retrieve the user scale
    5 {& Q2 a# Z" z! n8 C! i; x
  7957.     (setq en (dictsearch (namedobjdict) "ACAD_IMAGE_VARS"))
    8 C+ ]) d1 @+ \: s; M+ j
  7958. * e: z5 w4 k! ]. r, I. X; |- Y
  7959.     ;; Next, extract the image units and pixel resolution
    * H3 L1 T, m0 v4 m
  7960.     (if (or (= 0 (cdr (assoc 281 image:olist))) (= 0 (cdr (assoc 72 en))))
    % j# F( v- I( M/ ]
  7961.       (setq image:scale (* (cadr (assoc 13 elist)) upixel))
    2 X' T+ F3 y7 `0 N8 a
  7962.       (progn6 B$ f+ T0 @4 X' k' H) Y
  7963.         ;; Convert the user scale to the proper word
    ( [" _3 ?' T/ d+ t2 [; W! x
  7964.         (setq n (cdr (assoc 72 en)))
    2 N8 F/ X. Z3 F% R- `1 X5 f, n/ o
  7965.         (setq temp (getvar "LUNITS"))
    + s! U3 j9 a% b+ X  y/ H
  7966.         (if (and (/= n 0) (or (= temp 3) (= temp 4))) (setq n 5))
    # `! c; ~" R0 U8 c
  7967.         (if (= n 1) (setq userscale "Millimeter"))
    * E- U" s8 e: d2 o! u  F$ `: X
  7968.         (if (= n 2) (setq userscale "Centimeter"))
    6 y0 W  _( i, |! w0 P( y
  7969.         (if (= n 3) (setq userscale "Meter"))
    5 o" p9 h: E/ E# i+ A- {
  7970.         (if (= n 4) (setq userscale "Kilometer"))7 `7 M7 r; G& l5 F/ Q  _/ g* H
  7971.         (if (= n 5) (setq userscale "Inch"))2 }  B6 x2 R9 z2 n+ c
  7972.         (if (= n 6) (setq userscale "Foot"))9 n) |0 \' R( ]: j+ \5 p* F
  7973.         (if (= n 7) (setq userscale "Yard"))8 D2 {0 L; S3 W
  7974.         (if (= n 8) (setq userscale "Mile"))' D3 N# p' s/ C/ a1 `
  7975.         (setq image:scale (/ upixel (cvunit 1 "Millimeter" userscale) (cadr (assoc 11 image:olist))))
    3 {8 ]2 a& |' C5 F
  7976.       )  V( u. @" s  B' z5 Z3 F
  7977.     )& B; h; u% B% V4 w: Z1 k
  7978.   )
    , x+ l, L+ O( Q6 r# c

  7979. ; ~0 w. k' B$ _! b  D0 K# x
  7980.   ;;: \+ F8 o8 x9 S3 A; f
  7981.   ;; Scale factors for block insertions
    & L6 L4 I1 v/ b, ]2 I# p$ [& g
  7982.   ;;
    . m% y* ?6 B8 }9 G- A) A% k
  7983.   (defun image_set_tile_scale (/ temp)" k& }* ?- x9 Y0 ~; m
  7984.     (setq temp (getvar "LUNITS"))
    , [* X8 p, h) b
  7985.     (setvar "LUNITS" 2)
    4 N4 r' T2 w# V( h# w
  7986.     (set_tile "xscale" (ai_rtos (* image:scale image:mult)))7 g3 v1 \6 `$ U
  7987.     (set_tile "wid" (ai_rtos (* image:width image:mult)))
    ( O' A0 r' X% t0 W4 a7 C
  7988.     (set_tile "hght" (ai_rtos (* image:height image:mult)))$ f- ]# O5 K7 k0 t* g
  7989.     (setvar "LUNITS" temp). U! t3 @0 q/ [3 z  k1 P+ m
  7990.   )! _+ W* o+ V& [) H% I
  7991. 3 `( J9 i$ m- M( M
  7992.   ;;
    " H! g2 N3 F$ a" a
  7993.   ;; Set the scale, width and height values appropriately.
    9 G9 O) w+ I0 |' H! ]
  7994.   ;;
    $ J  j4 }% K4 H: l5 C
  7995.   (defun image_update (field value / orig_value new_value mult)
    . N7 c* q5 t% t0 @% g5 o9 K
  7996.     (if (= field "xscale")
    - K* ]. B" D0 Q4 z
  7997.         (setq orig_value image:scale); O) g6 O: b$ Q' F
  7998.     )1 \6 k/ v0 y+ O* l
  7999.     (if (= field "wid")
    : T7 L' v0 P$ Y9 |" M. V
  8000.         (setq orig_value image:width)
    / }! F# V! H) W
  8001.     ), T' l, ?/ T0 ~0 t2 Q  x
  8002.     (if (= field "hght")
    : y: j5 T4 A3 S4 t0 m
  8003.         (setq orig_value image:height)% H+ e6 n, z* E# O4 T5 x
  8004.     )% i; z6 M5 f8 O6 }  r
  8005.     (setq new_value (verify_d field value (* image:mult orig_value)))) p/ N+ [' ?2 Y% V
  8006.     (if (/= new_value old_value)2 ~; K$ s; W8 [  k, O  ~9 j
  8007.       ;; Make sure the user has entered a sufficiently large value- s  p8 D4 F7 u
  8008.       (if new_value% p) o$ z% R9 O# T" H6 l4 X" G
  8009.         (progn
    6 U6 d% d. v" \1 M/ W% P
  8010.           (if (< new_value 1e-8)
    0 A7 x2 \! E8 d. F
  8011.             (setq mult image:mult)% L" ?# j4 e3 B; e9 N# S% N! Q: [6 n
  8012.             (setq mult (/ new_value orig_value))1 f0 b, U3 b6 }1 v7 s
  8013.           )
    . A5 _4 {3 E& K2 F8 V
  8014.           (setq image:mult mult)
    % b8 g$ x' j: v- c  Q6 w6 k7 m
  8015.           (image_set_tile_scale)/ A& e: J) f0 U1 h
  8016.         ), @: U8 n" ^% m  u
  8017.       )) U/ Q; [% x& r4 T( Q6 k) ^
  8018.     )9 N( A1 [' I  b; D, ^" p
  8019.   )
    - z% k# ~3 h" S! F" H! C
  8020. 2 t! B+ Y; W: W6 ^/ I" x) z
  8021.   (defun image_disp_opt (bit)
    $ B6 V- [/ j1 A6 @
  8022.     (setq image:options (Boole 6 image:options bit))5 ]9 C5 [( l% I+ Y* M- d
  8023.   )
    0 M  g/ O2 [& w5 D" @7 s

  8024. " L$ N1 ~- b5 M# R  [" Z
  8025.   (defun image_modify (): I8 m5 k0 C# g3 ?
  8026.     (modify_properties)( V" U7 @8 }$ |+ d1 B9 V
  8027.     (setq pt1 (list x1 y1 z1))
    $ N& z5 ?" a& m+ f, A( [
  8028.     (tempmod pt1 10 0)
    $ ^) z, W6 ?. F: b3 I
  8029.     (entmod elist). U+ S1 q  G" U3 O
  8030.   )
    * d, W% F0 H" ~3 S# X% S2 G

  8031. , r* y5 i& j, e
  8032.   (defun image_clean_variables ()3 g( Y7 M3 e- q& l" J
  8033.     ;; Clean up global variables used here  |6 W% t! f  L
  8034.     (setq image:scale nil)
    ( H7 i/ T* X5 H% m8 H0 ?
  8035.     (setq image:angle nil)
    9 X) w( h8 a! o* q/ H
  8036.     (setq image:width nil)
    ) a( I0 D. c" [1 p( O9 T
  8037.     (setq image:height nil)
    # _5 E& x# T/ t: |: B
  8038.     (setq image:options nil)
    . t( d) b) A: P# \7 j& D
  8039.     (setq image:oname nil)
    $ p( I) V9 ~4 X3 V3 V. t
  8040.     (setq image:olist nil)
    ; T' c- V, Z, C
  8041.     (setq image:mult nil)
    $ z& n: Y' R8 h# p
  8042.     (setq st_ang nil)
    ) ~2 Q8 ]7 z% V- U" Z0 H
  8043.   )
    6 Y( D1 ?6 ]2 F9 J. a/ ?
  8044. * F' C9 C) M* N- i3 {1 d
  8045.   (defun image_scale_vector (v1 value)7 d5 Z- ^* b1 g+ C3 ^3 C; i7 E
  8046.     (list (* (car v1) value) (* (cadr v1) value) (* (last v1) value))- D0 r. u' {% z
  8047.   )4 y4 M/ K$ h  V7 Q
  8048. $ U' T9 ^8 G  _3 E. b
  8049.   (defun image_cross_product (v1 v2 / vx vy vz), c: R  u, u6 n. A3 ^
  8050.     (setq vx (- (* (cadr v1) (last v2)) (* (cadr v2) (last v1))))
    ; t0 P1 W& A' ^/ j/ B
  8051.     (setq vy (- (* (car v2) (last v1)) (* (car v1) (last v2))))
    ) [5 Z6 F% X) @5 K, Z1 \9 C
  8052.     (setq vz (- (* (car v1) (cadr v2)) (* (car v2) (cadr v1))))6 I8 Q2 J$ R9 D  a, u. c, l
  8053.     (list vx vy vz)$ q* m1 J2 k8 G  V/ g; U. T2 h
  8054.   ): P' A% w8 X3 D) q" n6 k3 S+ K  Q, C
  8055. $ W0 U1 U0 A+ J1 {4 t/ _$ X- D
  8056.   (defun image_dot_product (v1 v2)
    ; i$ i1 S  u# K  k, W; r  f
  8057.     (+ (* (car v1) (car v2)) (* (cadr v1) (cadr v2)) (* (last v1) (last v2)))$ _) D6 y5 U) |
  8058.   )
    * h% F+ A8 k3 g  \' `8 |7 b
  8059. 5 r- {% b; ~+ }; u  J/ N
  8060.   (defun image_add_vector (v1 v2)
    6 _" o4 V+ C# C+ ?% ?- l! E
  8061.     (list (+ (car v1) (car v2)) (+ (cadr v1) (cadr v2)) (+ (last v1) (last v2)))
    3 b3 J6 I+ ~7 W* g" B( X3 T
  8062.   )
    - U" k2 W/ L; X0 ~& {1 y/ P

  8063. . ]  W- w/ t4 }* T
  8064.   (defun image_subtract_vector (v1 v2)7 ]5 Q9 {- a: j, X, F
  8065.     (list (- (car v1) (car v2)) (- (cadr v1) (cadr v2)) (- (last v1) (last v2)))- k& O: N# n. _# ^( q
  8066.   )1 U! f# A+ B9 B3 v2 @
  8067. / N0 P; o; \% \
  8068.   (defun image_normalize_vector (v1)
    / D8 x1 E$ C) K1 K9 g- d
  8069.     (image_scale_vector v1 (/ 1. (sqrt (image_dot_product v1 v1))))! J( P/ h- }" m% g
  8070.   )* A- h9 k0 D) R: b& S1 A

  8071. ; f- ?. i1 d. s, T8 e. M
  8072.   (defun image_rotate_vector (vector angle axis / along_axis axis_x_in_rot_plane axis_y_in_rot_plane in_rot_plane)
      g9 }; L0 Y9 o6 t/ F5 i
  8073.     ;; Normalize the axis
    * b1 W& k  l/ O* I1 q4 Y) Y" M
  8074.     (setq axis (image_normalize_vector axis))
    0 X, I  {* g6 _2 g& B8 ^
  8075.     (setq along_axis (image_scale_vector axis (image_dot_product vector axis)))' M6 q; `# ~: a$ \! S3 W6 K7 ^3 h
  8076.     (setq axis_x_in_rot_plane (image_subtract_vector vector along_axis))
    9 b9 Y2 b% u6 P$ |; h! K. ?
  8077.     (setq axis_y_in_rot_plane (image_cross_product axis axis_x_in_rot_plane))  X! L8 o+ @3 T8 ^3 V  S
  8078.     (setq in_rot_plane% V2 @. u- w) i& _; P  N
  8079.       (image_add_vector
    ) w. |$ `% a4 N4 ]" P) L+ h& a
  8080.         (image_scale_vector axis_x_in_rot_plane (cos angle)): V( h# E, t( ?4 @9 r8 R6 _4 m
  8081.         (image_scale_vector axis_y_in_rot_plane (sin angle))1 l, S; C) U6 S7 u  i2 Y7 m. k3 K8 z
  8082.       )" {/ Y  W  j; T6 o7 h+ ^
  8083.     )
      s5 E1 n2 L- x1 {+ G8 ?! I
  8084.     (image_add_vector along_axis in_rot_plane)( T7 j6 f7 A7 E9 i2 y2 R6 `8 d
  8085.   )
    # M7 I5 n: [1 K% V
  8086. % n( K% X* b$ [2 @3 n
  8087.   ;;
    ' a, }( `! v) j! P) ]& |
  8088.   ;; Calculate current rotation angle if appropriate.9 i# h& p" z  u; A4 I
  8089.   ;; If not, grey out the rotation field.; g0 v# g( _) T& l% T% O  Y$ M! r
  8090.   ;;1 I7 d3 z% `& w% d! x; B
  8091.   (defun image_rotation (/ normal rlength zlength sqrt_tolerance)
    # r/ U7 {5 H( @) e6 \" h* q& S, t
  8092.     ;; Determine if image normal is codirectional with! p9 L- v5 [1 t7 q$ i
  8093.     ;; the current UCS Z-vector.
    6 F# |* ?, D+ y) R4 M/ D, s3 B" ~
  8094.     ;;* _* F3 A- @( k, A7 [' ^9 x
  8095.     (setq normal (trans (image_normalize_vector (image_cross_product (cdr (assoc 11 elist)) (cdr (assoc 12 elist)))) 0 1 1))
    / I* J2 k8 W- n( s7 F) r% C
  8096.     (setq rlength (+ (* (car normal) (car normal)) (* (cadr normal) (cadr normal))))
    # q( b- j# M- V* H2 Q
  8097.     (setq zlength (* (last normal) (last normal)))
    & e5 `) [+ m: L9 }! ^2 L( A4 u
  8098.     ;; Note that the value .0001 in the radians is approximately 0.0057 degrees.- N' O7 ~; M7 l/ ^" \% G1 b/ B
  8099.     ;;
    " h' R$ N  L  K
  8100.     ;;                cos(.0001)^2
    % b) _9 D: E& L  i1 C
  8101.     ;;   Tolerance = --------------
    7 P2 }: f9 ~; J2 L
  8102.     ;;                sin(.0001)^2
    # q( T0 U8 W* q+ j9 n" g
  8103.     ;;
    7 B: _0 F' Z" V
  8104.     (setq sqrt_tolerance (/ (cos 0.0001) (sin 0.0001)))
    & D; A4 |# T" ~& o9 i
  8105.     (if (and (< (* rlength sqrt_tolerance sqrt_tolerance) zlength) (> (last normal) 0))
      @% [! i3 r7 v) Z6 X4 u7 d1 Y
  8106.       (setq image:angle (angle '(0 0 0) (trans (cdr (assoc 11 elist)) 0 1 1)))* u" O  W7 J8 s4 F8 n) C! L8 Z
  8107.       (progn, r) j+ P4 ^- b1 f9 N2 _% l0 G6 {
  8108.         (mode_tile "st_ang" 1)
    1 V5 N+ Y5 v& @/ C
  8109.         (setq image:angle 0)% f, B6 x- q1 m7 M( j+ Z
  8110.       )
    $ Q5 C3 F2 `: t# J* v
  8111.     )
    ! i0 r5 a' V3 D+ w0 `( Y
  8112.   )) \' V5 Y2 v8 c2 B% ?0 X/ a

  8113. $ o- w% \) h: a. Z# d
  8114.   ;;
    9 ]0 t$ K; ?+ S4 f$ F8 {6 A# ?; ^
  8115.   ;; Modify Image
    : V3 a/ C$ ^3 ~* N, R
  8116.   ;;
    0 S( R  E. G9 Y' y
  8117.   (defun modify_image (/ u_vector v_vector z_vector)+ w) _+ {0 b0 h; M8 w8 [
  8118.     (modify_properties)
    - {( I& ?* ~; L7 C7 {: b
  8119.     (setq pt1 (list x1 y1 z1))
    ( {7 m3 z9 [/ t2 L' T
  8120.     (tempmod pt1 10 0), y. ?; d+ q! [
  8121.     ;; Make display option changes to image& S* r( A; z& v- M. T
  8122.     (emod image:options 70)$ r# v- {7 H4 H& I
  8123.     ;; Get the u and v vectors, u# _. t1 {5 l6 N$ C5 W4 k! a4 y" \
  8124.     (setq u_vector (cdr (assoc 11 elist)))$ h6 c6 U7 p, ]- i  W" R( f
  8125.     (setq v_vector (cdr (assoc 12 elist)))
    5 @  `1 `8 x) T

  8126. 6 g) {, ]8 U) G; \- S
  8127.     ;; Make scale changes to the vectors
    * S  O$ G9 {, P) }( S) @
  8128.     (if (/= image:mult 1)
    " T0 l# ?1 c! I2 O& U) s
  8129.       (progn
    # V- H, L% z; M. `8 {3 U
  8130.         (setq u_vector (image_scale_vector u_vector image:mult))
    - N6 j$ ^6 [7 _  b4 \0 }5 c: B
  8131.         (setq v_vector (image_scale_vector v_vector image:mult))
    6 q: Q( D: f, s0 n7 l
  8132.       ); M/ `1 X7 G" {0 _# w- i
  8133.     )
    , J4 T6 F7 z5 x4 U0 P3 m3 i
  8134.     ;; Rotate the vectors! B0 w0 E3 u" L
  8135.     (setq st_ang (- st_ang image:angle))3 D) s7 y% S! g4 X. D$ q
  8136.     (if (/= st_ang 0)0 X" }) x4 w6 G% P- i, x6 G
  8137.       (progn
    . d/ r' B7 _& [2 b; z( S( W" b
  8138.         (setq z_vector
    ! ], H% k0 [' p+ m0 ~
  8139.           (image_cross_product8 y! n- @$ \% G7 L% N" X
  8140.             (image_normalize_vector u_vector)/ S0 h+ W; v& z- K* x) [
  8141.             (image_normalize_vector v_vector)9 y" J+ Q, u7 @/ ]" z# n
  8142.           )
    / F1 Z0 y6 _+ e" A
  8143.         )+ e2 v1 i+ e) m: G; s  ]$ I2 A4 `4 x
  8144.         (setq u_vector (image_rotate_vector u_vector st_ang z_vector)). T" N1 \2 `4 {
  8145.         (setq v_vector (image_rotate_vector v_vector st_ang z_vector))
    % i$ Y0 ^6 Q; }6 R
  8146.       )8 [# e: y8 o; c5 A! k2 F4 I+ Y
  8147.     )
    # E) |6 P4 E  ^# ~1 |
  8148.     (emod u_vector 11)2 P7 z: H! v( a3 n; ]
  8149.     (emod v_vector 12)! ^" F! X+ z6 S. i$ ^
  8150.     (entmod elist)) A# H& k' W" g. k. ]+ f" z7 O
  8151.   )* _6 s% t' M9 ^) g( J
  8152. : z5 }/ c! T& M) H; {2 P
  8153.   ;;
    ( G# j7 N" R. `+ n0 K6 g" n- p
  8154.   ;; Run imageadjust on given entity, working around possible9 C/ g( C! H6 e4 Q; |( u
  8155.   ;; re-entrancy problems
    : O( V- h  \$ g1 [# G
  8156.   ;;
    ! r6 S% Y! O# s. m' O- v
  8157.   (defun image_adjust (ename)
    + Q7 ~/ ]% L% S7 v: o+ j* I2 r! J
  8158.     (verify_arxapp_loaded "ism.arx") ;; make sure it's loaded...6 ^$ s6 h0 V0 `4 J& c7 b2 `
  8159.     (imageadjust ename)
    " _3 L% |7 J4 k
  8160.   )
    * A% l3 A$ ^# I( F
  8161. ' U" x  a# Q$ ?* r- Y9 B
  8162.   (defun ddimage ()
    . J: W# V! B. t7 d
  8163.     (if (not (new_dialog "ddimage" dcl_id)) (exit))! A" u- n' w' y9 g& u" x( L+ U
  8164. & b, d- \% b9 h) Y2 e/ b$ ^- M
  8165.     ;; Grey out the thickness field.
    ! w: ^2 M7 J' l) g, _% i" x
  8166.     (mode_tile "b_thickness" 1)
    7 g* ~/ t" n" F# q8 ]" T
  8167.     (mode_tile "eb_thickness" 1)( R6 p- `/ [2 Y- Z! S8 W

  8168. 4 w* t4 ^: K& m9 v9 D! i! ?8 X
  8169.     ;; Get the associated def object.
      |* O& g6 G0 X9 X+ M9 R0 G
  8170.     (setq image:oname (cdr (assoc 340 elist)))
    # w  l! m0 j. |, |
  8171.     (setq image:olist (entget image:oname))
    . [+ I- m6 F0 m' R
  8172. 5 a1 w/ k8 J$ {- E1 E, _: w
  8173.     ;; Set initial tile values0 ~- ~' j2 G2 B0 I" L: m
  8174.     (set_tile_props)
    8 i' G# R% p7 `0 d& h$ K
  8175.     (set_tile_handle)- f* O1 t4 ]" Z+ w) Y
  8176.     (set_tile_pt1 0)9 ?7 `& k. {7 t9 K( O& C( v3 {
  8177.     (setq image:scale (image_scale))7 V: ?+ D& M/ P' t
  8178.     (setq st_ang (image_rotation))  P9 c+ ?/ |9 r1 Z
  8179.     (setq image:width (* (distance '(0 0 0) (cdr (assoc 11 elist))) (cadr (assoc 13 elist))))
    + C5 |! E& e* E0 r, l% t
  8180.     (setq image:height (* (distance '(0 0 0) (cdr (assoc 12 elist))) (caddr (assoc 13 elist))))
    ; C$ U# y% R6 ]4 r
  8181.     (setq image:options (cdr (assoc 70 elist))); T4 g1 u2 k/ L/ k1 c
  8182. ' r* B" ?" }" ?! X$ K6 Y1 `
  8183.     ;; Record the last multiplier for use in image_update function
    ' m0 G" r2 z! N, v' }
  8184.     (setq image:mult 1)' i/ D3 p) h3 V$ S8 J4 p$ [( i9 u
  8185. 8 p! w; p. ?; z+ m: g
  8186.     ;; Retrieve the image name
    . j3 ]( ~' u! |
  8187.     (setq fn (reverse (dictsearch (namedobjdict) "ACAD_IMAGE_DICT"))): s9 I+ C& M, P; D% X: c0 d/ D
  8188.     (setq flag 0), P  B, B; I5 g2 F2 r) X
  8189.     (foreach n fn
    7 R1 ~4 G: ?5 s9 |9 K2 W3 }$ P# h
  8190.       (if (= flag 1)
    & _7 X' V2 @, d+ z8 K! O" @
  8191.         (progn
    3 n: D+ d5 n, K$ Q, N6 q
  8192.           ;; Display the image name. v+ j+ K: Q1 \& o
  8193.           (set_tile "image_name" (cdr n)): T! R* R5 P) ?/ P6 O# X
  8194.           (setq flag 2)' @( E5 s% l: N# q
  8195.         )
    1 \& ^1 p7 O/ _  _. [$ y5 w: y
  8196.       )9 j0 I5 L( l1 D) T
  8197.       (if (= flag 0)
    ; v, `: W. h. s/ I( b9 ]
  8198.         (if (equal (cdr n) image:oname) (setq flag 1))- H$ c& z. |; D) {: f" u
  8199.       )" W  }* `8 C4 ^0 x
  8200.     )
    8 @9 ~0 m  M( u/ j' T' c& ^5 \
  8201. & ^0 i6 K4 m1 y# d! W9 b, t, p, i' X
  8202.     (set_tile "image_path" (cdr (assoc 1 image:olist)))
    - R8 T7 ]4 @* L2 g4 {
  8203.     (set_tile "st_ang" (ai_angtos image:angle))
    - x1 x* ]$ }( e  {  L" l# T/ Y
  8204.     (image_set_tile_scale)
    - x0 k: o' s: A' m9 R

  8205. ; z% s  ]% a( Y1 C
  8206.     ;; Check the appropriate boxes3 i1 k4 g) a7 ?4 p
  8207.     (if (/= (Boole 1 image:options 1) 0) (set_tile "image_show" "1"))
    : Q! v% L, Q3 W4 ^
  8208.     (if (/= (Boole 1 image:options 2) 0) (set_tile "image_non_ortho" "1"))7 f% N2 y, ?  y$ u8 Z. j& ?
  8209.     (if (/= (Boole 1 image:options 4) 0) (set_tile "image_clipped" "1"))
    9 R; S5 |0 K+ q( m0 l. n
  8210.     (if (/= (Boole 1 image:options 8) 0) (set_tile "image_transparency" "1")). d$ q, i$ I# w# l8 ~6 E) P

  8211. 5 `/ b0 n  h3 P+ X" M
  8212.     ;; Define action for tiles
    1 o7 s' W/ [2 [' q% z
  8213.     (set_action_tiles)
    ( R2 z& C/ h5 h6 Y1 i. j4 F
  8214.     (action_tile "xscale" "(image_update \"xscale\" $value)")  k( T- J. o7 B; g' x' j% y& t
  8215.     (action_tile "st_ang" "(ver_ang1 $value)"); b$ A" q2 C9 {- \
  8216.     (action_tile "wid" "(image_update \"wid\" $value)"), a8 F% t, Q6 X, e4 c
  8217.     (action_tile "hght" "(image_update \"hght\" $value)")
    $ h7 C. H6 y! p1 K. I3 l, a; X
  8218.     (action_tile "image_show" "(image_disp_opt 1)")
    $ |5 ?/ J5 }& a6 U. g# _, n" R- r
  8219.     (action_tile "image_non_ortho" "(image_disp_opt 2)")
    1 A& v3 l. Z8 a
  8220.     (action_tile "image_clipped" "(image_disp_opt 4)")
    # Z/ G. ^( X! D5 k, f$ R9 |
  8221.     (action_tile "image_transparency" "(image_disp_opt 8)")8 R& B& n# {# f! x6 x
  8222.     (action_tile "image_adjust" "(done_dialog 4)")
    * G) U) F, _" l' }
  8223. 9 ^: i2 ], \, X0 {0 n: t3 P
  8224.     (setq dialog-state (start_dialog))
    ; m2 ~# L6 I0 \: x! m
  8225.     (if (= dialog-state 0)$ D. ?5 R; {0 W% X* S
  8226.       (progn
    1 n$ e9 Z- _4 H
  8227.         (reset)4 ?# ~; z8 }+ ^' [, l: ?
  8228.         (image_clean_variables)4 G2 \6 L7 n% g
  8229.       )7 T: z6 N+ h3 Z# U
  8230.     )
    : G) {$ Y. x0 N0 c1 G
  8231.     (if (= dialog-state 1): @6 A, K; h: Z# F; B/ P
  8232.       (progn0 B6 i& d* w3 a: b  |3 R
  8233.         (modify_image)
    4 F6 `% D! y% ^4 r' g+ N5 a
  8234.         (image_clean_variables)
    8 Y& R( b% T$ z5 p/ j" K! ^" J9 H
  8235.       )
    - z& ]7 x7 n# ~' [/ [
  8236.     )' w2 G: m5 L9 ]0 n6 V. b  e5 k
  8237.     (if (= dialog-state 3)
    4 V$ I, ~1 e' l( u
  8238.       (progn
    3 a; x2 e$ q/ ?! e
  8239.         (modify_image)
    : N! }& k5 h, u7 ^  }2 j4 R
  8240.         (image_clean_variables)+ w# O" s+ g; z8 [* p6 w! Z
  8241.         (setq pt1 (getpoint (list x1 y1 z1) "\nNew Insertion Point: "))  d: a7 m0 g: j0 v0 w: n; W
  8242.         (ver_pt1 0)7 H$ c& g: Y9 i; G3 I
  8243.         (ddimage)
    3 S$ X& F! k* F# q: n
  8244.       )
    ! ~6 f; u* ?: E! o4 g9 G/ t% M; g; Y, w
  8245.     )4 U% Q6 ^1 Y/ a) X  ]
  8246.     (if (= dialog-state 4)7 ?6 _; }. C4 J
  8247.       (progn
    ; u2 d8 H- z7 o! h% q9 F' E  U! \# a
  8248.         (modify_image)# i) r9 n1 G9 g  L, U$ k" C& b# E5 B
  8249.         (image_adjust ename)4 m* s. k! }" p! U
  8250.         (setq elist (entget ename))
    9 @% r6 n% B0 g
  8251.         (ddimage)
    + f+ M0 O& b1 Q$ z: o2 c, n
  8252.       )8 o3 ]# i6 L6 l" s4 Z
  8253.     )" t" s7 N4 |7 Q# h$ L# H
  8254.   )& _' J( y1 m/ O9 h% F$ d* K
  8255. ' O" _+ c% c: `5 w  O# C5 h
  8256.   ;;
    ) [/ d7 L: I0 O$ X: T
  8257.   ;; Modify BLOCK (and its Attributes, if any)
    - c% B$ X; M- S+ J% E
  8258.   ;;
    $ ?4 u8 E' D7 ?9 _1 m
  8259.   (defun modify_block ( / el en2 p1 p2 oldp1 oldp2 new_hgt old_hgt attr% R4 }; K: _& F% A
  8260.                           new_wid old_wid old_rot scaling old_scale( }" k! R' j- j5 v- O) n$ u0 D8 U
  8261.                           xdelta ydelta zdelta xbase ybase zbase ipos)
    , v! j9 a1 h" K0 C, Z0 m
  8262.     (modify_properties)
    6 r+ a9 @- W/ }- u) P7 H( I
  8263. 3 _1 g" a" L6 [, K+ v
  8264.     ;; First, translate and scale the Attributes, if there are any.
    0 A% I0 p8 e/ I! f( W4 r, A& l
  8265.     (setq old_rot   (cdr (assoc 50 elist))
    ! G! B* ~& |7 X" L
  8266.           old_scale (list (cdr (assoc 41 elist))
    8 o; s" I9 j2 V: u
  8267.                           (cdr (assoc 42 elist))
    1 r) E8 j- ]3 M8 @# b* V; p
  8268.                           (cdr (assoc 43 elist))
    : `& [+ F7 Y  t* e. v* [# u
  8269.                     )
    ! ^6 t9 \, x( Y" g' J8 @$ C
  8270.           scaling   (or (/= xscale (car   old_scale))( C" u- U* c+ J/ U0 A  M
  8271.                         (/= yscale (cadr  old_scale))1 D5 w: M! ]5 T1 h9 R& {( \
  8272.                         (/= zscale (caddr old_scale))
    8 @, l5 R  }$ i; y
  8273.                     )' o& J: U6 R  o4 l# q$ k, M
  8274.           attr      nil               ; No Attributes modified yet% F5 N/ c. U1 d* C! U
  8275.     )
    : O8 n8 c' Y' O6 j" E
  8276.     (if scaling! \1 y% G% Z8 |. D5 q
  8277.       (progn
    4 I. d% Y. M. N( Z) ]/ i
  8278.         (setq xdelta (/ xscale (car   old_scale))
    / C" H5 p/ u$ q$ o
  8279.               ydelta (/ yscale (cadr  old_scale))" Q/ p+ s" P5 m( ?/ Z
  8280.               zdelta (/ zscale (caddr old_scale))
    5 k) V# V! u3 P3 P3 ?# j7 N% T
  8281.               ipos   (cdr (assoc 10 elist))+ I" W- k5 ?# J
  8282.               xbase  (car   ipos)
    % Q; a0 f. ^% o: M% M
  8283.               ybase  (cadr  ipos); c( G! {- ^5 W; O  d" J- |
  8284.               zbase  (caddr ipos)7 n" |% T" C# Z8 i6 N
  8285.               en2    (entnext ename)  ; First Attribute
    " m& p" F- D: M% B+ @. Y! P
  8286.         )# d9 q0 |9 c' V* _+ y& l
  8287. % ]- c2 h) m& Z) L5 ]8 G/ S& t
  8288.         ; If the Block is rotated, temporarily un-rotate it, along" x, j, W* O- }/ v+ f7 V% t, S% X$ h
  8289.         ; with all its Attributes, so the scaling/translation of the
    & {5 C8 ]  }9 g$ {& o0 I  [# Z) c  B
  8290.         ; Attributes won't have to take the Block rotation into account.
    ; _# Z; ]+ ~  \
  8291.         (if (/= old_rot 0.0)# m$ i& u/ l/ _$ l# s2 T
  8292.           (progn
    & {9 y% [5 [! [6 F9 F8 k$ o
  8293.             (command "_rotate" ename "" pt1 (ai_angtos (- old_rot)))0 n6 @5 w  |  {
  8294.             (setq old_rot 0.0
    - V5 v- ?+ [- e! `( V& O7 B
  8295.                   elist   (subst (cons 50 0.0) (assoc 50 elist) elist)& T/ o( h: p! u% r7 G# o" s
  8296.             )
    , b$ Z. t% ?  i  X4 F4 a  _! a
  8297.           )# Z' K9 e; R. s9 Z0 H6 H
  8298.         )) O9 A) o+ a8 H8 @
  8299. 1 ~! x; C' X: c% q; O' H' G& a$ h6 |
  8300.         (while en25 {9 G0 C& K% U8 v" Y- D& H& |
  8301.           (setq el (entget en2))
    2 u  v" ~9 @+ [9 Q0 c
  8302.           (if (= (cdr (assoc 0 el)) "ATTRIB")
    " ]0 c; x7 w! y  m; S$ @
  8303.             (progn
    / l: N8 x! X& h* i" y- z7 G
  8304.               (setq old_hgt (cdr (assoc 40 el))  ; Height+ o% h& d* s) D& u% l+ I# A
  8305.                     old_wid (cdr (assoc 41 el))  ; Width-factor) r% T1 D+ i$ e6 a2 y
  8306.                     oldp1 (cdr (assoc 10 el))  ; Generation start point) @1 U6 g+ v6 A7 Q& h
  8307.                     oldp2 (cdr (assoc 11 el))  ; Optional alignment pt0 S& M+ r+ n/ R. Q
  8308.                     ha    (cdr (assoc 72 el))  ; Horizontal alignment' ^  u5 R5 Z- ~5 A7 w  J
  8309.                     va    (cdr (assoc 74 el))  ; Vertical alignment  \' @; B5 [- d% ~$ C  G: h: o

  8310. $ b' G; v) q# _0 g. F. M
  8311.                     ; Translate gen. start point% D! s. U1 Y3 E( o3 u1 B- G) C
  8312.                     p1    (list (+ xbase (* xdelta (- (car   oldp1) xbase))); s/ n. a, `0 R8 e, O+ q  R, a
  8313.                                 (+ ybase (* ydelta (- (cadr  oldp1) ybase)))
    . K' z2 k' F$ X' S
  8314.                                 (+ zbase (* zdelta (- (caddr oldp1) zbase)))8 I, p5 [% R( o7 M. T# A' w- ?
  8315.                           )1 Z, `4 f9 Z8 ?- h- p
  8316.                     el    (subst (cons 10 p1) (assoc 10 el) el)
    " b, b8 @- }: @- ?5 [; ?) O
  8317.               )
    $ m7 J2 Z# s* f- E/ }

  8318. 6 z2 u8 T* \6 O8 p1 Z7 A
  8319.               ; Translate alignment pt similarly, if present and applicable1 s8 o  B* g* f) L: j7 B
  8320.               (if (and oldp2 (or (/= ha 0)" d6 ^  Y! O7 _5 X' I6 e
  8321.                                  (/= va 0)& e! E1 o# d/ |
  8322.                              )3 \- |" W) j3 q+ C0 s; t, B' {
  8323.                   )# |+ O; h' a" V2 e, {" }0 R
  8324.                 (setq p2 (list (+ xbase (* xdelta (- (car   oldp2) xbase)))! B& k# W: l4 W
  8325.                                (+ ybase (* ydelta (- (cadr  oldp2) ybase)))4 v, i8 ?! o0 {
  8326.                                (+ zbase (* zdelta (- (caddr oldp2) zbase)))" X. K& A$ l8 q8 P( d1 e
  8327.                          )
    1 H, A, B7 h. a( a  D3 m
  8328.                       el (subst (cons 11 p2) (assoc 11 el) el)
    7 a$ h8 P, X7 R- ?
  8329.                 )& n3 P% S) k* P  \: ~
  8330.               )4 K2 s2 P( V4 k/ P* L6 C

  8331. % o$ ?( g' w+ ?3 g2 K
  8332.               ; Each Attribute's height and width-factor were computed
    % q6 y0 z5 {* i, ?% L
  8333.               ; based on the Block's scale factors.  Adjust them now,
    3 Z( Z7 [! P9 y& N6 c
  8334.               ; by first reducing to values for 1x1 scale...3 ]% G0 y" c* p; g8 |6 l, c/ ~- Y
  8335.               (setq new_hgt (/ old_hgt (cadr old_scale))$ u) ]' q( G7 J0 h
  8336.                     new_wid (/ old_wid (/ (car old_scale) (cadr old_scale)))+ O; x7 Z# |% T% ]
  8337.               )
    9 E: z5 T+ K7 [
  8338.               ; ...and then rescaling.
    " A, e  r+ n% x) j0 n
  8339.               (setq new_hgt (* new_hgt yscale)
    + @5 M( m7 V; w% R3 d7 X
  8340.                     new_wid (* new_wid (/ xscale yscale))
    ' l; `; k% ^" A3 p( _5 P/ p* o  t
  8341.               )
    " }& F- _5 u; f+ U- L
  8342.               (if (/= new_hgt old_hgt)" Y4 M- T6 v4 R& B5 J
  8343.                 (setq el (subst (cons 40 new_hgt) (assoc 40 el) el))" E& T: C) J/ }
  8344.               )
    ( y) E0 J( x( D
  8345.               (if (/= new_wid old_wid)
    ; A, l' A( c/ [! k/ q( ?' D
  8346.                 (setq el (subst (cons 41 new_wid) (assoc 41 el) el))# |3 j# S% v1 a6 B
  8347.               ). u; n, a  z. r* b: v" Z* F4 i
  8348.               (entmod el)7 t. O$ i: `' I& `1 u
  8349.               (setq attr T             ; At least one Attribute modified
    , ^" V) L# {% S  p
  8350.                     en2  (entnext en2) ; Next Attribute
    - }7 B% V' c( i6 R" t
  8351.               )
    % X9 {- Y3 W& |
  8352.             )
    9 k! i' P. b) \! `6 q, f( x: O4 C
  8353.             (setq en2 nil)          ; No more attributes
    ) T, j; V" L. d" Z! g7 R
  8354.           )- S% s( `; x3 ~
  8355.         )
    * U- ]% P7 A! u+ A# M/ D
  8356.       )
    * {4 n  ]: k( ?4 o8 t
  8357.     ); k1 ]9 K0 R5 k* R

  8358. # x  {2 g1 H, E
  8359.     (setq pt1 (list x1 y1 z1))
    1 n3 f6 p, |3 H, m8 u8 Y, t4 Z) |
  8360.     (tempmod xscale 41 nil)3 G4 n0 q- f' a0 I+ K
  8361.     (tempmod yscale 42 nil)
    ; \/ v+ s- b6 n
  8362.     (tempmod zscale 43 nil)
    6 i# x2 {$ ]# |2 g6 J6 L
  8363.     (tempmod col-sp 44 nil)
    ( [0 f1 m3 q6 m2 r# P
  8364.     (tempmod row-sp 45 nil)
    6 Y  m" r- q( U# A
  8365.     (tempmod columns 70 nil)
    $ N& y8 e: @9 |% Q! l2 }
  8366.     (tempmod rows 71 nil)- K- F5 \* P5 h: }4 Z, T) y: a
  8367.     (if (= xclipmode nil)& }. {/ ^" k" s# E  i* {
  8368.        (entmod elist)
    1 p4 }& q" ~+ x9 w  N
  8369.        (setq xclipmode nil)( t* {5 z1 c( A; t6 }
  8370.     )
    5 g% W! X8 y7 i* b
  8371.     (move_pt1 1)
    6 i' G8 u) |1 M# m0 A
  8372. 7 f7 q: w" j' L2 I
  8373.     ;; Now do the rotation with the ROTATE command.
    % U. s2 e2 |* \+ f9 z; T& R- J
  8374.     (if (/= old_rot rot)$ Y" g' N( s2 \
  8375.       (command "_rotate" ename "" pt1 (ai_angtos (- rot old_rot)))
      ~$ G6 j! D2 j4 O* t
  8376.       (if attr                          ; Else, if attributes were modified,
    $ l; K! G. v1 R. d- f
  8377.         (entupd ename)                  ;   just regen to force attrib display' k( Q% j8 v- f/ y' F6 f( X' O# k) `
  8378.       )
    , a5 G( T* f2 @( W
  8379.     )
    2 n5 ?- \2 K/ |4 A, l9 g
  8380.     (setq elist (entget ename))
    7 {1 r5 r7 s( `4 y
  8381.   )
    2 F' T$ s6 k6 j( p
  8382.   (defun ddblock (/ temp temp_xclip newhatch blkname blklist blktype program xrefpath); {. g+ g3 h- i' L
  8383.     (setq newhatch 0)% Q6 n8 B, k- x
  8384.     (setq blkname (cdr (assoc 2 elist)))
    ; e5 S" v. b5 ]' G1 r: K) M
  8385.     (setq blklist (tblsearch "block" blkname))
    8 X2 E- B: }! j( N" }- c
  8386.     (setq blktype (cdr (assoc 70 blklist)))
    0 K* N1 h$ e) j  A: o9 Y
  8387.     (setq xcliponoff 0)' y/ |1 `9 w5 }4 T
  8388.     (if (or (= blktype 0)(= blktype 36))4 \# @6 O& ^6 ]' L8 \: c; T( p8 J
  8389.             (progn
    : b, a% l+ a; _) \0 r
  8390.               (setq xcliponoff (xclipon elist))
    ' I( A1 t  M, C' h9 H, r( p, N
  8391.           (setq temp_xclip xcliponoff), I1 ~# ]' ]( h' W) p
  8392.         )& l2 t5 m' y7 x( ~: {
  8393.     )
    5 |. M9 b( s9 ^- D  X
  8394.     (if (= (logand blktype 4) 4)
    6 ^( T1 C! c) c9 i3 D
  8395.       (progn
    , @  L! O4 R2 j; [
  8396.         (setq xrefpath (cdr (assoc 1 blklist)))
    6 G- W" K8 u6 x: e' v* k1 r
  8397.         (setq help_entry "modify_External_Reference_dialog")
    ) R) v  Z3 g% g9 r
  8398.         (if (not (new_dialog "ddxref" dcl_id)) (exit))
    / U& g; _( N: v
  8399.         (set_tile "Bl_name" blkname)
    , Y' C2 L# g0 y
  8400.         (set_tile "path" xrefpath)" t/ n5 f1 _8 y6 w( K* t
  8401.       )7 E5 @( ^2 v5 [
  8402.       (progn
    + n) ^, P2 X6 L$ x8 o/ \6 p
  8403.         ;; Get program name for use as Xdata app name
    " e( Z2 B/ P2 t5 J2 Q% ?: f* u8 U
  8404.         (if (not (setq program (getvar "program")))
    : M1 B) u/ Z9 @4 a
  8405.            (setq program "acad"), T! G9 y) `. R+ |# P
  8406.         )* l0 [# F! D' r
  8407.         (if (and (setq temp (assoc -3 (entget ename (list program))))
    8 y" J  t5 b8 i
  8408.                  (= (cdr (assoc 1000 (cdadr temp))) "HATCH")
    2 `# K" c* _5 @, T- k) z) {
  8409.                  (assoc 1005 (cdadr temp))
    ' ~( }- R9 y( F: u
  8410.             )
    5 g0 K* n4 U4 j/ @4 C+ t3 e2 w
  8411.           (progn
    - O' o: q6 \: E7 K  k, ~& R
  8412.               (setq newhatch 1)5 C  Q( `' \' `+ ~
  8413.               (setq help_entry  "modify_Hatch_dialog")
    & k5 i1 Z& Y4 i3 V6 f- L) S
  8414.               ;;; convert the object into a new hatch! \6 l/ a5 P  A( {1 c1 E: Q) G
  8415.               (ai_undo_on) ;; enable undo
    : m8 [, {  j7 c! _) H
  8416.               (COMMAND "_.UNDO" "_Mark")
    , v1 {1 o$ h) ~% z2 V  S
  8417.               (COMMAND "_.CONVERT" "_Hatch" "_Select" (cdr (assoc -1 elist)) "")  p1 X4 t9 U# P1 R
  8418.               ;;; suppress nasty message from convert command
    3 F' |0 Y, b, h$ {
  8419.               (princ "\r                                                                      \r")
    * S, K. a( _5 S  C% w- f1 K
  8420.               (setq elist (entget (setq ename (cdr (assoc -1 elist)))))
    6 @/ x3 H+ Z$ M  I; W
  8421.               (setq old-elist elist)
    : v/ ]& y6 r/ T1 ~
  8422.               ;;; If we have cancelled ddmodify
    / u1 b+ e4 N: c$ F/ g- ?
  8423.               (if (not (ddnewhatch))      ;;; (ddnewhatch) returns nil for Cancel or T for Ok" Q0 l& }: L& k. J- F+ I9 p" i
  8424.                    (command "_.UNDO" "_Back")+ n' `5 t% m2 p7 e
  8425.               )! h' \* L! T" z' S7 }* Z& s4 N- N+ `
  8426.               (ai_undo_off) ;; restore undo state
    . g! n+ C6 O& I3 L4 ^
  8427.           )
    1 N8 p+ M, n% l' W
  8428.           (progn
    & |/ B) X. @, l" g! @& d3 w
  8429.             (if (not (new_dialog "ddblock" dcl_id)) (exit))# w; [; f4 j! z3 U
  8430.             (if ( = "*" (substr blkname 1 1))
    3 F) T7 y' a* `
  8431.               (set_tile "Bl_name" (strcat blkname " - Anonymous block"))
    ; h9 a% @) o% g% B; F0 B* K6 z% [! Q
  8432.               (set_tile "Bl_name" blkname)& I' ^+ u8 Q% y' W; u$ h
  8433.             )
    : P7 w2 i5 F) F, B
  8434.             (setq help_entry  "modify_Block_Insertion_dialog")+ M! c0 P( g; `4 x9 J6 f. f
  8435.           )9 V5 ]" c! O+ w* k
  8436.         )
    ( K6 p/ b# F4 l1 E
  8437.       )) P! Z. ?7 U& i
  8438.     )2 @& w. [3 f  F6 j9 k* Q
  8439.     (if (= newhatch 0)
    ( N6 O, H; i6 g& E! H
  8440.       (progn
      U; q! [$ x5 P8 b% W1 L
  8441.         (set_tile_props)- I( _! S1 I9 R; C+ Z$ l5 I
  8442.         (set_tile_handle)4 a$ V1 M7 |" S: O. l1 f, [
  8443.         (set_tile_pt1 1). y+ {0 f- A+ o" p2 m
  8444.         (set_tile_rot)- d0 H3 q6 l, V
  8445.         (set_tile_scale)
    7 [% ?8 h( L, S, b+ F3 y
  8446.         (set_tile_rc)
    % @5 @: ~' Q/ @
  8447.         (if (= (logand blktype 1) 1)) e! J/ O" d& Y; U6 T0 P
  8448.           (progn
    " m" N% v' i' ?& ?7 x# u1 h
  8449.             (mode_tile "xscale" 1)8 c. O. Q1 ^4 L% f! }/ {4 v7 r) N
  8450.             (mode_tile "yscale" 1)
    " K6 [. o, B- t# `
  8451.             (mode_tile "zscale" 1)* W% @4 K% n( P6 H8 l
  8452.             (mode_tile "rot" 1)' D; `9 O# O. _
  8453.             (mode_tile "columns" 1); Z) a" I6 d! T3 w1 {  d: c
  8454.             (mode_tile "rows" 1)7 X+ S, ~, ^/ |5 h, x
  8455.             (mode_tile "col_sp" 1)* s2 |+ r1 |9 O" @0 K
  8456.             (mode_tile "row_sp" 1)
    ! `' i* @* x( ~' i, s
  8457.           )/ F& \! C0 T, _# _+ S: z
  8458.         )0 n( ^* R; Q4 Q- x0 R
  8459.         ;; Define action for tiles
    , N, [0 f* M) L1 k0 k; ^
  8460.         (set_action_tiles)
    / |: N) N6 Z/ l5 _5 A0 E
  8461.         (setq dialog-state (start_dialog)), ?  S: E! w# w% K+ I! A: I6 Y% c
  8462.         (cond! Y. @2 b+ ^( g
  8463.            (  (eq dialog-state 0)7 ?2 Z" S2 B- G& e
  8464.               (setq pt1 (trans (cdr (assoc 10 old-elist)) ename 1))8 \6 e- v# P+ p
  8465.               (move_pt1 1)
    . f5 Z$ Z9 w" e0 n6 l
  8466.               (reset))
      u6 G7 h( g1 ]4 W$ O* R& p4 v# r
  8467.            (  (eq dialog-state 1)
    : G' e; U9 X% t" ]9 t2 ?
  8468.               (if (and (/= temp_xclip xcliponoff) (or (= blktype 0)(= blktype 36))), o" N% m/ l0 c; S
  8469.                 (xclip)% _3 P1 V3 F- I+ C' U# l
  8470.               )
    7 i: e- A) g- P1 j
  8471.               (modify_block))
    + N% |; ^9 Y4 T: C) x2 o
  8472.            (  (eq dialog-state 3)
    : m5 j: F  g4 x. N) w
  8473.               (modify_block)
    + j. a2 N$ ^- M
  8474.               (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))7 O5 @. E9 b2 I4 T- q8 y
  8475.               (move_pt1 1)
    & b* W/ H" p1 R
  8476.               (ddblock))
    ' T" }; L$ o8 c
  8477.            (  (eq dialog-state 4)1 I9 Y, c* o* k; N; H& O* G
  8478.               (modify_block): D6 `- ~) A* O% V
  8479.               ;; Get current handle.
    , C3 }$ S! D* J" P4 [
  8480.               (setq hand (cdr (assoc 5 elist)))+ F; s% A& p: D9 Y. d
  8481.               (command "_hatchedit" ename)
    2 _* {0 `2 G! g
  8482.               ;; If OK in hatchedit, a *new* entity is created and the old one
    . Q& Y8 P' m& P8 j5 ^4 W; N4 f
  8483.               ;; is deleted.  So if the old one exists, it must have been a! e' _  X! V* s  M$ s, u  B, U
  8484.               ;; so rest the entity.+ |( N( R5 ^. z- x
  8485.               (if (entget (handent hand)) (reset))
    & W2 _& Z7 [) P; b; e. h; f
  8486.            ); A7 |9 e1 A- y# R
  8487.         )* ], J9 _3 x0 ~
  8488.       )
    $ Q3 w0 R1 I: [% S1 Y8 g% C. \. w
  8489.     )
    ( ~( T! L8 {# w2 W1 f& u$ Q# y) E3 C! Z
  8490.   )
    4 ^4 @4 H0 S" J0 M9 P
  8491.   ;;
    - U% Y& Y# j' Y- q
  8492.   ;; Modify SHAPE
    ( @  i, l- m: S( ^9 A
  8493.   ;;) H8 U+ C; |: ^5 f: Y1 [4 N' B
  8494.   (defun modify_shape ()# V& p+ n6 m5 U' {
  8495.     (modify_properties)
    ! W1 I. `9 X. P# T
  8496.     (setq pt1 (list x1 y1 z1))
    " l8 X+ Z) L9 B' |% v* `
  8497.     (tempmod pt1 10 1)# z# I" B! k8 i' `' [$ ~, [' J2 i! C% J
  8498.     (tempmod hght 40 nil)
    & |: |+ Z' E3 a- |3 b
  8499.     (tempmod wid 41 nil)/ v4 l- j: E: i6 d$ c, G
  8500.     (tempmod rot 50 nil)
    : O. F# L6 I4 D  T- r: T
  8501.     (tempmod obl 51 nil)
    # ^+ L! e) y  I
  8502.     (entmod elist)
    9 _8 q8 r; Q$ r+ \7 _6 Q
  8503.   ), t* d/ i& X- Q; i* @
  8504. / q' ?5 ~; f# C  w8 n9 q) D
  8505.   (defun ddshape ()
    $ n2 v5 p! |+ s- U3 a2 A0 [
  8506.     (if (not (new_dialog "ddshape" dcl_id)) (exit))
    % M. j! x6 e- V8 x* y) x& F; N
  8507.     (set_tile_props)3 P, F8 f" S7 E, `/ o' N: Q
  8508.     (set_tile_handle)
    ) C2 ]/ _. ]$ Y. H  ~" D$ j
  8509.     (set_tile_pt1 1)
    ) f; z6 F3 Q, u5 g: X) I# j
  8510.     (set_tile_rot)
      c3 d; E# K6 |# C8 Z
  8511.     (set_tile_hght)* M& G' S8 s! r& p
  8512.     (set_tile_wid): C  h$ W: t- X; ]
  8513.     (set_tile_obl). B4 v. s$ _+ i5 v* w; ]3 U
  8514.     (set_tile "sh_name" (cdr (assoc 2 elist)))
    # Q+ H; z3 I4 H" y
  8515.     ;; Define action for tiles2 K$ b+ ]' Q5 m$ d
  8516.     (set_action_tiles)
    3 Q0 ?' Y- h$ j+ {! d- E* Y
  8517.     (setq dialog-state (start_dialog))
    ! N8 N" J- O' C) X
  8518.     (if (= dialog-state 0)7 j1 M0 |( A, D, j% v, G4 W
  8519.       (reset)' O8 D) `1 n/ k( \3 P' s% A% \& X
  8520.     )  S0 k" D: J' G2 m! [, s+ J* w" j
  8521.     (if (= dialog-state 1)
    : Y6 x0 l* j2 T. `7 `# p% r9 Q
  8522.       (modify_shape): Z2 q2 ^5 l0 a* |, p% J4 ]
  8523.     )/ m' H( W$ H. b2 A0 V
  8524.     (if (= dialog-state 3)5 r7 l' P( Y+ [1 @
  8525.       (progn
    : p' H% k6 B# b" |
  8526.         (modify_shape)
    & h3 M) c5 c1 ?$ ~0 ?( S
  8527.         (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))0 R( J9 x  W' q- O( e6 O
  8528.         (ver_pt1 1)2 k/ P- s3 L9 h, H
  8529.         (ddshape)
    ) U( F0 b) {% F+ ]2 O, v# J& k
  8530.       )
    : B4 b, A; {, X3 Y$ R
  8531.     )  J' f% c6 n; n
  8532.   )
    6 Y) X% @2 L$ m5 x3 N% b0 p
  8533.   ;;) c& v$ Z1 s% E+ C: T8 c
  8534.   ;; Modify TEXT or ATTDEF
    3 J) L7 E; e9 C( z# G5 a
  8535.   ;;
    ; a! O4 {6 M9 p% \2 b
  8536.   ;; Set bit code for upside-down and backwards setting
    $ u/ H* @& V+ G# D: n8 J
  8537.   ;;+ P9 u+ e* O3 U# X, V4 D/ ^. O
  8538.   (defun code_71 ()/ b4 P8 H' ~9 T: q* V' |
  8539.     (cond ((and (= bkwd "0") (= upsd "0")) 0)
    4 @* m; v; c& \7 T4 A# p
  8540.           ((and (= bkwd "1") (= upsd "0")) 2)" w  @% G7 K. w% a
  8541.           ((and (= bkwd "0") (= upsd "1")) 4)6 _% v: E9 u! N
  8542.           ((and (= bkwd "1") (= upsd "1")) 6)
    ) V5 B& _# |5 M" F) D4 p
  8543.     )  J$ i# L0 M! |5 @* @0 J
  8544.   )
    ( v* H; R# u0 ]4 F9 U$ z2 j
  8545.   ;;6 @( O- z  `" }( h! `; E; u$ H
  8546.   ;; Style action.  Reset widget values to style defaults
    4 _9 N% ?6 j2 W7 `
  8547.   ;;# L# D% y1 D  g8 y" D
  8548.   (defun style_act (index / style-list)
    7 g2 g2 d* p3 I! A4 Z
  8549.     (setq style-idx (atoi index))$ O1 `! G+ z; i3 c( b- R
  8550.     (setq tstyle (nth style-idx slist))5 E1 d& j, y9 b! `; S  C8 ~  ^, ], }
  8551.     (setq style-idx (itoa style-idx))" L) c2 |! w: i8 j) Y" m
  8552.     (set_tile "style" style-idx)% k; n4 |/ d# t! r( y9 ?
  8553.     (setq style-list (tblsearch "style" tstyle))" x7 n1 a* Y  i4 g: J2 a
  8554.     (setq shght (cdr (assoc 40 style-list)))
    ( u- v! s) v1 Q, B8 E0 n
  8555.     (if (/= shght 0)" `" c$ ]! D$ I7 g: [* q4 `# J7 @
  8556.       (progn
    6 o% M! q& S, e3 ]
  8557.         (setq hght shght)
    + q# u% o! n% q' q* `
  8558.         (set_tile "hght" (ai_rtos hght))
    $ H) S/ d/ K0 v! t
  8559.       )
    ) {! C7 U7 `6 |" ~# X  Q* f. X
  8560.     )
    6 y. k, e8 j3 f; L. Y% i; T& G5 |3 i& B, T
  8561.     (setq wid (cdr (assoc 41 style-list)))
    % I8 ^  z# P+ B8 b8 d# @
  8562.     (set_tile "wid" (ai_rtos wid))* `5 s( ^/ v( p' n
  8563.     (setq obl (cdr (assoc 50 style-list)))
    . v" p, h% e8 n0 N$ O- y
  8564.     (set_tile "obl" (ai_angtos obl))1 {  i3 A2 V5 y! y3 D
  8565.     (setq bk-up (cdr (assoc 71 style-list))). ]9 x. z2 \9 }* a. H2 k% j; a; I2 [
  8566.     (if (= (logand bk-up 2) 2). T0 P; e$ X, ~
  8567.       (set_tile "bkwd" (itoa (setq bkwd 1)))
    0 \- {/ v" m; g2 J/ w
  8568.       (set_tile "bkwd" (itoa (setq bkwd 0))). t4 F5 T7 K8 O$ F" F  D# e6 e1 L
  8569.     )$ V! }: P% z& M) ^- q2 ]
  8570.     (if (= (logand bk-up 4) 4)# u# y' a( F9 s" J$ f
  8571.       (set_tile "upsd" (itoa (setq upsd 1)))! m9 w7 v2 C" ?5 z7 z+ Q
  8572.       (set_tile "upsd" (itoa (setq upsd 0)))
      g- D5 b) y  ^, w6 v, A
  8573.     )
      Y# [6 i! ?& Q
  8574.   )
      @  l/ }; Q7 f
  8575.   ;;: M: ]1 k" D, `) V6 b( w: E
  8576.   ;; Justification action.  Set vertical and horizontal alignment variables," k0 r& J; W* @0 U% Y* V( o" n
  8577.   ;; grey out rotation and height if alignment = "aligned", grey out rotation% ~: _& f4 T/ n% b. S# T% X
  8578.   ;; if alignment = "fit".
    ! [$ Y9 e. |1 j+ ?
  8579.   ;;
    ; g; M  @4 s: J- W- h1 i0 z
  8580.   (defun jlist_act (index / templist)' c+ J! w  k. N1 S. L+ D, p
  8581.     (setq just-idx (atoi index))# E$ b. e. [% y, U+ o
  8582.     (cond
    2 E. _9 e8 m# Z3 e7 \- {7 W3 z9 r
  8583.       ((= just-idx 0) (setq va 0 ha 0))$ Q0 B- A" I; w& ]
  8584.       ((= just-idx 1) (setq va 0 ha 1))
    7 U: x5 B2 f4 j3 N: n" _; z! a
  8585.       ((= just-idx 2) (setq va 0 ha 2))' x' `' q" c' j7 j7 ?# [
  8586.       ((= just-idx 3) (setq va 0 ha 3))( n, y+ {3 L) |7 `% S
  8587.       ((= just-idx 4) (setq va 0 ha 4))
    + f; R5 w# k* e* N$ A5 V- i
  8588.       ((= just-idx 5) (setq va 0 ha 5))
    - B2 S6 {8 L* J3 `
  8589.       ((= just-idx 6) (setq va 3 ha 0))
    5 v" }" g! z. O3 y
  8590.       ((= just-idx 7) (setq va 3 ha 1))6 k8 ^" C4 w5 ?8 v% r# P
  8591.       ((= just-idx 8) (setq va 3 ha 2))5 v* W* O$ U8 R6 A1 a: j
  8592.       ((= just-idx 9) (setq va 2 ha 0))6 A. q) p& p0 s# W7 k
  8593.       ((= just-idx 10) (setq va 2 ha 1)), y5 C3 h3 e/ D
  8594.       ((= just-idx 11) (setq va 2 ha 2)), k: C& a& _" x
  8595.       ((= just-idx 12) (setq va 1 ha 0))
    + G# U9 }# y( l, d' O
  8596.       ((= just-idx 13) (setq va 1 ha 1))
    ' R$ o" |. z+ X9 n- f! r
  8597.       ((= just-idx 14) (setq va 1 ha 2))
    4 I5 J, P- d4 V* Z4 l6 l
  8598.     )
    , ?% m) B2 ]: v) B
  8599.     (if (or (= ha 3) (= ha 5))  ; If Aligned or Fit text
    , a/ {% z% |" j  A7 k( J. {! Z
  8600.       (mode_tile "rot" 1)
    6 g8 S% q& f6 }" X. W! e1 V
  8601.       (mode_tile "rot" 0)
    & ^1 L8 F( Z" J$ ]. ?" r: @5 P
  8602.     )4 A0 o+ [* Q, E8 r) h
  8603.     (if (= ha 3)                ; If Aligned text
    * S0 \3 w+ [5 |; G" K8 L5 q
  8604.       (mode_tile "hght" 1); Y! S, ]% S& r  E
  8605.       (mode_tile "hght" 0)7 Q+ c4 k9 y+ J
  8606.     )
    3 ^" n& E' t: ?9 ]8 J7 Q2 b" o
  8607.     (if (= ha 5)                ; If Fit text6 M5 @  z: @) e2 \, @: u
  8608.       (mode_tile "wid" 1)' t' _& Z) O# o+ w. t, f
  8609.       (mode_tile "wid" 0)1 Z9 ?& w: t: Z
  8610.     )
    - w( t( L# y9 F' M
  8611.     ;; Reset rotation and height if changing from aligned.
    8 h/ B% n0 w+ |& ]7 Z6 ^7 x7 X" ~
  8612.     (if (and (= ha-prev 3)  (/= ha 3))
    ; _" X/ ~& t. E  V; m! O8 g
  8613.       (progn
    , z: t2 s8 d7 N, c9 r( @
  8614.         (set_tile "rot"  (ai_angtos (setq rot 0.0)))4 F3 K/ n/ c* r% }
  8615.         (set_tile "hght" (ai_rtos (setq hght 1.0)))2 `1 I. G( j5 q& D0 d
  8616.       )
    : f9 y& ^# A1 Q; w- k( \" k# i
  8617.     )- O; n  N9 d& l+ a! N
  8618. 2 ]- f) d7 J+ e6 T: x
  8619.     ;; Reset rotation and width if changing from fit.+ A% H) s5 B: }$ {0 B  g  m# r
  8620.     (if (and (= ha-prev 5) (/= ha 5))
    ' ^6 n" P* B2 u  ]) _: ]7 r
  8621.       (progn
    1 c8 p) M* |- ]& F% O1 d
  8622.         (set_tile "rot" (ai_angtos (setq rot 0.0)))
    " Q' Z/ ^; }- t2 g8 [
  8623.         (set_tile "wid" (ai_rtos (setq wid 1.0)))
    7 G& O" f/ w% S4 T' |; Z
  8624.       )
    * Q7 S% [: m/ B; i0 i6 b* v" B% W
  8625.     )
    * y* F. [) k% @
  8626. 4 ?. w2 l# ?0 v
  8627.     (setq ha-prev ha)           ; update ha-prev for next time
    & A5 `# \5 C4 a) l
  8628.     (setq just-idx (itoa just-idx))
    " V7 K$ z5 D7 W& q
  8629.   )
    9 w* g. p' [' U
  8630.   ;;) H, U0 D1 T, }; ?0 x5 k
  8631.   ;; Set intitial alignment setting based on vertical and horizontal alignment* p0 Y4 h6 [0 Z) x6 D6 r' O
  8632.   ;; bit codes.8 [1 y  `( x+ u2 b6 {
  8633.   ;;
    & |* m' R) i: a# _! \
  8634.   (defun set_just_idx (), H3 j/ [; y2 X" `) `& C8 O/ k
  8635.     (cond, s: d: z8 O( n2 q( E/ X1 v' K
  8636.       ((= ha 0)             ; Horiz alignment = Left" {, ?7 @& V  e
  8637.         (cond
    " x- u7 `2 u$ R
  8638.           ((= va 0) (setq just-idx "0"))/ t# [% r8 b, @  o0 G1 J
  8639.           ((= va 1) (setq just-idx "12"))# o. @2 o/ p) n  r
  8640.           ((= va 2) (setq just-idx "9"))
    2 ]; d7 _1 u% e$ n6 p6 X+ _9 b
  8641.           ((= va 3) (setq just-idx "6"))0 C: k1 ]1 @, A7 R3 s+ X
  8642.         )4 Z# B& b( g$ m3 A
  8643.       )
    & ~* K# y) R- \4 J6 H; t$ ?/ M. x
  8644.       ((= ha 1)             ; Horiz alignment = Center
    4 A7 w. G- l, d. r( P
  8645.         (cond
    : r' T- s) J8 V! a, W* T
  8646.           ((= va 0) (setq just-idx "1"))& ]; A3 @' U+ Z  n  }6 A9 y
  8647.           ((= va 1) (setq just-idx "13"))
    - Z* ^" Y8 q* b
  8648.           ((= va 2) (setq just-idx "10"))
    ' S0 ]! R7 `4 P* R; z
  8649.           ((= va 3) (setq just-idx "7"))3 s+ S8 _" v  X) E$ p
  8650.         )
    0 u: ~  ?( m& p
  8651.       )* p( C6 e" I# w
  8652.       ((= ha 2)             ; Horiz alignment = Right
    ; G" J9 `8 O! V2 ~5 @1 S/ [7 c
  8653.         (cond
    $ {* @, `3 X' {* O; ^- A7 v
  8654.           ((= va 0) (setq just-idx "2"))' N3 A) h7 j/ }, q
  8655.           ((= va 1) (setq just-idx "14"))& q5 R1 g, c) A: _( U9 Q$ H$ t4 t
  8656.           ((= va 2) (setq just-idx "11"))% y- P) W: }2 x+ p! L
  8657.           ((= va 3) (setq just-idx "8")): J* @/ m& ^3 C+ B" `; J  K3 t
  8658.         ): {& r5 B/ X- g7 _# y: V7 O
  8659.       ). @7 O3 O5 U7 {
  8660.       ((= ha 3) (setq just-idx "3"))   ; Aligned
    : M7 v+ Z7 D* h- {
  8661.       ((= ha 4) (setq just-idx "4"))   ; Middle. V) g6 J0 o1 R& A" z2 F
  8662.       ((= ha 5) (setq just-idx "5"))   ; Fit
    , f5 Y+ |3 _- h" K5 }+ y
  8663.       (T (setq just-idx "0"))
    $ Y$ C$ a& y. F+ y" P
  8664.     )+ ^" K3 a5 P( |) [8 d' W
  8665.     just-idx, |. @+ b) C$ k0 k$ O
  8666.   )$ s! S- m8 Y  E/ H

  8667. + ]$ R  m$ }& ~9 D/ D" J  V( w; M; g
  8668.   (defun modify_text ()% }. p" J' M% D% m$ b5 Y* f# Z+ |
  8669.     ;;  insertion point+ H# \" n8 u$ c6 m7 {
  8670.     (setq showpt (list x1 y1 z1))
    # Q& e8 O6 n; G8 x, e8 F% G
  8671.     (setq bit-10 (trans showpt 1 ename))
    ( T3 z2 B; s, C+ R- O: |# c
  8672.     ;;  alignment point; ]) \+ `- p: s. U; G# c) j! `
  8673.     ;;  for 'Aligned' or 'Fit', alignment point must be different3 A% d9 [, N- w/ h8 s" B
  8674.     ;;  for all others, use insertion point
    0 Z  T# u7 O2 L! J4 D$ h) e
  8675.     ;;  (ACAD will recompute insertion point)
    ) M# R+ q: G! W$ j) e
  8676.     (if (or (= ha 3) (= ha 5))
    : ]* m0 |$ ~, H. R" m7 t0 H
  8677.       (progn
    2 M  ?3 y, }9 o  G
  8678.         ;;  if no alignment point, fabricate one; M0 z) @3 S! g' {" |3 e( X5 }. k
  8679.         (if (not alipt)
    . x! c9 |* x' q1 t1 O
  8680.           ;;  add text width to insertion point, Y5 }5 i: Y0 Q/ s6 ?7 O
  8681.           (setq alipt* i4 ~! u: A8 O* q- W$ o
  8682.             (list (+ (car showpt) (car (cadr (textbox elist))))
    1 v- W# C$ w5 {
  8683.                   (cadr showpt)
    # t% ^, I1 g8 L; T
  8684.                   (caddr showpt), ?3 I9 X' B' u! n  _5 E. y
  8685.             )3 X/ E: t# m" {( Q* n! X
  8686.           )& j8 b( l" U5 f; U
  8687.         )
    : u  J7 s  L- D0 q# t& Y. |  D
  8688.         (setq bit-11 (trans alipt 1 ename))' O! E$ U' N5 o* `4 s7 S  S9 \+ k
  8689.       )
    1 b, t3 N& \% [4 v) p- E3 i) O
  8690.       (setq bit-11 bit-10)% Q5 M& X+ f8 T+ o
  8691.     )
    6 g+ ?+ F7 h3 m' l7 T
  8692.     (modify_properties)
    . C; q- h/ G! ]* b3 f$ T6 x' I& R
  8693.     (tempmod tstyle 7 nil)' O# ?% @2 j! b3 v+ l- G+ I
  8694.     (tempmod bit-10 10 nil)" L- D% K  r9 ]* X2 k7 c
  8695.     (tempmod bit-11 11 nil)9 i5 a" z7 G; N2 M
  8696.     (tempmod text 1 nil)
    . K% E. g" ~$ X$ a
  8697.     (tempmod hght 40 nil)3 c; A0 a# ^- I3 n$ r. h
  8698.     (tempmod wid 41 nil)0 j/ z' x7 P" F& P; }( T7 [5 @
  8699.     (tempmod rot 50 nil): e  [: ?( ~9 q% @3 B( R" D! Z
  8700.     (tempmod obl 51 nil)
    % V' V, R7 g. m
  8701.     (setq bk-up (+ (* bkwd 2) (* upsd 4))); X0 g/ P; s7 l
  8702.     (tempmod bk-up 71 nil)
    9 s, i9 o' c- ~. D4 r# g0 }$ K) L
  8703.     (tempmod ha 72 nil): \. Z6 [/ o% B6 ]7 E
  8704.     ;; Attdefs use 74, text 738 E2 P7 k& |2 N* g
  8705.     (if (= etype "ATTDEF"). M$ @+ n1 \2 z) f7 r  P
  8706.       (progn
    5 B, R: L3 I( F+ J4 c* W
  8707.         (tempmod attag 2 nil)% K: \+ {5 K0 s) L2 i0 o# b
  8708.         (tempmod atprompt 3 nil)
    5 M# b0 B2 p' O3 Z
  8709.         (setq icvp (+ inv (* 2 con) (* 4 vfy) (* 8 pre)))
    # L0 S5 e( P4 C- g
  8710.         (tempmod icvp 70 nil)
    + s- J7 H& P0 r1 S7 k
  8711.         (tempmod va 74 nil)  n0 f8 q* I2 R/ B
  8712.       )
    9 s: _$ L/ F8 S
  8713.       (tempmod va 73 nil)$ J+ a5 n5 f" t/ N) ~# ?
  8714.     )
    + L; q, w# h" B$ T3 n
  8715.     (entmod elist)
    9 ~4 W+ o  I# z6 J3 j/ T
  8716.   )
    1 S9 I  V/ B1 S! @9 m( u
  8717. / D4 A" t# P7 B. d
  8718.   (defun ddtext (/ 2ndpt slist i)* r9 w2 S- w$ X* X( W
  8719.     (if (= etype "TEXT")
    4 q3 }$ _+ M% j- p- `
  8720.       (if (not (new_dialog "ddtext" dcl_id)) (exit))
    9 }' @$ e2 E; x/ `
  8721.       (if (not (new_dialog "ddattdef" dcl_id)) (exit)). W$ _5 n) G( J" t5 M6 b! j
  8722.     )
    4 Y' K/ x/ Y9 f! D
  8723.     (set_tile_props)0 y0 o8 o9 C' S! b( U; v& ~) J; B
  8724.     (set_tile_handle)
    7 ^: j( V) P) ?2 n; I9 s/ m) ^
  8725.     (set_tile_text)# P- I# S9 F, G! S/ X* _" k  W
  8726.     (set_tile_tag)# U% y* d' V. Y# P9 q
  8727.     (set_tile_prompt)
    ! k9 y! G$ p( I" e4 F- o
  8728.     (set_tile_hght)
    8 K) ~7 I# f) F5 ~
  8729.     (set_tile_wid)9 \% _" q+ d2 ~8 @+ [
  8730.     (set_tile_rot)
    0 j! b4 j( b  S/ N. g
  8731.     (set_tile_obl)& Q/ M- a3 Y9 G& v! K3 D
  8732.     (set_tile_bk-up)4 ~3 |% m+ Y8 F. e
  8733.     (set_tile_icvp)
    2 x, w) s+ ~6 k) J
  8734.     (set_tile_style); J- ~* Z$ U6 r, }, h0 H* l
  8735.     (set_tile_just)6 B( W' T3 k# g4 U% W# S, Y' L
  8736.     (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    . `* X2 P7 l7 e$ j  W
  8737.     (if (not (assoc 11 elist))
    4 O1 u3 W& W9 v* J. w0 N/ D
  8738.       (progn (setq pt2 pt1)2 o+ U/ n. r. ], b6 d/ K
  8739.         (setq elist (cons (cons '11 (cdr (assoc 10 elist))) elist )): n' i* ?9 n. N
  8740.       )  i9 I" r+ T: K. A5 L$ P1 X
  8741. ;;(trans '(0.0 0.0 0.0) ename 1))+ k3 J5 Z) P5 [; R9 i7 F# \% r
  8742.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))
    5 X6 \  B1 l( z. G
  8743.     )6 U  f- g* D4 Z& E( y, N
  8744.     (if (or (and (= ha 0) (= va 0))
    5 \6 [# R* I* |5 ?7 W- J3 e& d, v
  8745.             (= ha 3)+ l" B& |9 L- x1 X9 m
  8746.             (= ha 5)) `( |; m: I6 x0 O5 }* x: X
  8747.         )
    ( }' A9 g" W! ^; x
  8748.       (setq showpt pt1)
    ! Z1 {8 S/ J3 j' s2 X9 U. K- U
  8749.       (setq showpt pt2)% G% v3 V1 G# |1 J+ n0 {: r$ S1 r
  8750.     )
    % r8 k' Q: z7 W6 Q. t* e
  8751.     (if (or (= ha 3) (= ha 5))
    * e. @2 L  i8 ~9 q, u% p1 [
  8752.       (setq alipt pt2): z. L) p) a2 ?; |" ~) d
  8753.       (setq alipt nil)4 N! ?  K, x$ \6 `9 b/ t# ^
  8754.     )1 Z- y4 A- n: {. v5 N

  8755. 9 L. K  v) F+ P8 h1 S( T# A
  8756.     (set_tile "x1_pt" (ai_rtos (setq x1 (car showpt))))
    6 y/ H, b2 O) G+ N! V( R
  8757.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr showpt))))+ \! H+ t0 ~7 w& i$ U5 [: K
  8758.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr showpt)))); A+ O$ }/ O: V' a

  8759.   D1 S, g: T4 z
  8760.     ;; Define action for tiles
    5 k! @2 ~% i& C3 Y2 B# h
  8761.     (set_action_tiles)
    & [9 S0 [" C& o2 l2 c1 t
  8762.     ;; Set focus initially to the text edit box.: {* d: I! k+ i1 {# E9 p' {
  8763.     (if (not i) (progn (mode_tile "t_string" 2)(setq i 1)))4 X$ |3 S/ K2 Z2 w
  8764.     (setq dialog-state (start_dialog))# z6 Y. B, m. x2 O. m
  8765.     (if (= dialog-state 0)
    : D2 N  d/ y! T  a/ Z
  8766.       (reset)9 Y- \% S" r3 b; f+ W% r) _
  8767.     )' L1 B, E+ K9 H5 Y) E# Y4 L
  8768.     (if (= dialog-state 1)
    * T. g! o6 T5 o& V
  8769.       (modify_text)
    / L) I" T8 n: m7 [. x" h" r! o
  8770.     )9 _% G6 G1 c1 x: o( [! W6 G
  8771.     (if (= dialog-state 3)3 ]/ I: H' @0 Z' ~  q
  8772.       (progn* Z$ l" h8 Y- v# |7 ~& K
  8773.         (modify_text)
    7 L1 T3 e7 M4 M7 r% i: ^2 V
  8774.         (if (or (= ha 3) (= ha 5))
    5 o' b$ }  S6 i) m7 r& K
  8775.           (progn
    . s2 |5 u( l8 Y& _) ?2 F
  8776.             (setq showpt (getpoint (list x1 y1 z1) "\nFirst point: "))
    # S4 r* F4 u4 R4 x9 U4 `& P
  8777.             (if (not showpt)
    1 U; L# S; Y  O  b/ j
  8778.               (setq showpt (list x1 y1 z1))
    * h/ E; v& k! \8 v1 }& o- N
  8779.             )
    / R# A5 S/ |0 y# m& P$ o/ B! z' O, \
  8780.             (setq 2ndpt (getpoint showpt "\nSecond point: "))
    0 u+ `$ q/ P+ o0 M$ t$ u2 d
  8781.             (if 2ndpt, A6 {; q8 T5 c" R: i+ r4 E0 S
  8782.               (progn6 U4 R% b5 [' d( }8 c
  8783.                 (setq alipt 2ndpt)
    0 @# `# U9 D7 K( w
  8784.                 (tempmod showpt 10 1)3 L4 [3 j& z5 ~$ V, C. f! ]
  8785.                 (tempmod alipt 11 1)
    , s( }0 M$ A- U; z
  8786.                 (entmod elist)
    * R! A2 V7 N& s8 S
  8787.               )
    " {) L/ Y; G7 H
  8788.             )/ ?* ?/ V6 J' `3 K9 m9 O
  8789.             (setq elist (entget ename))
    0 ~3 @+ P' |% ~; ]  ~
  8790.           )
      O! \/ s, ^+ P
  8791.           (progn
    % p2 B# o; s7 Z7 W
  8792.             (setq showpt (getpoint (list x1 y1 z1) "\nInsertion point: "))% }2 d1 R1 E& R) M
  8793.             (if showpt
    4 l! h/ K( ?0 j% ~( H& r! X
  8794.               (progn& p" X! Y5 ^% l" o! s: L$ w
  8795.                 (if (and (= ha 0) (= va 0))) j& ~/ t, C% V# k* i+ h
  8796.                   (tempmod showpt 10 1)
    $ C7 t' j# f# s5 n& W
  8797.                   (tempmod showpt 11 1)( t! t8 K, v7 X' S7 ?* s
  8798.                 )+ i7 |) _$ |( i' j
  8799.                 (entmod elist), q3 [: M2 p' I& }0 e
  8800.               )
    : W* Z' f) T0 V1 s
  8801.               (setq showpt (list x1 y1 z1))
    : {6 Z5 i* W, c: i$ ?! s$ c
  8802.             )6 W8 C1 `3 e0 V5 ~6 r4 n" v
  8803.           ), ^5 z' g. A5 E
  8804.         )
    , K. L2 Q1 R( L: B2 i
  8805.         (ddtext)7 a6 b$ m, h# a1 M* i2 I/ I' R
  8806.       )
    , d9 T3 Z2 A2 G, e: g
  8807.     )
    ; ~  g6 c/ d# ]) c) M
  8808.   )) |9 Y8 I* d2 }9 T, }2 f! t$ K

  8809. ' L! A6 o, |6 o  |4 G$ @
  8810.   ;;( l' x. N2 R+ M
  8811.   ;; Modify MTEXT6 `3 y: o% i' s$ P  l, v9 f
  8812.   ;;* E4 }- ]/ K/ V
  8813.   (defun modify_mtext ()
    " p6 R. R' M: H. b% @; q9 U
  8814.     (modify_properties)
    6 f- C" a9 F4 B/ K$ Q1 {* A
  8815.     (setq pt1 (list x1 y1 z1))$ c3 b: e+ J# {, V6 I" ^' ^6 k
  8816.     (tempmod pt1 10 0)6 N$ z8 T) O# N4 V: Z' w0 e3 ^
  8817.     (tempmod text 1 nil)
    ! G1 _8 J5 P1 R7 k, @4 V/ s2 K) @
  8818.     (tempmod tstyle 7 nil)' r' i  x+ @+ y( e
  8819.     (tempmod just-idx 71 nil)
      y0 h; Y' \6 [5 T: r+ ?
  8820.     (cond8 s& G( H) T% b
  8821.       ((= dir-idx 0) (setq dir-idx 1))
    / {$ b6 C9 f# c) J8 j- l
  8822.       ((= dir-idx 1) (setq dir-idx 3))6 b* B& @) W3 R6 Y
  8823.       ((= dir-idx 2) (setq dir-idx 5))
    * Z* T$ [1 X  ~0 B) l8 E9 g
  8824.       (T (setq dir-idx 1))1 {) K6 m& P1 i
  8825.     )
    ( e9 T+ G7 {: G& _$ Q; Q) K0 m
  8826.     (tempmod dir-idx 72 nil)3 Z2 J: q5 H; [7 G) B
  8827.     (tempmod hght 40 nil)1 e- r! O# q4 w
  8828.     (tempmod wid 41 nil)2 w5 U( _; C/ K, M- l
  8829.     (tempmod rot 50 nil)
    ; n: `. U$ Q6 m* D6 C
  8830.     (entmod elist)3 H; b$ L$ y! P. z. |3 y# x7 T
  8831.   )
    ( [) o  h% Q3 R( ?( g
  8832. 5 X) ]1 j' }- F0 o3 m
  8833.   ;; Set MText text style
    - }0 V$ U: z+ A9 H8 V/ K
  8834.   (defun MText_style (index / style-list)" P% T  {) p+ r" Y" r# v
  8835.     (setq style-idx (atoi index))
    . `3 V. a2 M4 i
  8836.     (setq tstyle (nth style-idx slist)). ^1 E( B6 |9 r  \
  8837.     (setq style-idx (itoa style-idx))
      \. M$ q; X# K- \! ?
  8838.     (set_tile "style" style-idx)
    3 V; L! i9 Q) ?0 f, b+ V
  8839.     (setq style-list (tblsearch "style" tstyle))
    7 I( [$ e% D# e3 q9 P
  8840.     (setq shght (cdr (assoc 40 style-list)))$ h+ O5 g  f% i' s6 X) s3 J
  8841.     (if (/= shght 0)
    " {6 c. D; ]0 t: V
  8842.       (progn  k8 I& N! k2 i" Y6 p
  8843.         (setq hght shght)* e* F# }) j$ p/ ~6 N3 p4 e. r
  8844.         (set_tile "hght" (ai_rtos hght))
    + }5 C$ X* m$ x  D5 U
  8845.       )
    9 k) K2 g; h# u" N6 ]4 g6 K
  8846.     )
    9 M; p) ]1 r! C- T4 C
  8847.   ): ^, j5 ]1 I9 s* P3 P( s7 j1 v- {
  8848. 2 s% a$ L- L; T2 F. `
  8849.   ;; Run DDEDIT on given entity, working around possible re-entrancy' ]* A; H* h# O2 ]& I
  8850.   ;; problems with MTEXTED
    , u0 p4 L( S. @1 a  F
  8851.   (defun safe_ddedit (ename / orgMTextEd work)
    6 I/ N( l0 Q' w, L& R
  8852.     (setq orgMTextEd (getvar "MTEXTED"))8 H( R( b) a+ ~
  8853.     (setq work orgMTextEd)) [" Y/ w2 @* j$ I0 r0 U2 e5 q5 G
  8854.     (if (= ":" (substr work 1 1))
    % j$ g6 z3 q  W: e
  8855.       (progn( p7 ]3 Y2 c2 s9 o* E3 J' R
  8856.         (while (and (< 0 (strlen work)) (/= "#" (substr work 1 1)))
      T0 U! n& g0 x( r
  8857.           (setq work (substr work 2))& H% @* ^. {; |7 M5 L, f
  8858.         )
    : H5 D' b" S% C9 J  y" H
  8859.         (if (= "#" (substr work 1 1))8 z7 L- }+ b4 \4 S2 R" [
  8860.           (setq work (substr work 2))! b1 y. \' V6 m! ?& w$ c5 }
  8861.         )/ _; y, \, W% x
  8862.         (setvar "MTEXTED" work)0 Q4 c0 G+ O4 |& }. s; I
  8863.       )* B0 F  F4 a0 V* R4 |9 X9 J) w
  8864.     )
    , r6 K. g" D; D
  8865.     (verify_arxapp_loaded "acmted.arx") ;; make sure it's loaded...9 J8 `6 Q" u, O4 i& \
  8866.     (command "_DDEDIT" ename "")# \; S/ ]7 D. i( B$ n! M
  8867.     (setvar "MTEXTED" orgMTextEd)
    ) F6 x+ i9 T! K$ A' h( l5 ~
  8868.   )0 ~9 ^; T5 Z. v% O3 P

  8869. 6 q+ [* {' H4 r& W  T  p1 c
  8870.   ;; Verify MText object width, E$ j/ T# r8 g3 Q& \
  8871.   (defun ver_MtextWidth (value)" \2 R( s" \( T
  8872.     (setq value (distof value))  R4 L  X3 O0 L$ `
  8873.     (set_tile "MTextWidth" (ai_rtos value))
    7 l- g* H* O. h$ w
  8874.     (set_tile "error" "")
      c. V! O; y( u# P. y  y" U) i
  8875.     (if (< value 0.0)4 [- I0 I* ]% G* Q- r3 C: j' ~
  8876.       (set_tile "error" "Value must be zero or positive.")
    7 g- X0 U, U' q
  8877.       (setq wid value)
    , q3 {( }( w7 t
  8878.     )% ?+ e2 S/ Q: O& u5 x. p
  8879.   )
    3 y$ L5 J# C! Q5 u- ]+ F7 p

  8880. ; a. ^/ L. U  M9 A
  8881.   (defun ddmtext ( / gc3)
    7 R( x1 S8 C. g" O  i
  8882.     ;; Get dialog
    6 x8 H+ U8 }" y( a0 O
  8883.     (if (not (new_dialog "ddmtext" dcl_id)) (exit))+ r4 J% \9 s$ X+ u' O

  8884. ! G3 r# o3 O# m+ |
  8885.     ;; Load list boxes0 H0 u! G/ F: Z8 V6 H& O1 t7 k8 H2 H
  8886.     (start_list "MTextJustify")4 i. z/ a' X1 M1 ?/ A5 T0 {3 Q
  8887.     (mapcar 'add_list '(' r6 G+ B' P( P: G
  8888.                         "Top Left"
    2 ^; ^+ W# _9 c4 f7 K/ T1 E
  8889.                         "Top Center"* ^' v; F" l: q7 m9 j3 |
  8890.                         "Top Right"
    * O. R1 Y$ m8 A* G# e
  8891.                         "Middle Left"
    / r' R/ ~( B. u. z9 c$ K7 n
  8892.                         "Middle Center"
    / e% ^' `: b$ [- V
  8893.                         "Middle Right"/ R6 L  h8 V' t7 o+ i
  8894.                         "Bottom Left"3 l0 l6 |3 U4 h: |9 S( \+ R; R
  8895.                         "Bottom Center". v; @/ _. L' d; I7 q" A; ?
  8896.                         "Bottom Right"/ q" s1 p4 x8 Z6 z% {; o- O  @$ P2 L
  8897.                        )  n: B0 X4 N) e( w3 k
  8898.     )$ ~- W3 [, u" o2 M
  8899.     (end_list)* p' ?, _4 S: j4 v

  8900. - \% D+ H1 C0 v# U* Y
  8901.     (start_list "MTextDirection")
    ( e, C4 A& T9 v0 f6 d
  8902.     (mapcar 'add_list '(
    & D' D1 D( G/ K/ V0 }1 e$ d" C
  8903.                         "Horizontal"' ?+ w% A4 D$ J  A) c
  8904.                         "Vertical"/ {4 F4 H" s, T
  8905.                         "By Style"4 y( h5 U* }+ V3 r; R
  8906.                        )
    * q, H8 @- V% B( l
  8907.     )9 m$ I/ E. L% z5 b- y  Q; `
  8908.     (end_list)
    7 W: R; g- U, x
  8909. ( D" g% Q. Q- x2 }
  8910.     ;; Set initial tile values
    , E5 N4 T) q+ I% q- W
  8911.     (set_tile_props)$ }* ]: s5 \: [& B5 P
  8912.     (set_tile_handle)$ G/ A# c% K9 t% J! k( h* x$ s8 J1 l
  8913.     (set_tile_pt1 0)
    8 t" k2 x0 @) ]
  8914.     (set_tile_style)' G. L. C" E, z0 v+ i+ a$ O
  8915.     (setq just-idx (cdr (assoc 71 elist)))
    3 L! ^9 t$ F0 w5 w' d
  8916.     (set_tile "MTextJustify" (itoa (1- just-idx)))/ j" ~" Y7 R# c
  8917.     (setq dir-idx (cdr (assoc 72 elist))); n$ I8 R' j/ f
  8918.     (cond
    0 F2 I* T8 i) a8 o
  8919.       ((= dir-idx 1) (setq dir-idx 0))
    - q9 l- s- Y0 O; H% \: g- N/ Q
  8920.       ((= dir-idx 2) (setq dir-idx 0))
    % h' @8 E" X, B& |- ]& E% K
  8921.       ((= dir-idx 3) (setq dir-idx 1))
    ; _7 \1 S7 u- G4 u& G
  8922.       ((= dir-idx 4) (setq dir-idx 1))
    , v: V6 H' J8 {. @1 _3 p
  8923.       ((= dir-idx 5) (setq dir-idx 2)), u3 p. p# o% O& P- [  i
  8924.       (T (setq dir-idx 0))  n8 N1 p9 r$ j' p' Q' i
  8925.     )% |; P) _8 E/ [) h$ v0 n
  8926.     (set_tile "MTextDirection" (itoa dir-idx)). z  y* |4 P! p( J, r6 u1 K  I
  8927.     (set_tile "MTextWidth" (ai_rtos (setq wid (cdr (assoc 41 elist)))))! ?! N2 K1 r* E
  8928.     (set_tile_hght): ]2 V, @$ i3 j0 m2 a8 p) S5 n2 ?" t
  8929.     (set_tile_rot)
    & O' S4 \  a1 {, R0 m
  8930. ; W' c, t: y1 G" R
  8931.     ;; Set edit box, disable if too long
    % h6 K. f; e8 C- |- }/ l
  8932.     (setq gc3 (cdr (assoc 3 elist))- S; V* S$ `3 b6 a+ S$ a
  8933.           text (cdr (assoc 1 elist))): J5 `0 \( G* s' J/ K
  8934.     (if gc3* N: H  E2 ]5 {, d
  8935.       (progn  ;; Text is over 250 chars, disable edit tile2 C& l+ \$ u  R! l7 X. p( j% V3 {
  8936.         (set_tile "t_string" (strcat (substr gc3 1 25) " ..."))
    " _+ `& y! T8 y% q% L; v
  8937.         (mode_tile "t_string" 1)! [! N( y* c. g3 b3 T
  8938.       )
    ) T, O* O" D/ h. o# J
  8939.       (if (> (strlen text) 80)
    % c; Y; R# M+ f- @- H; d
  8940.         (progn  ;; Still too big
    - T% D7 v, U! z( e
  8941.           (set_tile "t_string" (strcat (substr text 1 25) " ..."))
    ! T! C( p! k1 b: @
  8942.           (mode_tile "t_string" 1); f. b. P# Y0 j  D
  8943.         )3 R2 p( `1 B3 d: Y+ y
  8944.         (set_tile "t_string" text)* |  @& r, k% Z& r, P2 M8 T% A
  8945.       )
    * X( x, G) V, i$ f4 w" O
  8946.     ), c: j# x) T4 R. Q7 ~4 ^
  8947. 8 p( u$ C6 Q9 a. x5 z/ I4 b4 k
  8948.     ;; Define action for tiles
    " l. ^9 @4 |: ]: ]  K! W# w0 j
  8949.     (set_action_tiles): ^% i7 X5 o3 ~* W0 P" z9 w6 F: l
  8950.     (action_tile "style" "(MText_style $value)")
    # S% d5 Q* L0 s6 Y! U6 k1 g% o
  8951.     (action_tile "MTextWidth" "(ver_MtextWidth $value)")
    + m1 P# D) @) ], C8 k& C
  8952.     (action_tile "MTextEdit" "(done_dialog 4)")
    2 y4 u) l5 F1 M  E0 T. k
  8953.     (action_tile "MTextJustify" "(setq just-idx (1+ (atoi $value)))")5 H* e! b1 A$ P9 K8 d# B
  8954.     (action_tile "MTextDirection" "(setq dir-idx (atoi $value))")2 D: H3 j1 A& U0 ~: b' R0 w( g
  8955. 3 ^7 b& H& w+ t0 q& O% W$ S
  8956.     ;; Set initial focus to text edit box.; t- \+ k% {  c4 ~9 Z
  8957.     (mode_tile "t_string" 2)
    4 s, o. Z  E$ ?* X. R  \- C

  8958. 7 P( X9 M+ m* H
  8959.     ;; Run the dialog
    ' G: @& ~7 a8 p& R) B5 X$ X
  8960.     (setq dialog-state (start_dialog))) o1 n" l3 T9 @  Y& ~
  8961.     (cond
    ) |. _) r* A9 ^9 K
  8962.       ;; Cancelled - restore saved data& O% [4 R" b: J6 W, s9 U
  8963.       ((= dialog-state 0) (reset))3 O* j- t" @* M
  8964.       ;; OK - save new data
    " h5 v! {7 u, n0 {  P! z. e+ y
  8965.       ((= dialog-state 1) (modify_mtext))
    ! J$ V5 Z) V$ U3 h$ P1 c
  8966.       ;; Pick new insertion point0 I9 x* o& I$ L' @* ]% i
  8967.       ((= dialog-state 3)  n: w! Y1 }) |7 i' U$ v; R
  8968.         (modify_mtext)
    $ p$ }2 Q2 Y$ p; H
  8969.         (setq pt1 (getpoint (list x1 y1 z1)  "\nNew Insertion Point: "))7 m8 j4 S8 O/ @- C* Q  [: B% m7 z
  8970.         (ver_pt1 0)
    0 n# [$ U+ h" i: F. J' \9 [
  8971.         (ddmtext): k: y* a! s7 \( _4 l5 _
  8972.       )
    7 b, J6 Z0 b; @  Y* O8 n
  8973.       ;; Run full editor0 J9 n2 W% m& t  ?' N) l* Y
  8974.       ((= dialog-state 4)
    3 u! k9 b* {! t+ Q
  8975.         (modify_mtext)
    # x2 N1 O8 @) y9 C$ \( v
  8976.         (safe_ddedit ename), d+ v- m- n1 }. I' R0 f: Y. i
  8977.         (setq elist (entget ename))) m1 n2 M2 R( B5 G! K. T
  8978.         (ddmtext)& Q% f. G4 z4 g5 I
  8979.       )
    : x2 d( _- M5 [& f6 C3 `
  8980.       (T nil); s' C, f+ J$ x: e) w/ {& e
  8981.     )9 z* \( [2 T/ Z
  8982.   )# m3 ~# Y- f: M
  8983. , e: U( ~: J' q0 V8 c' c
  8984.   ;;
    ! I. f  L* r  u: O
  8985.   ;; Modify VIEWPORT
    + O. T; f* v6 X$ M
  8986.   ;;
    * H( @4 d9 E! y

  8987. / X3 y7 p; [* h
  8988.   (defun ddvport ()
    % [# u/ Z$ M' X3 ]
  8989.     (if (not (new_dialog "ddvport" dcl_id)) (exit)), d. Y( f; c) @
  8990.     (set_tile_props)
    # l9 i- a8 L2 T
  8991.     (set_tile_handle), H5 s# y6 {5 Q6 G, n4 l
  8992.     (setq vpt (cdr (assoc 10 elist)))' ~" g5 L) ]( a! Q
  8993.     (set_tile "xtext" (rtos (setq x1 (car vpt))))& f( `7 J" R. k2 Q+ E$ j
  8994.     (set_tile "ytext" (rtos (setq y1 (cadr vpt))))( h6 s, R$ j: o9 P% G" a6 V
  8995.     (set_tile "ztext" (rtos (setq z1 (caddr vpt)))); V( A: N$ F( e
  8996.     (setq wid (cdr (assoc 40 elist)))
    # t2 V4 q/ W5 I( X9 S
  8997.     (set_tile "wid" (rtos wid))/ D, D3 t3 C- K, g* u
  8998.     (setq hght (cdr (assoc 41 elist)))7 t/ O& p' l$ X1 J
  8999.     (set_tile "hght" (rtos hght))
    * D/ ~9 P) F+ J. D$ q/ J" i
  9000.     (setq vpid (cdr (assoc 69 elist)))9 O7 c$ d( G/ ]" z0 N6 b
  9001.     (set_tile "vpid" (itoa vpid))3 W/ I$ F3 D7 P: }9 M  u3 H
  9002.     (setq on-off (cdr (assoc 68 elist)))% N- S9 B+ [  i& z
  9003.     (cond
    * m  E$ Y/ U/ C
  9004.       ((= on-off 0) (set_tile "on-off" "OFF"))# i8 `, D+ k% m7 P
  9005.       ((> on-off 0) (set_tile "on-off" "ON and Active"))* Y. Q: `( z# I( n6 q
  9006.       (T (set_tile "on-off" "ON and Inactive")): ?' n# X1 l) Z- ?
  9007.     )9 O1 K3 v) |. i: n' f/ n/ r
  9008. . O/ t# c& |, @. ]* D* ^* M) k
  9009.     ;; Define action for tiles3 k$ B8 l$ J0 Y
  9010.     (set_action_tiles)& `8 A& O& O& j" D8 z+ @6 w  |

  9011. : J  y% x! x) F, G* p: U; M9 _3 {" ]
  9012.     (setq dialog-state (start_dialog))
    / Q/ b6 E* b8 u- D2 z- M
  9013.     (if (= dialog-state 0)
    8 k, ]6 V* S* s
  9014.       (reset)
      @* f+ f9 v9 x* J# e0 H- J$ d, F
  9015.     ), B; M6 R9 z9 \$ B* `6 J- o' Q' u; m1 r
  9016.     (if (= dialog-state 1)
    ; K0 [; I. w& Z; Z
  9017.       (progn" H) G3 }7 R* M
  9018.         (if (= ecolor   0) (setq ecolor "BYBLOCK"))
    5 g3 N' I5 r& k" Z
  9019.         (if (= ecolor 256) (setq ecolor "BYLAYER")): w4 E$ y6 j1 q$ r
  9020.         (command "_.chprop" ename ""
    3 R/ ?6 {/ D4 y* _
  9021.                  "_la" elayer+ E) ~. ?. j( p  {1 |* ^
  9022.                  "_c" ecolor ""2 c/ M: c6 q$ R
  9023.         )  G0 G/ o( \) B3 c
  9024.       )
    + {1 P: V/ T/ V: m6 n2 h) Y
  9025.     )
    " S5 X6 P1 S- c0 }
  9026.   )+ [% T, f" w  L) L7 Y, N
  9027.   ;;; U9 t' W) F/ X+ L
  9028.   ;; Modify POLYLINE
    5 t/ ?8 v- Y$ E5 ~
  9029.   ;;& f  z3 \' g+ V- [
  9030.   (defun modify_polyline ()
    $ {4 A" l8 Z  Y& H
  9031.     (modify_properties)- J1 Q  K0 A1 p/ S, q0 \2 E
  9032.     (if (= ltgen "1")$ H: e% W) y. x" C9 l+ j( B4 M
  9033.         (if (/= (logand bit70 128) 128)
    : o9 F0 m- {1 Y" H% f4 k
  9034.             (setq bit70 (+ bit70 128))8 k  s5 n& F0 Q$ Y% B+ x- p7 P
  9035.         )& B) m9 S. X9 A& L' ~
  9036.     )
    ( j/ ~: l. ]8 b" _/ {3 P
  9037.     (if (= ltgen "0")7 g7 N/ S! w+ `$ S8 Q
  9038.         (if (= (logand bit70 128) 128)0 U8 r. N$ X1 _6 V5 i: n' b
  9039.             (setq bit70 (- bit70 128))
    6 ]- p1 h! V( p
  9040.         )
    % f; U7 z6 {: b$ a* H# |
  9041.     ). V/ V! r1 n) E; t) \! {( x$ l1 p. g
  9042.     (setq elist (subst (cons 70 bit70) (assoc 70 elist) elist)). w* ]/ w; {" ?' N) _+ e2 X& y4 t
  9043.     (entmod elist)  p% o* J: w5 I/ ~) `
  9044.     ;; Added to take care of updating Vertex information for color& S" N: L/ |% \% C, z
  9045.     ;; and linetype.' W2 \( a/ r9 b5 s# M6 O
  9046.     (setq save-ename ename save-elist elist)
    $ }: X' v2 v2 E0 D. ^& n
  9047.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")
    % A9 L1 \# G, n$ w% j
  9048.         (progn
    4 K: m5 ?" C6 D8 G: {
  9049.             (emod ecolor 62)2 r& c3 z" U# ?9 s; c, N; l
  9050.             (emod eltype 6)7 }2 i: u- X6 \8 S6 W* G
  9051.             (emod eltscale 48): @( I9 ]9 h) g0 ]9 x- }# C' p
  9052.             (entmod elist)
    2 g, ~5 d8 x4 }
  9053.         )
    6 L6 R8 M7 M' H5 h/ M6 a; e" k9 E
  9054.         (progn: X- a- l8 N3 o7 j% g* M: W3 ]. z
  9055.             (setq ename (entnext save-ename))
    : k; K- C4 w. W8 \- b) i
  9056.             (setq elist (entget ename))7 d2 g8 [. Y& W$ k
  9057. + c6 g$ J2 M3 O0 A& K: l. u
  9058.             (while (not (= (cdr (assoc 0 elist)) "SEQEND"))' Y* i4 g& k6 }: v
  9059.                 (emod ecolor 62)
    - z- x) G% ]- y1 |& J5 q
  9060.                 (emod eltype 6)
    3 Y; Q2 `1 L9 g3 [/ R
  9061.                 (emod eltscale 48)9 N. M" C7 t& t
  9062.                 (entmod elist)
    ) \& ^% [' M/ S. H2 f2 A
  9063.                 (setq ename (entnext ename)), @) y$ \9 y* M" p& r
  9064.                 (setq elist (entget ename))
    . w! _6 s9 d& W: z. n: Z# j
  9065.             ): ?3 n% ~; v; o$ N
  9066.         )" U4 H/ T1 c' [
  9067.     )7 n# L/ I9 B! D5 ~( ~; e
  9068.     ;; Update the SEQEND
    3 L; S9 E3 B: k( _
  9069.     (if (= (cdr (assoc 0 elist)) "SEQEND")
    . j: T/ b0 O, ?$ @5 }& s& R3 V
  9070.       (progn
    / Y5 @& n# a1 x0 h& c- [& Z
  9071.         (emod ecolor 62)
    , c# _, {% r% C( ~, L
  9072.         (emod eltype 6)
    ! p5 X! t- u$ e2 N9 a
  9073.         (emod eltscale 48)
    + ]: _5 \7 j4 R/ D7 d- M
  9074.         (entmod elist)
    & l, r1 b2 `$ }% r
  9075.       )
    . e+ [) j6 h/ k3 O8 d7 A( Y0 f* s
  9076.     )8 B; m  d7 T, X' n
  9077.     ;; Go back to header.3 k; i: @( _3 z4 d( b; J7 C5 {7 `
  9078.     (setq ename save-ename elist save-elist)5 U" d3 B4 r5 |1 q3 `% g; Q/ X
  9079. 5 ]: ]0 L: b1 }
  9080.     (entupd ename)( T8 U8 {/ E" |8 G# E
  9081.   ), V# X. j6 S  ^, t# _
  9082. ( I3 o  R( q- K
  9083.   ;; Increment vertex.  Set tile values to next vertex
    5 d+ f4 a1 D' q! j& N( e
  9084.   ;;
    ; B! b( \, g) N! {' t
  9085.   (defun next_vertex ()
    - i* J. G: G9 \% w$ v8 N
  9086.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")# Q/ u' S% Q$ p" B$ ^) @1 g
  9087.         (progn
    , ?" r" a, |& [2 F. F. q
  9088.             ;; If the counter reaches the number of vertices,, l; b+ U* S6 D* t  n! J
  9089.             ;; roll it over to zero again.
    5 j4 B" S2 M& l0 t% T9 Y
  9090.             (if (= ctr (cdr (assoc 90 vlist)))  \: [5 J* a+ z& J  f1 c4 q
  9091.                 (setq ctr 0)& _5 C3 }& ?* x& P2 l: ^" {# U
  9092.             )8 Y! C7 s2 ]3 ~. M
  9093.                 (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))
    : Y' F9 i# r* |! b, }. Z
  9094.             (set_tile_vpt pointype)
    6 z; A9 n. \" ~% F3 Y8 G+ R
  9095.         )
    ( K7 f; _2 t9 Z. E& G
  9096.         (progn
    3 d0 P5 \( D6 A- u4 u' ^+ }
  9097.             (setq vname (entnext vname))- |- V2 j: ^: b% V  P9 G5 j
  9098.             (setq vlist (entget vname)): J  x, U2 C3 E
  9099.             (if (= (cdr (assoc 0 vlist)) "VERTEX")
    ( Q' ?: L0 a+ \9 s
  9100.                 (progn9 |2 b& [- Z' d6 }
  9101.                     (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))
    . V1 d$ R( g. O/ @1 {
  9102.                     (set_tile_vpt pointype)$ t3 \& ?0 E4 h
  9103.                 )9 X# i+ _4 O; Q; i9 R
  9104.                 (progn
    - b/ j) b! Y) i' ~2 \4 J* x
  9105.                     (setq vname (entnext ename))
    3 T( {& ?+ A4 l# T5 Q
  9106.                     (setq vlist (entget vname))
    # `8 c; A. w' H! c3 W0 A# {
  9107.                     (set_tile_vpt pointype)2 M  R' H' J6 @- i& g. C
  9108.                     (set_tile "ctr" (itoa (setq ctr 1)))
    $ g5 B8 l+ Z( q8 r' Q
  9109.                 ); v$ G4 [/ Z' K9 b) O. L& s$ x
  9110.             )* H" D" H5 b" t; m' _% O
  9111.         )
    + |- y9 R  B" |# ]  ]
  9112.     )6 b$ M( e$ m7 k5 R. ]
  9113.   )
    / ~' O0 e$ `2 `3 f; x
  9114. 9 I; y" ^% ^7 k' Z+ k
  9115.   (defun ddpline (/ oldecho)8 g0 T4 L9 b' i$ G4 q" i7 u
  9116.     (if (not (new_dialog "ddpline" dcl_id)) (exit))/ a$ B# y+ E2 v0 [5 z
  9117.     (set_tile_props)! t5 p6 g0 J# }0 ~0 ^4 a2 T! |
  9118.     (set_tile_handle), }: h2 N, e6 }/ {0 g
  9119.     (setq bit70 (cdr (assoc 70 elist)))$ N+ f8 E/ S2 F3 R$ I( p2 _) _
  9120.     (setq bit75 (cdr (assoc 75 elist)))
    : I3 |& u1 v2 d" E: V9 K: k9 v6 h
  9121.     (cond
    " g% G: E' Z/ X% S" |5 R& s, E0 {
  9122.       ((= (logand bit70 8) 8)   ; 3DPOLY* t4 O  }+ t4 \6 Y7 M5 t/ A
  9123.         (set_tile "ptype" (setq pltype "3D polyline")); T1 a0 ~' X1 [) @2 a  C
  9124.         (setq pointype 0)       ; WCS or ECS point values
    9 E/ \8 Z1 x0 @
  9125.         (mode_tile "fit" 1); V+ E5 W4 c, M" X7 J; h
  9126.         (mode_tile "mesh" 1)" q0 h3 Y  q- d4 U( m, B* E
  9127.         (mode_tile "bezier" 1), x& ]. F' E3 g1 B
  9128.         (mode_tile "ltgen" 1)
    # i5 e3 ~" |+ Q: [
  9129.         (set_tile "none" "1")
      ]: U8 M! l+ l  }" M0 o
  9130.         (set_tile_closed)
    ' J4 L' y5 f. T% e1 D/ W1 [
  9131.         (set_tile_fitsmooth)& o6 W) y, P1 K7 E& e6 h. l) X
  9132.       )$ f7 a2 s' F4 ]! ^  C8 B. ]
  9133.       ((= (logand bit70 16) 16) ; 3DMESH- L4 ?/ m" P% l  X7 r
  9134.         (set_tile "ptype" (setq pltype "3D mesh"))
    " e. p( w; p7 U  H$ c( E' c
  9135.         (setq pointype 0)9 M+ n4 i% j' A( ]
  9136.         (mode_tile "pline" 1)
    2 C5 }. J# I6 k7 E" u, s
  9137.         (mode_tile "fit" 1)# r: g  r# a% \' @. u' z
  9138.         (mode_tile "ltgen" 1)5 q" O' I* Q5 V( j0 ?
  9139.         (setq m (1- (cdr (assoc 71 elist))))
    3 a; D1 f# r  v* b2 `
  9140.         (setq n (1-(cdr (assoc 72 elist))))& _& o! k1 f) N" s2 @7 |0 f% V
  9141.         (setq u (1- (cdr (assoc 73 elist)))): M5 [+ d7 [. X1 d* B) r
  9142.         (if (< u 0) (setq u 0))6 ?. k" d& G" K" F0 N
  9143.         (setq v (1- (cdr (assoc 74 elist))))
    . {6 u( T* ~. l' K  c, s
  9144.         (if (< v 0) (setq v 0))( l' S- c( q( P+ f( t3 S+ Q
  9145.         (set_tile "m" (itoa m))
    / i# h) e( d" q' Z0 E/ h
  9146.         (set_tile "n" (itoa n))5 K/ I6 I6 B; ]2 p7 k
  9147.         (set_tile "u" (itoa u))5 f' q+ L0 E6 Q6 S/ q
  9148.         (set_tile "v" (itoa v))3 L  G* }6 A$ K' F6 Y
  9149.         (set_tile_closed)
    ) w' E! [1 ]" l, }
  9150.         (set_tile_fitsmooth)! b  h+ u) Q" A7 Z
  9151.       )7 G/ z" L5 v; Z' l5 G) I
  9152.       ((= (logand bit70 64) 64) ; POLYFACE MESH
    4 E/ E2 x' w4 y& O
  9153.         (set_tile "ptype" (setq pltype "Polyface mesh")); f- b/ ~) H0 A1 d
  9154.         (setq pointype 0)7 R6 l! w+ A  B- g/ a5 A
  9155.         (mode_tile "f-s" 1)
    7 f  D; q) i3 z' ^' q" s
  9156.         (mode_tile "mesh" 1)- N# @6 b! X1 L1 |% R% l' G
  9157.         (mode_tile "pline" 1)% _3 t+ H! u. Z
  9158.       )
    * J: Q* M4 e5 C+ m2 u) n) g9 G5 S9 s; I
  9159.       (T                        ; 2D POLYLINE
    " A7 U' l) k% y0 |, t: \
  9160.         (set_tile "ptype" (setq pltype "2D polyline")), n% T1 ^+ b5 i5 K# a/ b) g/ }5 H
  9161.         (setq pointype 1)
    ( R, q* `1 e* h) {. L7 E0 I
  9162.         (mode_tile "bezier" 1)
    + p5 C* t+ l9 n
  9163.         (mode_tile "mesh" 1)
    / t. K# j! A$ U  e# c
  9164.         (if (= (logand bit70 128) 128)* `$ z& }+ f$ B( ~) `# u4 K( c
  9165.             (set_tile "ltgen" (setq ltgen "1"))
    ) y( K' f" B+ B8 c; H3 S
  9166.         )0 q. k' _" \) R" k+ J& b
  9167.         (set_tile_closed)5 E2 ~9 ]$ @4 Y
  9168.         (set_tile_fitsmooth)+ ~" c# ]6 L# ^% B4 I$ ?$ ]
  9169.       )2 v) _* c8 ]; S% v6 V7 S
  9170.     )5 ]! h$ \) }. y: q# z2 Q9 M+ D4 E. L

  9171. 9 A4 D; w+ E) `; v5 E
  9172.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")
    8 V. u" l4 e0 {, k# m
  9173.         (progn- r/ X. g7 ~  {5 y
  9174.             (if (not next) (setq vname ename)), J/ w. o* P/ H! A7 o5 Y3 Z% _
  9175.             (setq next T)
    ' Y2 N' u/ @7 g0 P; {- N( N1 @
  9176.             (set_tile "ctr" (itoa (setq ctr 1)))
    ) C' D0 H& V' g# c( ^
  9177.             (setq vlist (entget ename))6 W- r6 ]7 C0 g5 y' F/ }
  9178.         )( v0 }* V( u" \, g- g
  9179.         (progn
    ! [8 v3 i! y! ~# J
  9180.             (if (not next) (setq vname (entnext ename)))
    # N+ J1 V1 B' [3 C8 Q3 e) }
  9181.             (setq next T)$ B  C& D9 j5 S4 Y" z+ ]# O5 \6 m1 `
  9182.             (set_tile "ctr" (itoa (setq ctr 1)))
    % R3 ~7 g" W$ c  U
  9183.             (setq vlist (entget vname))
    - s$ A+ A3 m9 u6 ]
  9184.         )
    4 h- t: I0 I, a' V6 n/ j1 U
  9185.     )0 j8 _5 w$ B. X& X, R9 Z+ V# l
  9186.     (set_tile_vpt pointype)/ i) r2 }! B0 t4 \2 r% h2 F
  9187.     ;; Define action for tiles
    1 O9 f7 f" U. F0 U3 {
  9188.     (set_action_tiles)' l1 C2 |* {5 j7 ?# d4 p+ g  t
  9189.     (setq dialog-state (start_dialog))
    ' e$ }% t+ {, t+ W

  9190. & z. e* `$ l! s
  9191.     (if (= dialog-state 0)6 B9 |" M) c1 n
  9192.       (reset)# ~; M: o/ H* M& h9 j; q
  9193.     )
    % A0 S* r3 R5 @8 c, O  r, r
  9194.     (if (= dialog-state 1)
      W' l" X* l' W! {4 u- ]/ M, p
  9195.       (progn
    : Z: W- x2 L; B9 V& }# H6 b
  9196.         (modify_polyline)
    + F3 w- Y# f* I
  9197.         (if (or (= pltype "2D polyline")
    2 J8 t( `% l, Z" z
  9198.                 (= pltype "3D polyline")& V2 E/ I0 W! I( C; Y. [" h
  9199.             ). t; r7 m& V* \
  9200.           (progn
      n; j0 c; I. o, m1 w3 N3 }
  9201.             (command "_.pedit" ename)
    / n7 f+ A+ T8 A/ a, u! \0 T- S7 C6 e
  9202.             (if (= spltype 0) (command "_d"))" g7 N% Z3 @6 z4 k1 S6 ?
  9203.             (if (= spltype 1) (command "_f"))
    " X" K) P" a3 X# y8 k0 L
  9204.             (if (or (= spltype 5)
    & Z2 S$ {$ {$ B4 D6 H: G
  9205.                     (= spltype 6)" B2 ]" t  Z2 k3 q+ f2 R
  9206.                 )
    4 @7 S$ H, q5 I
  9207.               (progn
    , e+ o( k& F' g) U
  9208.                 (setvar "splinetype" spltype)
      J) U, r2 H2 F2 k$ `! X
  9209.                 (command "_s")5 |+ o/ g$ E6 l% b* t* V
  9210.               )! b' v0 }% R* F3 T9 ?( N
  9211.             )
    8 F0 B: g" k8 j. r/ X
  9212.             (if (= closed "0")( L  N+ p/ t1 I, _* e: ^
  9213.               (command "_o")6 q* T& v8 ~/ Q" i( O  p# [
  9214.               (command "_c")
    5 t0 U$ d! \& c* n/ G
  9215.             )4 C( p* g  W5 S4 T; ^
  9216.             (command "")# w2 P" O  b* N, e% a/ n: O) N* N# c
  9217. . v$ G0 U! o2 @
  9218.             (if (= spltype 0)8 J. W" t/ f3 D& M3 T" B, I0 N
  9219.                 (progn
    . T9 V% l, g3 ]9 w
  9220.                     (setq oldecho (getvar "cmdecho"))
    / y  y, m9 W1 {2 J0 Z7 X  A0 R  k
  9221.                     (command "_cmdecho" 0)
    - X- O# S: X& z
  9222.                     (command "_convertpoly" "_light" ename "")  c4 t* ?. ?5 O3 z
  9223.                     (command "_cmdecho" oldecho)9 L1 n% l  R! F% c8 t7 O
  9224.                 )# K# ]. I  w1 i0 \; L
  9225.             )& q4 i; B: G5 Q- w& m# s  K
  9226.           )3 p/ e2 I* e7 o3 ]
  9227.         )
    ' C. [: B: q" B7 a( r* n( H
  9228.         (if (= pltype "3D mesh")
      Z: t7 l- j+ s  v% u
  9229.           (progn# o" H6 s1 o* M, x; I1 `$ p* R
  9230.             (command "_.pedit" ename)
    + D7 c) N7 m% h, k
  9231.             (if (= spltype 0) (command "_d")), r) i1 d. F# D3 l$ m
  9232.             (if (or (= spltype 5)
    ! |4 A9 S6 [; i
  9233.                     (= spltype 6)
    ' a' O" c! B8 Z7 j& R) o! }1 ?
  9234.                     (= spltype 8)( Y1 x0 S: G0 R( }% n9 A6 ~9 v
  9235.                 )
    5 ?+ E% [1 W9 |6 l
  9236.               (progn# z- ?* Z( V8 h9 i5 v
  9237.                 (setvar "surftype" spltype)
    6 {: a3 k. R0 z6 e) F3 D1 ]
  9238.                 (setvar "surfu" u)
    % l3 e! O5 E) v% ~( B) z
  9239.                 (setvar "surfv" v)( ~$ t- |6 O+ H7 j
  9240.                 (command "_s")
      ~2 Y, Q/ h: k+ V* I: g
  9241.               )
    % _9 n% _6 G0 A1 g
  9242.             )
    " v* L& T0 w/ c7 w7 \+ [
  9243.             (if (/= closedm old-closedm)5 b5 f" w1 p, u* E9 o$ z
  9244.               (command "_m")9 O' r, a3 z9 Y8 W: D8 c7 o
  9245.             )& p0 C/ X7 I8 k
  9246.             (if (/= closedn old-closedn)7 L, H2 ~. K: s7 A
  9247.               (command "_n")
    8 u3 |1 A9 U% G
  9248.             ): M2 v5 P; R1 o1 B) q
  9249.             (command "")3 p1 `, r7 U5 a# ]* ^2 `
  9250.           )5 G8 N" r9 U# V7 Z  a( N
  9251.         )
    5 P, H" [1 T6 a
  9252.       )
    7 ^! _4 q; C/ V  e( N% K3 w
  9253.     )  k  R3 y. ]( h
  9254.   )2 n+ A* q) Z$ m9 `- z. e+ B
  9255.   ;;
    , L4 j$ o: y* A$ \* ]; ]/ E
  9256.   ;; All the spline data is contained in a single elist. We must do some
    $ z. u6 ]! R/ {5 T  p- s
  9257.   ;; tricky list processing to loop through the elist in order to display
    0 |8 w+ T8 A7 f$ e1 E8 H; P
  9258.   ;; all of the control points.
      ?) E+ r5 S! \% o' j6 S
  9259.   ;;
    3 G9 Q: T9 z3 j; z$ J$ F- l0 l
  9260.   ;; The structure of the elist is different for rational and non-rational6 a' i# @3 c4 f+ d- `: e
  9261.   ;; splines. Therefore, we check the rational spline flag.: k+ ~) e: z% a0 U0 U. L$ K* o
  9262.   ;;
    % n3 j5 u& A6 n$ [
  9263.   (defun next_cntl_pt ()$ q& I! ]; c$ T% s. C9 o8 \0 }
  9264.     (setq elem-no 0)               ;; elem-no = element counter" A0 ]7 e! [" N9 Z; I- H" B( M/ J2 P
  9265.     (if (= first-10-time 1)        ;; If first time, find location of first
    9 k- W- @' Y% e: o
  9266.         (foreach list_item elist   ;; cntl point element in elist/ e4 d; E% M1 f* z, B" E3 M  R
  9267.            (progn
    6 J! B$ N1 F7 B/ v, @. ~9 R
  9268.                (setq elem-no (+ 1 elem-no))
    / J. t5 v6 D' Z5 [
  9269.                (if (= (car list_item) 10)
    9 j( n! w8 k9 ^0 u9 M; ~3 ^
  9270.                    (progn9 ^1 e' Q) w4 g5 K0 N3 R
  9271.                        (if (= first-10-time 1)
      \1 {) h8 `: K9 u# H! v
  9272.                            (progn/ F6 t4 r, T+ w& O5 t
  9273.                               (setq first-10-rec (- elem-no 1))
      j9 K* A9 c: S
  9274.                               (setq first-10-time 0)& _$ @5 U8 m! j: {4 G. H
  9275.                               (if (= rational_spl_flag 1) ;; if rational
    ' d( `- \% j7 e1 ]9 _. W
  9276.                                   (setq cur-10-rec (+ elem-no 1))7 H" P+ g  A, Y5 Z; t9 ?0 h
  9277.                                   (setq cur-10-rec elem-no)( O" I& ^( q5 i5 m
  9278.                               ), s3 ]8 H7 t  V, V% ?
  9279.                            )9 [3 u* }7 f" m6 P0 H2 H
  9280.                        )
    9 G) J9 u& P$ }4 ?" h# V
  9281.                    ), g6 p) g1 J' H1 w) W/ o# X" m: V
  9282.                )& ^+ c7 X, o6 k1 C6 r8 m+ o6 U
  9283.            )& e2 s$ \! x9 I+ Z7 @& X
  9284.         )3 {' z. N. s+ o5 [2 c" U
  9285.     )
    9 n5 o, R5 ~* K& r% i! a
  9286.     ;; Now we know the location of the first "10" record; it's stored5 m, C2 A, r% I! y& n; M* f% K
  9287.     ;; in first-10-rec. The first 10 record was already displayed when
    $ [0 U8 G1 \5 f% ?
  9288.     ;; the dialog first came up so let's display the second one when
    4 i: o& R, B- j4 P1 U- {3 v2 k
  9289.     ;; the user presses the "next" button (the first time through).5 L* I% q; c& j0 w% c
  9290.     ;;
    6 q# v, s- E" K- P, S
  9291.     (setq temprec (nth cur-10-rec elist))
    % p# [7 H- H, Y: J2 X  P
  9292.     ;;# S, X5 N$ g. k  Z- m& D! D$ g( ?; a
  9293.     (if (= (car temprec) 10)   ;; if 10 record
    & X/ D: ?5 j5 I
  9294.       (progn
    ) T) G( L  T8 ~3 b0 @
  9295.         (if (= rational_spl_flag 1)    ;; if rational spline9 |. r/ t5 q& }! q% T. T
  9296.           (progn9 w$ r+ ?  C  r  b
  9297.             (setq tempweight (nth (+ cur-10-rec 1) elist))! c% n2 o4 Y  a3 P
  9298.             (setq cur-10-rec (+ 2 cur-10-rec))
    ' g5 B4 p( ]4 v- h3 K: \( P' T8 z* W
  9299.           )
    + L$ T. m, T8 }/ I; `7 M, C
  9300.           (progn                       ;; else
    % X( d3 o: E, T
  9301.             (setq cur-10-rec (+ 1 cur-10-rec))# }0 T; R' d5 w9 J
  9302.           )
    9 _  g, T4 W5 v4 M( p5 v1 l8 R
  9303.         )7 G# X  a2 |1 ~( o0 t& z: ]6 B$ q
  9304.       )                                ;; end if rational spline
    - k+ v+ L/ W; M' n  H" V
  9305.       (progn                   ;; else reset counters
    - P/ b1 z# [1 k0 m5 W! F# o
  9306.         (setq temprec (nth first-10-rec elist))  ;; get 1st 10 rec/ y. z- T4 k. ^' V- {! m5 q
  9307.         (setq tempweight (nth (+ first-10-rec 1) elist))8 r: H: k  r1 U* ?2 V% ?2 R
  9308.         (setq cntl-pt-indicator 0): i+ X9 j" r- h$ x+ ?
  9309.         (if (= rational_spl_flag 1)             ;; if rational
    0 G* E2 H) d0 @* p: O( T2 z9 a& ~
  9310.             (setq cur-10-rec (+ first-10-rec 2)) ;; point to 2nd 10 rec
    , V9 q6 F1 j* Z, N! s% a
  9311.             (setq cur-10-rec (+ first-10-rec 1)) ;; point to 2nd 10 rec. M+ _6 j7 v' h  {0 E! K$ D- F0 K
  9312.         ); ~: H" O8 D4 P! Q& e) z; V8 T! g
  9313.       )
    , `' G7 W2 Q, ]& F" t0 H6 |* Q3 g
  9314.     )                          ;; end if 10 record, @* u$ W! y. K5 m; g3 A

  9315. 2 F% I7 j$ t+ j; a
  9316.     ;; Display cntl point, weight and ctr. Increment ctr.$ @- f8 ~6 N; X" I. v5 H
  9317.     (setq cntl-pt (cdr temprec))
    / b) l4 D0 J7 m! E4 P, R( U/ z
  9318.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    1 K! v. A2 F8 C( A0 N
  9319.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))! ^- K% \/ Y5 e+ d  F9 I
  9320.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))
    ( B" [+ G, A4 l; F
  9321.     (setq cntl-pt-indicator (+ 1 cntl-pt-indicator)). ~' j. z& G& T. J! {, b/ j% J! a
  9322.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))
      n9 f0 \) [2 @- X
  9323.     (if (= rational_spl_flag 1)                     ;; if rational
    - ^9 L6 F, o3 V  c( M+ Q$ `9 Z( j
  9324.         (set_tile "weight" (rtos (cdr tempweight))) ;; disp wght! y0 t9 X5 [9 ^4 V! v6 `9 n
  9325.         (mode_tile "weight_text" 1)                 ;; disable wght' v+ X/ S  ?  K1 V3 C8 L
  9326.     )
    % Q/ G% u- }6 `& D
  9327.   )
    + X; b. M; X6 ]' i
  9328.   ;;
    0 a+ O- m9 n% x: Y$ c$ j" I0 M
  9329.   ;; All the spline info is contained in a single elist. We must do some# I9 k& b5 [# L) r
  9330.   ;; tricky list processing to loop through the elist in order to display
    6 |6 |' `5 _7 I
  9331.   ;; all of the user data points.
    7 e$ S4 w" t6 V/ ^2 o9 ?3 m1 V
  9332.   ;;1 _+ P  {' ]; L* b
  9333.   (defun next_data_pt ()& G, S1 \/ @7 X) m! a, |
  9334.     (setq elem-no 0)               ;; elem-no = element counter/ i+ j6 u+ k  t2 _' n
  9335.     (if (= first-11-time 1)        ;; If first time, find location of first7 A) n! y$ ?, H4 N- M2 h+ [
  9336.         (foreach list_item elist   ;; data point element in elist
    1 }+ V( r; _2 O3 V4 h" N& ^
  9337.            (progn
    % _, t- r* N, u
  9338.                (setq elem-no (+ 1 elem-no))
    5 H3 X8 D- q2 X; [
  9339.                (if (= (car list_item) 11)
    . {) k/ P2 F1 v) m+ Z: r
  9340.                    (progn% X/ W  V2 @( b; y
  9341.                        (if (= first-11-time 1). ~7 z7 r6 Z/ [
  9342.                            (progn# s8 o% U+ s8 ~) g
  9343.                               (setq first-11-rec (- elem-no 1))# W2 V5 z5 p" \. R: U
  9344.                               (setq cur-11-rec elem-no)
    7 G( u6 \7 C# P, O  V1 D+ h
  9345.                               (setq first-11-time 0)' r* G' B! E* M0 J1 N. G  o
  9346.                            )
    - H. t+ B4 B; G  ^* y
  9347.                        )/ w" i! x9 Q( J- m2 x
  9348.                    )6 V7 w6 c9 h7 H$ S7 o
  9349.                )/ l3 B+ L* a$ Y# v) A
  9350.            )
    8 v4 N6 j0 p- p
  9351.         )2 F) Z! {) ?7 p  a' l* A6 a4 f
  9352.     )5 ?& b# y0 ^' m0 S7 I" d  `
  9353.     (setq temprec (nth cur-11-rec elist))2 j  ]; J6 r: T! w4 s2 Z) O7 h
  9354.     ;; If it's not a DXF "11" element then we've gone past the last
    & M0 ?3 {4 V# \  P5 ^# A$ n3 t
  9355.     ;; "11" element. Go back to first "11" element. Reset counters.8 j4 X0 S' l& G5 |2 d1 v* f2 v
  9356.     (if (= (car temprec) 11)
    * `; Q4 J# d) |. ^' M$ t
  9357.         (setq data-pt (cdr temprec))
    9 v5 G, W* v/ X% R9 [" `( M: n
  9358.         (progn                           ;; else
    " s! W( Y! B: ?7 L6 G- W9 R/ H
  9359.            (setq data-pt (cdr (nth first-11-rec elist)))4 v! Y. a( V+ Z5 D4 D9 Z
  9360.            (setq cur-11-rec first-11-rec), a5 ]: E1 M3 l9 J/ f' I  p
  9361.            (setq data-pt-indicator 0)" `3 L( Z# K2 h
  9362.         )) f  R( ]) L1 }
  9363.     )
    " d9 f8 u& c7 b5 I  q
  9364.     ;; Display data point and ctr. Increment counters.1 `6 B/ ?( m. f& V7 W, u
  9365.     (set_tile "dxtext" (rtos (setq x1 (car data-pt))))
    , J" \" f; f0 Z. Z
  9366.     (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))0 J4 G4 Q( ~7 B( P" c8 \+ {, s
  9367.     (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))
    / K& s: V, a6 O' t5 Z  A
  9368.     (setq data-pt-indicator (+ 1 data-pt-indicator))
    ( D' j& c2 \5 x' H3 `3 `" {
  9369.     (set_tile "data_ctr" (itoa data-pt-indicator))( n  A' e# a% v# I
  9370.     (setq cur-11-rec (+ 1 cur-11-rec))
    3 a; P& X# h9 O3 q. s
  9371.   )0 L: J/ R, b7 Y, k$ e5 R5 Z
  9372.   ;;
    6 D/ l$ s+ E. [0 S1 y1 ?
  9373.   ;; Modify SPLINE
    0 T: i0 A7 ^" p6 g
  9374.   ;;4 D- A. [3 \! r8 t9 h+ H
  9375.   (defun modify_spline ()+ H, G5 z3 S# s1 n' z5 b
  9376.     (modify_prop_geom)
      W' k! z: j, ]. n4 M$ `
  9377.     (entmod elist)
    1 i5 U5 d$ Q$ q7 _
  9378.   )
    . M3 d# J1 n9 B0 a0 D+ \) `0 K0 o

  9379. # f' ?  l+ |- h  j
  9380.   (defun ddspline ()
    ' C, D5 ?% Z0 s7 f5 Y
  9381.     (if (not (new_dialog "ddspline" dcl_id)) (exit))0 W2 G) V& h" Q" B  v) m
  9382.     (set_tile_props)
    ' }0 v+ t8 H# y' l' T2 b
  9383.     (set_tile_handle)# U2 L+ i! R  y. n# z1 G( v. u9 B
  9384.     (set_tile_spline_props)) I. f5 K8 A" H* N# W1 Y
  9385.     ;; Display first control point
    8 n; n! [8 W1 h# k
  9386.     (set_tile_cntl_pt)
    , i* e$ f% L5 J: z
  9387.     ;; Display first data point
    / X& d' x# l( p
  9388.     (set_tile_data_pt)
    $ D' L3 ~9 ~$ Q0 ]) d

  9389. 6 D+ s# [7 e- y. s6 {/ o# Q
  9390.     ;; Initialize flags to indicate first time through the dialog.$ W3 o$ p2 O3 e! j2 w* A
  9391.     ;; For control points and user data points the "next" buttons+ k) J, ]0 ?3 f7 a. Q
  9392.     ;; in the dialog call the appropriate functions.7 ~* [. w0 U" u6 \
  9393.     (setq first-10-time 1)5 Z: _- |) B2 x0 z, z2 d# h( g
  9394.     (setq first-11-time 1)
    , f2 d9 s& ~8 F- i+ k
  9395.     ;; initialize control point number counter# d9 z. a/ r) q7 M( U$ N3 U
  9396.     (setq cntl-pt-indicator 1)
    6 H0 Z7 k+ v, w3 }
  9397.     (setq data-pt-indicator 1)+ q' u) q1 J4 ^. d
  9398.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator)). ~9 R/ c) f% j$ O9 s+ y5 G+ }
  9399.     (set_tile "data_ctr" (itoa data-pt-indicator))" M* v' H0 t) L3 K2 ?4 U2 ]
  9400.     (set_action_tiles)/ |; r1 M% H& r+ o9 f
  9401.     (setq dialog-state (start_dialog))/ ^- x  L2 G8 i! q4 S) _
  9402. ! s7 ]9 O& p; v, y5 A
  9403.     (if (= dialog-state 0)* ?: v1 P1 n6 |3 Q* R* W6 t
  9404.       (reset), E8 Y- t, i2 b" ?  v
  9405.     )3 Y$ X8 W1 `6 _8 t( T
  9406.     (if (= dialog-state 1)+ j7 _( v. L4 f- d/ Z
  9407.       (modify_spline)
    4 I% W9 t- y: F8 k
  9408.     )! z. z) z& c0 W2 Q7 ?0 Z( ^
  9409.   )4 p1 M: O6 I: J  R: g3 m

  9410. & b9 n# l$ R& y1 K) N8 ^
  9411.   ;;$ @+ t) E4 k# y8 a3 t
  9412.   ;; Modify DIMENSION; y/ e% {3 X+ l' N, p8 }
  9413.   ;;! b0 w% f4 ^" M2 h7 a/ P7 m
  9414.   (defun ddimen (/ dtypebit blkname bename sublist a stname n dimtbl5 j* f: z9 `# F' Q% j! @
  9415.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist5 [. z/ s' H- I4 B
  9416.                    dimtype dimsvcurset)  d) j; n0 ^2 o8 m$ x/ M
  9417.    (setq dimtype "DDIMEN"
    6 c- g6 z3 h* y5 A3 x: T
  9418.           dimsvcurset (ddimen_dimsty_restore)9 j1 s- v2 }# b/ |" k- E+ k2 ^
  9419.     )
    9 y# ?0 |5 c* e! x9 F
  9420.     (if (not (new_dialog "ddimen" dcl_id)) (exit))4 b2 p/ y% ~$ D8 m
  9421.     (set_tile_props)
    , v9 j0 }$ u$ d2 j) L. A) z4 z
  9422.     (set_dimen_props)
    6 S" V0 a1 t; P/ g) _" Z# k
  9423.     (setq dimtext (cdr (assoc 1 elist)))
    0 R$ i0 t% U$ G2 T: u
  9424.     (set_tile "t_string" (if (= "" dimtext) "<>" dimtext))5 [. w3 r1 l8 ^5 F6 p
  9425.     (set_tile_handle)# x; `* ~. m0 f" `4 W! h
  9426.     ;; Define action for tiles
    * m+ _6 o- [4 j  R" m1 `8 a( m
  9427.     (set_action_tiles)& z6 S; U9 U4 A: o9 L9 q, k

  9428. & s- c1 J9 v; S& L1 [9 q4 }# a! O- Y
  9429.     ;; Set initial focus to text edit box.' C1 L* `2 [9 o1 l5 O  f# @% e
  9430.     (mode_tile "t_string" 2)0 w) J2 W- V& H2 y3 b
  9431. 8 s$ g* h: u/ ~- S4 a5 h, ]& g
  9432.     (setq dialog-state (start_dialog))
    ' P, J7 g4 B! {  k5 z
  9433.     (if (= dialog-state 0)$ @$ y& H7 y; ~" T3 J" R
  9434.       (if (= ddimmt 1)4 M  [1 F* ]" h; i" [6 _8 Y( s! f# d
  9435.         (reset)
    4 {9 f" N+ y; Q+ q6 K( ~8 l& t
  9436.       )1 b5 a5 Y6 N/ j/ M
  9437.     )* M& p/ w, w& F$ S
  9438.     (if (= dialog-state 1)
    ( Y/ _, G  k0 h* {" _
  9439.       (progn
    1 B% q0 u( w! D) i
  9440.         (if (/= dimsty stname)2 f" A- f" d8 W  D0 z! S
  9441.           (progn
    : h6 J! \9 d; V4 c1 `& a
  9442.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case7 o5 r+ {/ a& t# K9 U! |/ f$ m
  9443.             ; doesn't have it.
    5 F! P9 x% y6 {" Q, O, H+ S
  9444.             (if (null (assoc 3 elist))+ d' L( K, `2 }6 g+ M% B6 s' h
  9445.               (setq elist (append elist (list (cons 3 dimsty))))
    9 x# o$ N- x# W4 r. P
  9446.               ; else just replace it.+ _2 a& W- h, V) o9 z' o2 n. ?, d9 T
  9447.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))1 p2 o. b, z. s0 `2 _* b
  9448.             )
    , j( j/ L9 r; j* q  E
  9449.             ; refresh sv_dvlist with new dimstyle.: F! ~$ }5 [% x: M# T, h: x/ n
  9450.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    ) w: _$ T% i  Q3 N# Y$ c# O
  9451.           )7 j% `/ Q( j( \8 B6 N( V4 y* k4 j/ u
  9452.         )$ y7 e  p* e, y4 D3 ?9 i' c
  9453.         (if (not (null dimlist))   ; attempted to change dimvars
    % g) i3 c/ H- `$ S9 q- m0 ^. M
  9454.           (ddimen_complist sv_dvlist dimlist dimtbl)$ H: D) L) G( s. K
  9455.         )
    ( `# [+ T/ @. D1 k) ^
  9456.         ; Modify dimension text2 N4 M! p; H, w3 j
  9457.         (if (/= dimtext text)
    # w# D; {0 O- v# r+ {
  9458.           (progn# m4 t# L2 y; o* ?6 F, r
  9459.             (setq dimtext (if (= text "<>") "" text))) `8 A4 R& G* p1 N$ N! [/ m
  9460.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))* x1 S+ M' c' ~9 a  i# F* G
  9461.           )
    ! R/ y, p( `1 y" W' [, m* }
  9462.         )- G) }  @; l. d0 F1 T9 V2 t
  9463.         (modify_properties)
    : e7 k% u+ T0 A' U1 ^3 ?6 L, w
  9464.         (entmod elist)- F6 c5 w; [( J9 g4 I
  9465.       ); s; B0 V3 m* b# a8 F% x
  9466.     )
    0 |) \5 m5 M4 j0 X+ J
  9467.     (if (= dialog-state 4)
    0 t- M3 v$ w) G; {& C
  9468.       (progn
    4 ?' \- o6 t+ O+ q6 D% R8 I6 x5 C6 S, G
  9469.         (setq ddimmt 1)+ c9 }$ F0 }; k: D
  9470.         (if (/= dimsty stname)
    " @/ _+ U' ]$ y1 w
  9471.           (progn7 B% `  N; P3 p
  9472.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case* a8 U5 T) ], V" n. h$ f! _2 m% m" s
  9473.             ; doesn't have it.) V: H2 Z: q3 ~; N  o
  9474.             (if (null (assoc 3 elist))
    2 [! x! D( k6 b1 O. P
  9475.               (setq elist (append elist (list (cons 3 dimsty))))$ }1 @/ d) _0 L4 s9 R
  9476.               ; else just replace it.
    0 A- g7 K4 {9 G6 L+ K2 @6 Z8 w
  9477.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))( S  E1 C( v, z( [3 s! h4 }
  9478.             )
    : Z& ^* d: h9 B5 F/ h, F
  9479.             ; refresh sv_dvlist with new dimstyle.
    ) }9 z7 \- I+ b* c$ S
  9480.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))" k. b+ Z; d, A3 {& `0 W0 K, ]
  9481.           )1 H; h, U2 M9 ^, ?: l( H4 U
  9482.         )% b! z) t" Y8 ~. w% c1 U
  9483.         (if (not (null dimlist))   ; attempted to change dimvars
    & k4 I) c& w0 Q
  9484.           (ddimen_complist sv_dvlist dimlist dimtbl)
    - D% `: I% u, ]  }' d
  9485.         )7 m4 n9 S! B/ e! F
  9486.         ; Modify dimension text+ e9 W, e& Z4 Z, K
  9487.         (if (/= dimtext text)
    , r9 b1 ?* i2 x3 D. X$ H" p/ N; t
  9488.           (progn  q7 z2 _  E" e: [; c1 K+ K6 K
  9489.             (setq dimtext (if (= text "<>") "" text))+ Y3 ~2 y8 b( H0 M1 P3 c
  9490.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))$ x0 t: g8 `% R" t& [4 v
  9491.           )# E; L$ i0 w& y& }& V( r
  9492.         )
    . S/ Q' D  Y  w) p+ L
  9493.         (modify_properties)
    & {, A0 V/ P1 {. h) ?4 I# H
  9494.         (entmod elist)
    ! y+ `& u( o! y
  9495.         (safe_ddedit ename)
    9 n8 f4 Z5 b; H. E
  9496.         (setq elist (entget ename))$ b5 X6 i( _3 a* E& [/ z9 A
  9497.         (ddimen)& b' [* p$ q' {2 L4 c& p
  9498.       )1 F: m8 g2 y& \% t- G
  9499.     )
    4 h: B0 I6 m+ w7 E8 `
  9500.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    ) \0 Q: g, S! Q) b6 K
  9501.   )
    5 B4 ~* x- ]) ?$ F
  9502. ( c  Y9 n9 g7 u3 q4 P: H
  9503.   ;;, R6 Z" [# @" G7 k& _3 x
  9504.   ;; Modify TOLERANCE4 q; [5 G. }$ I* H
  9505.   ;;" e- ]0 [* X$ i, d$ e% Z
  9506.   (defun ddtolerance (/ a stname n dimtbl
    ) O5 q# {6 Q. N- _
  9507.                    dimsty dimlist dimovr sv_dvlist stlist dimtype
    8 Z+ V$ b, B$ ~. J$ ^7 J6 H, Q
  9508.                    dimsvcurset)1 c" S$ R. w4 A
  9509.     (setq dimtype "DDTOLERANCE"
    5 m6 U, e( Z: j, l& P0 G
  9510.           dimsvcurset (ddimen_dimsty_restore)
    * E- N3 y5 U; w/ M- d" V& C
  9511.     )
    + n9 h6 R: y, v
  9512.     (if (not (new_dialog "ddtolerance" dcl_id)) (exit))
    - D' ~; Z; Z* W/ ?' O
  9513.     (set_tile_props)8 A  {, F- q6 l; Q9 A. |) s$ B
  9514.     (set_dimen_props)' x  s, a: x! f  H. _2 {
  9515.     (set_tile_handle)5 z+ v3 N( Q8 X/ I0 D7 N9 ^
  9516.     (set_action_tiles)
    8 s5 }; x4 U7 C/ }" R& c
  9517.     (setq dialog-state (start_dialog))' e+ {7 I7 o: S8 f$ ?
  9518.     (if (= dialog-state 0)
    2 n" z) u  r  ~: m, r5 k! x& v
  9519.       (if (= ddimmt 1)5 S' j8 R8 I2 ^4 W7 u1 w
  9520.         (reset)* K, }0 v# X2 s) r; k
  9521.       ). D6 h& t/ H* m$ N, Q" R
  9522.     )
    / n* H" N1 L2 w. F
  9523.     (if (= dialog-state 1)% ^7 {. [3 v) s) U2 \$ ^" l0 t
  9524.       (progn
    2 Z0 P- ]9 O9 F
  9525.         (if (/= dimsty stname)9 `( [; `$ U7 ~" U2 w) A2 p: `" y
  9526.           (progn
    * _1 s+ W2 r0 m" C" R
  9527.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    5 P( G% S7 P0 T/ L( z
  9528.             ; doesn't have it.% x1 }! Z- t, f
  9529.             (if (null (assoc 3 elist)); N! B% h& x9 y# O; s$ I
  9530.               (setq elist (append elist (list (cons 3 dimsty))))$ g" Q5 u3 l" `$ s, r% h
  9531.               ; else just replace it./ G& R$ q3 }! I* m5 d- w3 F2 q
  9532.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    ! o. U( r  }$ z/ u
  9533.             ), K6 j# r5 o  ~: x3 s/ T
  9534.             ; refresh sv_dvlist with new dimstyle.
    % W& P9 H! v1 r5 H
  9535.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    $ B1 ~: J0 \* K" S6 g/ P# J
  9536.           )
    : o1 F% p/ J' N1 b! `
  9537.         )
    & t% v; v# U/ w/ z- [8 v* [
  9538.         (if (not (null dimlist))   ; attempted to change dimvars
      s5 C* C% S4 K1 g
  9539.           (ddimen_complist sv_dvlist dimlist dimtbl)
    0 A0 |: F# Z5 @8 _) @
  9540.         ). t3 v  O/ n; C
  9541.         (modify_prop_geom)
    ' y8 x! K% G( [  R% |( z
  9542.         (entmod elist)
      ^/ P" t( }. S7 A
  9543.       )
    & T4 A! U  P0 C
  9544.     )2 v6 Y7 s, y/ R( H. T% D. k
  9545.     (if (= dialog-state 4)
    7 R7 }7 @, a" F' E) v
  9546.       (progn1 ?) L$ `  c- f7 Q$ a9 R1 Z
  9547.         (setq ddimmt 1)( r7 @7 ~& G% c7 e
  9548.         (if (/= dimsty stname)1 \0 W) ]+ C" A" W& j+ C% B* V
  9549.           (progn
    ( J9 R) \% @) O
  9550.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case8 ~; ?5 y; s; \  e4 m4 V
  9551.             ; doesn't have it.- S$ m+ \! a- a$ `/ f3 d; m# h
  9552.             (if (null (assoc 3 elist))0 F$ S' V  n  g: z0 p
  9553.               (setq elist (append elist (list (cons 3 dimsty))))
    ! S; H# ~) f, \; U& q" N1 ]2 b
  9554.               ; else just replace it.0 _" E0 o' a+ A7 O9 ~  x+ n
  9555.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    ; K5 y2 _' t. N
  9556.             )
    $ G# u# X0 t$ I: w1 K2 ^' R& {
  9557.             ; refresh sv_dvlist with new dimstyle.0 a6 X. a2 r$ ^! x, J  R5 @2 W
  9558.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    4 n3 D- c) \, o. w- z9 d
  9559.           )* G" Y/ G3 t5 O1 `; D
  9560.         )) k: i# o- }5 g. }1 V4 ?/ C
  9561.         (if (not (null dimlist))   ; attempted to change dimvars
    - }& U, c8 }8 ]  m% ?
  9562.           (ddimen_complist sv_dvlist dimlist dimtbl)
    8 f# V2 `5 d  d
  9563.         )
    + |: [0 @) Z+ ]/ t6 ^$ n( M
  9564.         (modify_properties)
    ! c0 ~" Q/ o) P0 E8 W- T
  9565.         (entmod elist)8 {, Y7 a( ]. \  z7 u
  9566.         (safe_ddedit ename). L5 j  N9 L' R& B- B" }3 Q
  9567.         (setq elist (entget ename))5 C, {! X8 R' B5 R
  9568.         (ddtolerance)7 H0 |- }" j! f& ]& c
  9569.       )- N5 {. a5 b. l5 \, V$ y  G* W
  9570.     )- ~3 b7 O& Y* _5 F" m& T
  9571.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    7 I& [" G6 K5 S( b& F. {
  9572. )
    2 Q. Y: |# e" j3 t! m# j

  9573.   K' y( k3 n( E( u6 r
  9574.   ;;4 |( O5 n# O* w. b+ k8 t* A7 t
  9575.   ;; ddimen_dlg - jump to ADS ddim module
    2 v+ n; j# X- k5 w& t( z
  9576.   ;;
    7 W: K  H5 R2 G# F+ F" j* R
  9577. ' I1 G% g1 W( S+ o4 j8 h& C
  9578.   (defun ddimen_dlg (dimtype tile dimsty dvlist / dimlist)
    0 H* z" m7 x3 A  k7 l
  9579. 9 r1 H: x, E! b2 [7 K. r( I
  9580.     ; Jump to DDIM with overrides if any.
    4 c8 G4 A- f8 q& u* S! w6 b$ @
  9581.     (cond ((= tile 11) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Geometry
    & t$ P# o5 L0 W0 m2 _1 I" ~$ `
  9582.           ((= tile 12) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Format# t) A; i4 D. O9 u
  9583.           ((= tile 13) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Annotation
    + s( i6 W1 _7 W! C" i9 `
  9584.     )& \6 c; |6 O7 E( Z: r
  9585.   )
    , d, e& e& G" ~" {2 n

  9586. : t, g  ]- R" C  C$ m
  9587.   ;;3 V$ i. `5 s" L7 e& ^' C
  9588.   ;; Dimension variables updated are stored as overrides.
    1 o6 e2 q/ W5 O8 w
  9589.   ;;# H1 Z, k5 _( A
  9590. ! k( l' T8 e/ v. x1 l
  9591.   (defun ddimen_complist (dimolist dimnlist dimtbl / i odvar ndvar
    , T+ ^* c; p4 \/ F$ b4 q" E4 Z
  9592.                           dv dime commandIssued)4 W. W8 I" r. j- x( }, M* l: a3 G, J/ z
  9593. 8 \# Z$ ~2 C( G4 P; |9 G8 y3 V
  9594.     ; Here we skip the following first three items:
    4 K! ]- S2 o% w* G) g0 |6 ]
  9595.     ;   (0 . "DIMSTYLE") (2 . sylename) (70 . 0)
    # o  f( {$ E' M0 [! ~: Z4 S4 `
  9596.     ;
    $ V, l+ E& }0 {; b( H; ^7 z
  9597.     ; The list comparison immediately begins with dimvar.5 t. d" D, E1 J' w- m3 T5 z: Q
  9598.     ;
    + m0 u  J$ O( a8 {' O& w
  9599.     ;  dimolist - original states of dimvars2 c  [: h" y  S1 p% S3 h4 p9 o4 a+ v
  9600.     ;  dimnlist - new dimvar list which is of the resbuf's
    ' z" i& K* N5 m8 v  E  Y
  9601.     ;  dime - entity name for the dimension
    9 p5 p: B- K6 K) |* o9 y
  9602.     ;  odvar - value of dimvar for the dimolist
    & ~' ]6 N1 n. o3 }
  9603.     ;  ndvar - value of dimvar for the dimnlist1 t! P& q9 y  P. ^0 l8 p" r- u! `# B: x

  9604. % w+ r+ X- T3 V( S5 P/ s% [
  9605.     (setq i 3
    ( V9 {) F% J0 O- J
  9606.           dime (cdr (assoc -1 elist))
    4 B: W1 R- P) h3 y6 W
  9607.     )' d6 e6 b! O5 a
  9608.     (while (setq odvar (cdr (nth i dimolist)))& j( n3 P6 T( V: r
  9609.       (progn
    + o" r/ l! N0 a. S
  9610.         (setq ndvar (cdr (nth i dimnlist)))1 m( C: X$ y2 K: s& S/ R0 ~% o
  9611.         (setq dv (nth i dimtbl))
    7 F' [& ~) c; }" A& Z! H/ u
  9612.         (if (eq dv "dimtxsty")( E# L  l8 i4 z1 {5 n6 p3 ^
  9613.             (setq odvar (cdr (assoc 2 (entget odvar)))
    6 h9 E" j( ]; P* T# z, @8 F
  9614.                   ndvar (cdr (assoc 2 (entget ndvar)))
    , F; T8 }1 r* n
  9615.             )
    7 Q; \% C2 D" F& {, z
  9616.         ). n! D2 t. p7 b3 D5 w$ \

  9617. % v: D$ T1 o* M
  9618.                 ;
    ; \  _; A3 {7 `% L% X
  9619.                 ; In order for DIMOVERRRIDE to operate correctly with string
    , y5 ~. T7 S6 Z5 N' d
  9620.                 ; based dimvars, we must pass "." versus NULL strings.% u, P1 X2 ~5 u! h
  9621.                 ; In this case ndvar is the new dimvar value the user wishes
    " W$ _% X. _- j, @3 A; p$ H$ a
  9622.                 ; to update on selected dimensions.8 I; R6 J4 W. Z8 S, f1 h
  9623.                 ;
    0 `( g  }; M" }( i: p4 p& Z/ m
  9624.             (if (/= ndvar odvar)
    / D1 |6 K; H0 p! `: a
  9625.               (if (= 'STR (type ndvar))7 ?8 {: a$ y9 u( M! @/ _
  9626.                 (if (= ndvar "")
    3 P$ C$ i+ o6 ~* D' C. B3 h: I
  9627.                       (setq ndvar "."))))
    ( [5 y9 Z7 w& K+ X: a4 K* {0 s
  9628. * C* W' e( U  u* S8 [
  9629.         (if (/= ndvar odvar)9 v7 s; z& \. m
  9630.           (progn
    3 G4 `8 W5 _3 J' }; U3 G
  9631.             (setq dv (strcat "_" dv)), C$ @  f, @" u9 c- r
  9632.             ;
    5 M& s* C3 T5 e. q6 ^* C0 Z# Y
  9633.             ; Start the dimoverride command' t8 W: H, C3 E1 r
  9634.             ;. E3 X5 u; c, v  q7 N- a* M
  9635.             (if (not commandIssued)0 l. c; e" {. B5 N; V
  9636.                (progn  Z2 s$ ]% F+ D% c
  9637.                  (command "_.dimoverride"): c! O. A" y, c4 k1 B9 ], [7 q
  9638.                  (setq commandIssued "T")
    7 K- C6 F7 j( Y( }/ j
  9639.                )
    7 U' }, W! {6 F" N, ^
  9640.             )) Z8 n: K" W$ b8 C' U& J
  9641.             ;, H; K7 q% `6 l( a9 z
  9642.             ; Issue dim overrides
    3 z0 f  \  l6 K
  9643.             ;
    ; ]4 y  K5 ?5 f( I- b
  9644.             (if (and (or (= dv "_dimclrd") (= dv "_dimclrt") (= dv "_dimclre"))* ?: p, e3 h* Z- d" m
  9645.                      (or (= ndvar 0) (= ndvar 256))
    ) p$ j' w" A) k2 p" G
  9646.                 )
    . o4 Q  q9 {% `" Z6 }1 x
  9647.               (progn
    / `6 i" Z( T* j* _
  9648.                 (if (= 0 ndvar) (command dv "BYBLOCK"))
    5 Z) ^) x- v9 j2 W. g1 v2 {1 i
  9649.                 (if (= 256 ndvar) (command dv "BYLAYER"))
    6 k* l) ~6 g7 |3 h4 N+ ^
  9650.               )* C% U9 J7 u' T0 z- i
  9651.               (command dv ndvar)" _$ L: W$ L4 y3 Y) k
  9652.             )3 J- y# X: M8 n
  9653.           )
    * G0 y; z- ?+ m
  9654.         )
    ( t7 A( o* \/ U. J1 X
  9655.         (setq i (1+ i))
    ' Z" s3 B$ s3 T) r
  9656.       )
    . p1 v+ b9 B9 v% L
  9657.     )# q2 O; ~! `$ V5 v3 V" F
  9658.     ;7 a& @6 H& c6 Y0 v8 ~
  9659.     ; Select Entity and terminate command& F2 J+ C8 U& q2 Q+ s0 s
  9660.     ;1 E" N* C5 P$ M8 b
  9661.     (if commandIssued
    4 G) \- O+ k8 z
  9662.         (command "" dime "")
    & f' b# K5 I- {4 P& \0 @
  9663.     )
    3 l0 l; s; q  }* ~0 D' V
  9664.   )
    4 u1 k2 j9 A9 f4 m

  9665. 5 T; Q! H; F  ]- S3 P6 e" g0 N
  9666.   ;;
    1 V: t% }8 Q& R8 R0 o
  9667.   ;; Get style name currently selected style name.+ |- Z! `# e. C% W
  9668.   ;;
    $ c% E0 |/ R4 _1 `8 d
  9669. 5 D; m' i: e5 B* n- H- P9 F
  9670.   (defun ddimen_style (/ dimsty)& g1 N4 T; G0 d! c; y
  9671.     (setq dimsty (nth (atoi (get_tile "mod_style")) stlist); m: p3 g4 `( x
  9672.           dimlist (ddimen_getdimvars dimsty)9 E* g, a' `9 D' A/ @+ [- s6 }
  9673.     )/ _# ~$ l9 N% v& r- p
  9674.     dimsty/ O3 p( }! Y* w5 W
  9675.   )
    4 D, T8 ^4 ^  d8 o4 X/ g( q2 g
  9676. - d/ [6 Z0 D$ x8 i1 q4 j; U2 \* m
  9677.   ;;2 n" s" A' h& \) l9 F) x5 m6 A8 ^
  9678.   ;; Set dimvars1 y+ h; R" N; b6 f+ u
  9679.   ;;, l/ Y' y. j0 ^1 o9 t0 r
  9680.   (defun ddimen_setvars (dimsvcurset / dv i)& T+ `8 q$ h% ^
  9681.     (setq dv (cdr (nth 1 dimsvcurset)))
    . [; l. w- x& F" {
  9682.     (command "_.dimstyle" "" dv)  l* n6 e: f$ }3 Z, }+ q. n
  9683.     (setq i 3)
    ' i/ X! Z; |8 y
  9684.     (while (setq dv (nth i dimsvcurset))
    : f+ G. ~7 g# O
  9685.       (progn
    9 b! R' z" M+ i; K+ t* A% b. P( Q: y
  9686.         (setvar (car dv) (cdr dv))
    ; o- c5 J/ h. p- \5 k7 e/ k
  9687.         (setq i (1+ i))- M+ t. Y) z0 {% ~! P: p
  9688.       )
    0 A6 k& e; \/ A5 y5 e1 [) ?# I
  9689.     )
    8 V1 }( l4 j  @0 y- ]
  9690.   )
    + G# b) P, Q2 \9 Q  z
  9691.   ;;
    8 ^% x$ _+ ~3 `- n, |2 ^4 K
  9692.   ;;  End-of-dimension: i6 S3 S9 \$ U2 _! q9 e$ b
  9693.   ;; ==================
    " d: A  c7 _3 U! B0 R) m6 S

  9694. $ {$ `1 o5 X1 {6 z
  9695.   ;;
    7 ~) Z( x( ]: c+ M* u7 Z
  9696.   ;; Sub-dialogues for properties.  Common to all object dialogues- X7 K9 @# j8 m! }+ E7 o. N
  9697.   ;;
    3 `+ s& u1 U6 [- ?- ~$ P
  9698.   ;; This function pops a dialogue box consisting of a list box,image tile, and/ I0 K- o5 d4 p; ^: O6 b
  9699.   ;; edit box to allow the user to select or type a color number.  It returns
    * L8 f* P; u% X1 M, M
  9700.   ;; the color number selected.
      m! Q( ]$ M9 M, I
  9701.   (defun getcolor (/ old-idx colorno cname lay_clr)
    1 q8 a8 @; z8 x
  9702.     (if (= (get_tile "error") ""). i( D# k9 `: {- F: V
  9703.       (progn
    ; q1 _0 ~# b$ m0 `  r( G  e
  9704.         ;; Get the color associated with this object's layer, for use& Z  D* T# }/ l+ Q2 A3 M
  9705.         ;; in the color swatch if the user selects color BYLAYER.
    , q. t! _- d# A
  9706.         (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))& f( d3 K4 c$ N0 O: ]
  9707.         (if (numberp (setq temp_color (acad_colordlg ecolor T lay_clr)))
    $ |9 d" S5 k  ~* |% W1 k
  9708.           (progn
    ) Q9 Q# ]6 [* ]3 r/ f6 B9 g
  9709.             (setq ecolor temp_color)
    7 w' L/ j5 L1 V
  9710.             (setcolor). K9 X. S7 A: v( [/ H" H# j
  9711.           )
    , |! T4 n6 n3 y0 a
  9712.           (setq testcolor temp_color)
    ) D, j3 {+ n) m! ~  P
  9713.         )& `' n6 k+ Y7 M. B) v( d! Z
  9714.       )$ F  [: y: }! w, q5 [, X3 n+ u
  9715.     )7 i/ ?3 E" _1 a: m4 j0 e$ @5 z( y
  9716.     ecolor
    8 Z) }  R6 Z  I/ v) X( d( V
  9717.   )
    & z# @1 {7 R( M4 o: F- W
  9718.   ;;/ ~! Y+ Q1 ~6 G" ?/ t! O' T% S
  9719.   ;; Function to set the color tiles.% {! h* z" E, @% e: Y5 E
  9720.   (defun setcolor()% [' A5 p- d* N: L: G
  9721.     (cond1 f; W4 k5 h% y* D0 V
  9722.       ((= 0 ecolor)
    1 m2 u1 N  o4 d8 m0 s  d+ f  ~
  9723.         (set_tile "t_color" "BYBLOCK")
    ; @7 r3 _' m! `# `6 w: K; Q
  9724.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white
      j1 C# P; l4 W3 k3 T" t
  9725.       )
    , j( Q6 L* j: `  s" X5 S' h2 I
  9726.       ((= 1 ecolor)
    9 q6 ]' h" [' Z( Y
  9727.         (set_tile "t_color" "1 red")
    1 ]1 F5 \) t. P. k- X: ?
  9728.         (col_tile "show_image" 1 nil)2 {5 v, S* Q1 m+ v) G; S  D
  9729.       )
    2 x& u& J' U8 P3 N2 z; J0 G
  9730.       ((= 2 ecolor)
    . b0 p! K! i: b; X; ]9 L! M; s$ \
  9731.         (set_tile "t_color" "2 yellow")3 \( v7 ^3 B; U" r9 f
  9732.         (col_tile "show_image" 2 nil)) s) D6 W( ^3 v$ U( Q
  9733.       )$ H& u$ m) G' w2 c
  9734.       ((= 3 ecolor)4 D/ W' ^- R+ I! Y5 n/ x2 [8 Q
  9735.         (set_tile "t_color" "3 green")
    7 a9 d* Y5 A8 M
  9736.         (col_tile "show_image" 3 nil)
    7 Y0 `) M, `; {7 U7 i
  9737.       )% N; t0 B; q8 k# o
  9738.       ((= 4 ecolor)# `* c* A0 \1 U) l, e4 p. a
  9739.         (set_tile "t_color" "4 cyan")
    : Q- R0 {! w# q/ K( n
  9740.         (col_tile "show_image" 4 nil)
    4 {( m( O! d# Q% g
  9741.       )* \8 I5 X6 Q4 h1 B* @, q
  9742.       ((= 5 ecolor)
    2 \* S) r9 z" p+ N% l
  9743.         (set_tile "t_color" "5 blue")5 q; N* @/ r* F2 c5 N
  9744.         (col_tile "show_image" 5 nil)
    9 s* }2 H* }) }% e
  9745.       )3 i) V% g: m1 j: L- s
  9746.       ((= 6 ecolor)% t; Z- a: Z% j% [$ i8 y8 L* p7 a$ R: S
  9747.         (set_tile "t_color" "6 magenta")
    6 `6 a* v$ m" R9 R9 ]  w8 {
  9748.         (col_tile "show_image" 6 nil)3 q- A' a" R$ p* O
  9749.       )
    ; d- h" Y: k! k3 [6 Q8 A
  9750.       ((= 7 ecolor)
    & O! I( j6 z: u1 I4 i5 d
  9751.         (set_tile "t_color" "7 white")0 }8 C: O( ]; S6 z, G  y
  9752.         (col_tile "show_image" 7 nil)
      `0 m% ], F; A" @
  9753.       )
    / O' K$ a0 R- p5 f/ M9 [! F
  9754.       ((= 256 ecolor)+ d$ {( J  G; X: n  y$ f6 ^$ O
  9755.         (set_tile "t_color" "BYLAYER")
      w) a2 O& S6 I- ~. t
  9756.         (col_tile "show_image" (bylayer_col) nil)' C1 D% x2 B6 Z" z
  9757.       )
    $ N8 ]) p5 ?9 v( [: [7 w% `4 c
  9758.       (T
    - x! B- q- j4 P. v
  9759.         (set_tile "t_color" (itoa ecolor))5 F' k9 r8 |- K- ]; e  o, f
  9760.         (col_tile "show_image" ecolor nil)$ K7 F1 y$ P1 m( H$ k6 \- r' f
  9761.       )
    - v8 a2 [, f  P3 R, y4 I0 g+ C5 @
  9762.     )
    . N* h+ I9 ~: ?8 n, D+ |
  9763.   )
    3 r% g7 z9 w; B+ O
  9764.   ;;1 s4 Z% w# ^4 C& W$ G! c7 \
  9765.   ;; This function pops a dialogue box consisting of a list box, image tile, and
    + ?/ q, A; A4 i+ P; O- E  f
  9766.   ;; edit box to allow the user to select or  type a linetype.  It returns the5 }5 X  p8 u+ f7 m% J) l
  9767.   ;; linetype selected.
    * h6 d3 [5 L6 n) `" @6 u" m  Q
  9768.   ;;
      d# P! u4 C4 V7 l( m0 }, F
  9769.   (defun getltype (/ old-idx ltname)
    * X# S7 g* M1 x9 `
  9770.     (if (not lt-idx)
    4 f1 y6 }- l8 V
  9771.       (progn
    ; K1 m& g( _: g7 }: f, j
  9772.         (make_lt_lists)             ; linetype lists - ltnmlst, mdashlist
    4 O8 o" |2 f9 r2 W( g9 w
  9773.         (cond
    5 C, N! b7 M/ C+ u. b6 O0 K
  9774.           ((= eltype "BYLAYER")
    # v# q* a) A% i/ J+ p* P$ L6 Z
  9775.              (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    $ I- x' p3 a$ u2 m; r
  9776.           ((= eltype "BYBLOCK")* f* g7 V. a1 s) v. b
  9777.              (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    7 K/ c: M3 K0 c% H6 F/ {! {
  9778.           (T (setq lt-idx (getindex eltype ltnmlst)))
    " r" R8 y8 ^; V7 |& [
  9779.         )
    5 F4 x( b9 q+ ~$ I" s
  9780.       )# j, ~$ ]- m# T# G, b
  9781.     )- {0 }5 w$ j/ n: ^- X+ f
  9782. 7 K6 D  i" d1 f9 z3 m
  9783.     (if (= (get_tile "error") "")8 x+ K( J  Y) m
  9784.      (progn7 Q+ M+ o6 L4 p: b
  9785.       (if (not (new_dialog "setltype" dcl_id)) (exit)); p: M9 B6 j% m$ K. l' d
  9786.       (start_list "list_lt")! H4 b5 u3 ]) A3 u0 H# l
  9787.       (mapcar 'add_list ltnmlst)  ; initialize list box1 O) @/ h' G) I* \
  9788.       (end_list)+ X' }: c) n- e8 j
  9789.       (setq old-idx lt-idx)
    , d& [* [  r, V" R/ e
  9790.       (ltlist_act (itoa lt-idx))* }7 d( l0 e4 C  g7 C* B6 E

  9791. / L% W* V. J. e; \5 c5 z; n" ]
  9792.       (action_tile "list_lt" "(ltlist_act $value)")
    4 ?: E: w5 }% o" p' a. f, M
  9793.       (action_tile "edit_lt" "(ltedit_act $value)")# a0 I" Y: N; D9 d& Q
  9794.       (action_tile "accept" "(test_ok)"), F" m; \5 O( f
  9795.       (action_tile "cancel" "(reset_lt)")8 Q- D" _9 f% m) D' d1 a$ ~: O

  9796. 4 A1 F% z) ]* k3 A! u
  9797.       (if (= (start_dialog) 1) ; User pressed OK) e' S+ X9 V5 C3 m
  9798.         (cond) P  |: m- w- ^. {7 G! x: B1 B
  9799.           ((= lt-idx 0)6 I  P" ^6 B, Y
  9800.             (set_tile "t_ltype" (bylayer_lt))' M, }* B( V2 W, [
  9801.             "BYLAYER"/ u3 H% t* d" F" i7 ^
  9802.           )
    8 Z8 _- u3 v* J6 r9 r
  9803.           ((= lt-idx 1)
    / i9 U' M* X+ W% Z0 E
  9804.             (set_tile "t_ltype" "BYBLOCK")
    # F4 u0 ~. Y1 ?1 @, T2 w5 c
  9805.             "BYBLOCK"
    3 L' f+ e1 G9 c' ^9 V
  9806.           )
    * w% \5 x; B% n/ K6 l; e
  9807.           (T  (set_tile "t_ltype" ltname) ltname)
    4 }* ?4 k" ?) f: j1 f! B
  9808.         )
    - M) e9 u2 w2 ~8 W" @) K
  9809.         eltype
    / a2 l/ B' c* A  c! N9 U' f
  9810.       )1 _* n7 _& U% T: t1 ?. ?
  9811.      )3 ^2 {3 ^& [% ]$ a% L" h
  9812.      eltype# z3 q4 f  J- x: u- F& p1 b% R
  9813.     )+ b4 s0 }6 Q0 |) [+ b, N5 z
  9814.   )# K: q0 K6 G6 J
  9815.   ;;
    . A& p2 C; w. q6 i% ~
  9816.   ;; Edit box entries end up here
    * c+ k8 R6 w4 j1 B: L
  9817.   (defun ltedit_act (ltvalue), L) L5 ^6 |& o" [6 ~# p9 R% r
  9818.     (setq ltvalue (xstrcase ltvalue))
    & m. y5 C$ B+ X3 ]* t2 E
  9819.     (if (or (= ltvalue "BYLAYER")
    ! _9 I4 k# R& z: |
  9820.             (= ltvalue "BY LAYER"))( w1 _: f2 Q8 F% P1 c
  9821.       (setq ltvalue "BYLAYER")
    % @5 k4 D* m* R+ t$ m- c. T  T( H
  9822.     )
    4 f1 l* D; q8 ?, T3 B
  9823.     (if (or (= ltvalue "BYBLOCK")
    ) q' p' J5 J% c+ ?  j' s+ x
  9824.             (= ltvalue "BY BLOCK"))
    # h, v; H( h8 M/ v1 z2 F! p0 `1 X
  9825.       (setq ltvalue "BYBLOCK")# v2 U$ r7 M: i  o
  9826.     )
    : `0 M  `1 A. L! [3 D1 M) l
  9827.     (if (setq lt-idx (getindex ltvalue ltnmlst))8 y  t( A0 W% }
  9828.       (progn
    + k' a# E. z; Y( q7 Y, w8 Z# R
  9829.         (set_tile "error" "")7 S" G. U. Y) h1 ?- X
  9830.         (ltlist_act (itoa lt-idx))% i- J  `3 l7 a- k
  9831.       )4 Z. _4 z. i8 N
  9832.       (progn  `& m- Q. s' A7 z
  9833.         (set_tile "error" "Invalid linetype.")
    + o# H; O0 g! g# b' C) f& O
  9834.         (setq lt-idx old-idx)* `3 r' O* ]3 T1 G8 l& V- g9 ~, U  m
  9835. ;;        (mode_tile "edit_lt" 2)
    $ z! q7 S- _! @+ ?
  9836. ;;        (mode_tile "edit_lt" 3)
    ; I, F  U0 E6 @; v+ A- p
  9837.       )
    " C% {; Q" K. \2 V" U* e
  9838.     )/ e, q7 u# b5 u* `! e
  9839.   )
    + A2 U/ w; k4 D" r5 Z. x" e& I( n
  9840.   ;;
    - [$ u% @: a0 t6 U; `
  9841.   ;; List selections end up here.  Update the list box, edit box, and color9 n, a8 H7 q# S# Y* c9 ~
  9842.   ;; tile.
    5 H4 |# c" H  U4 n5 B# ^
  9843.   ;;; L5 x& C; Z1 R8 I- b( B% p
  9844.   (defun ltlist_act (index / dashdata)
    ! F" I* t: |; ?9 X, T2 q
  9845.     (set_tile "error" "")
    + G0 a7 f7 o' `8 F- p, E, I
  9846.     (setq lt-idx (atoi index)): Z7 ?- `. n4 y! O
  9847.     (setq ltname (nth lt-idx ltnmlst))
    . b4 `3 w! [4 M1 `; B
  9848.     (setq dashdata (nth lt-idx mdashlist))
    7 o4 }' J! A4 S
  9849.     (col_tile "show_image" 0 dashdata)
    7 F" S* _  e* x* I; `
  9850.     (set_tile "list_lt" (itoa lt-idx))
    6 g) Q4 m( P9 ^# C% \( N) w, M$ ~
  9851.     (set_tile "edit_lt" ltname)0 S0 T( e) H) S/ O' G! O: Z/ e
  9852.   )
    ) f( L4 h2 e8 R! N1 R: f* d! G# [
  9853.   ;;# s2 K, T; O4 Q1 V' Y
  9854.   ;; Reset to original linetype when cancel it selected; n* O* _+ ~5 L* V4 y' c
  9855.   ;;. U# F. g& d8 p, R% H; _
  9856.   (defun reset_lt ()  O" p/ q2 H$ H: r, f& ^# M
  9857.     (setq lt-idx old-idx)
    ; E+ v( t! y  D, _" L8 e+ V/ L
  9858.     (done_dialog 0)) _2 k1 P- c' a: j* c
  9859.   )7 N% z4 Z0 d( a  o
  9860.   ;;( R2 N# N! l( E9 N1 P
  9861.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    2 C. s: i# Z2 p7 F) M5 v3 W. p
  9862.   ;; edit box to allow the user to select or type a layer name.  It returns the
    ) ]1 c& \  o2 f6 R. k/ l) r3 ]
  9863.   ;; layer name selected.  It also has a button to find the status (On, Off,
    3 a4 e& P" F( v. @* x( D) J4 l
  9864.   ;; Frozen, etc.) of any layer selected.
    8 D" k" T2 _. n) B
  9865.   ;;
    , h. z2 k2 `/ Y8 Y
  9866.   (defun getlayer (/ old-idx layname on off frozth linetype)' r5 f* J  P" n: v- Y9 G; H/ }, @
  9867.     ;; Create layer list the first time the layer2 b9 R: e1 U, x) G9 z
  9868.     ;; dialogue is called.
    . i( k; N/ W! v( }
  9869.     (if (not lay-idx)
    1 W% F  m3 L5 e4 [6 F" z
  9870.       (progn' @/ p! H9 x! ?4 |
  9871.         (make_lay_lists)1 \, E/ l0 F% v* ^
  9872.         (setq lay-idx (getindex elayer laynmlst))( B. e% v. Z6 P6 u0 k/ e" s! q
  9873.       )5 d. K& f0 B+ P
  9874.     )
    - @' f6 s( {( ^+ s& u8 B# L
  9875. * u) b* [- b) v6 J4 i6 c, O
  9876.     (if (= (get_tile "error") "")
    - C+ O; E6 d; z  [. c0 o* p! q' q
  9877.      (progn
    / ~* C9 ~3 G, f4 U: k7 O
  9878.       (if (not (new_dialog "setlayer" dcl_id)) (exit))
    % ~  a% a. \. M) ]  |& ?6 }
  9879.       (set_tile "cur_layer" (getvar "clayer"))
    1 K# A) ^0 F; }) K  L( w
  9880.       (start_list "list_lay"); R# |) c& ^1 K% k7 H$ K9 ^' x
  9881.       (mapcar 'add_list laynmlst)  ; initialize list box( E# V5 |% Y% a
  9882.       (end_list)
    % y) [/ X0 y; B" x3 ^' [
  9883.       (setq old-idx lay-idx)
    - G: f5 I3 l+ a! T; j: ?" Q1 f
  9884.       (laylist_act (itoa lay-idx)). x: k0 t& A4 c
  9885.       (action_tile "list_lay" "(laylist_act $value)")0 j4 g+ `7 D' n! i; L; }* X3 G  |
  9886.       (action_tile "edit_lay" "(layedit_act $value)")
    ( [, e% X0 x7 v& n( _
  9887.       (action_tile "accept" "(test_ok)")
    ) J; ], Y3 ^! F( `8 E! ]
  9888.       (action_tile "cancel" "(reset_lay)")  l) ^' t+ O  F$ Y! h7 i7 E
  9889.       (if (= (start_dialog) 1) ; User pressed OK9 {& E: t& o1 u7 N1 W
  9890.         (progn2 o  m( V2 w9 L+ \- d
  9891.           (set_tile "t_layer" layname). S, p6 T3 G, ?$ X
  9892.           (setq elayer layname)
    6 U% f+ f* v+ H8 F
  9893.           ;; If layer equals bylayer reset color tile6 p% E  s0 [) U% J# N+ D
  9894.           (if (= ecolor 256)
    - I5 h% T( R& f8 Q4 u- s/ c9 K
  9895.             (col_tile "show_image" (bylayer_col) nil)0 q" v/ a2 Q5 i- E; v6 a# U
  9896.           )
    7 t$ _4 l2 o6 ^% I9 x2 o/ i" N
  9897.           layname
    / d3 w$ E& v& d6 B- \, G- i2 ?: n( Q
  9898.         )5 q% w, b& ~- d5 S: d+ i' {
  9899.         elayer( u4 M6 v$ a6 h
  9900.       )
    1 N+ k: I3 n/ p, @1 u
  9901.      )
    - d3 v5 @' w  C7 u8 ]( r2 Q
  9902.      elayer
    * O8 |, j0 X/ \. i
  9903.     )
    8 }5 A7 _/ X) c9 F; t: ?
  9904.   )
    0 l& g' v5 q+ \* g: F
  9905.   ;;
    $ N5 W+ U0 ^7 M: Z: h
  9906.   ;; Edit box selections end up here.  Convert layer entry to upper case.  If$ c2 @+ L7 B8 M0 ]  f% F. Z) m
  9907.   ;; layer name is valid, clear error string, call (laylist_act) function." R3 o6 L6 ]( U7 h) C% y9 P0 ^  l: g
  9908.   ;; Else print error message.
    ' t. i: _! @; F( \+ ?5 d  d8 _% L: q
  9909.   ;;! e! V; g  v- L8 _1 H; j
  9910.   (defun layedit_act (layvalue)& Y1 ~, x6 b0 L, g0 @' I
  9911.     (setq layvalue (xstrcase layvalue))9 \. A1 h  T! ?3 D3 T
  9912.     (if (setq lay-idx (getindex layvalue laynmlst))/ w2 e3 [6 {2 U3 A" U
  9913.       (progn+ N: N1 Z# N2 q9 x
  9914.         (set_tile "error" "")" O8 t3 \: p& b2 b, X' V
  9915.         (laylist_act (itoa lay-idx))
    2 A/ H. F3 U7 o7 v: ^% v! Y
  9916.       )
    2 z* h8 Q. s* O8 V$ e
  9917.       (progn
    7 R& o1 I/ t( \; y% Z& _
  9918.         (set_tile "error" "Invalid layer name.")
      w6 R6 j+ G  K6 d2 v
  9919. ;;        (mode_tile "edit_lay" 2)
    9 ^) s  A4 Q, o  {
  9920. ;;        (mode_tile "edit_lay" 3)  y/ F. D4 ~$ ^" S4 A4 M* k* j
  9921.         (setq lay-idx old-idx)1 N. }2 l9 V: N# Z
  9922.       )
    3 k- w3 ^, e) ?9 [, c
  9923.     )
    0 o: D2 g/ i: ^* n' y
  9924.   )# F, L( P  }5 B1 y5 K7 `- P
  9925.   ;;
    . X* }3 l+ t& w& u
  9926.   ;; List entry selections end up here.# X% c4 @4 J. }- N. Q* C! N$ `
  9927.   ;;( v# h; [0 P8 {5 z% o
  9928.   (defun laylist_act (index / layinfo color dashdata)
    * k& X9 {( ]1 G2 X$ i! x0 p
  9929.     ;; Update the list box, edit box, and color tile.$ ?8 |. Y; Y0 u0 k' P6 G! w
  9930.     (set_tile "error" ""): T% O8 v- [/ I6 A; ]7 B- a
  9931.     (setq lay-idx (atoi index)). A0 e7 Z+ K1 f6 _4 V# t
  9932.     (setq layname (nth lay-idx laynmlst))! S5 u+ ]4 P/ [5 E2 q, J( E7 J
  9933.     (setq layinfo (tblsearch "layer" layname)); _- G  _* I# D
  9934.     (setq color (cdr (assoc 62 layinfo)))
    % J3 T# t% Z3 `  k' K6 q- m
  9935.     (setq color (abs color))
    : y% k/ h* ?. V* Q+ t
  9936.     (setq colname (colorname color))
    , [/ i: V6 X9 D
  9937.     (set_tile "list_lay" (itoa lay-idx))
    7 G: T; k1 k& C: U- O' L
  9938.     (set_tile "edit_lay" layname)0 J; g+ e+ V) X" K1 f" y1 z
  9939.   )
    9 m/ S' K, W, a, e
  9940.   ;;
    $ m) g$ J. M+ ~) f/ R, n) z5 Z% `! b
  9941.   ;; Reset to original layer when cancel is selected.
    & j, x" _1 N3 G1 V' _
  9942.   ;;2 b( n& Y  v, x6 l5 G4 Y
  9943.   (defun reset_lay ()% V/ }# V4 @4 e
  9944.     (setq lay-idx old-idx)
    $ c6 q3 y  U- \+ {
  9945.     (done_dialog 0)! ?0 T! z; z( [# w6 O0 u6 o2 d
  9946.   )
    ; H5 j8 m$ i. q' S, {! r7 V
  9947.   ;;1 x) u7 O  M) c! V% `, Q
  9948.   ;; Checks validity of thickness from edit box.' M  y2 A$ C9 Z7 Y
  9949.   (defun getthickness (value)7 h! b4 ~1 u( Y$ K9 G) X5 p2 z- X
  9950.     (setq ethickness (verify_d "eb_thickness" value ethickness))+ C8 [/ i( j& V5 y/ B
  9951.   )
    9 Y0 w6 _6 U8 V6 n! y, B! c" s% \. K
  9952.   ;;- B. z) c' a* `' ?6 V- c
  9953.   ;; Copy of (getthickness) for ltscale.  If more, make this function9 V$ K; w( u4 ^' t7 _
  9954.   ;; generic.
    5 A$ }  F+ b" M: \
  9955.   (defun getltscale (value)
    & u& \& ?3 X! P3 F: |- F9 v0 l
  9956.     (setq eltscale (verify_d "eb_ltscale" value eltscale))* j: g+ b* X4 P8 i1 B4 U
  9957.   )
    1 h% r" X  b/ ^3 q  Z
  9958.   ;;& F3 V; f; J8 d) B
  9959.   ;; This function makes a list called laynmlst which consists of all the layer
    5 I+ h$ ?/ l' Y3 a9 A5 \+ t0 N
  9960.   ;; names in the drawing.  It also creates a list called longlist which
    6 c& c3 c) e. e2 C! H( e- P
  9961.   ;; consists of strings which contain the layer name, color, linetype, etc.! F- @. K  q! |
  9962.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the" b; U9 j" `% k- p0 T* c* k
  9963.   ;; same.
    ( I3 q' K/ z# o  s( W! S6 I/ D* J
  9964.   ;;: [& L* `& B# D
  9965.   (defun make_lay_lists (/ layname sortlist name templist layer_number)
    ; |: V. i7 ~& b  {: l
  9966.     (setq sortlist nil)6 }4 H# M5 Q/ z. H
  9967.     (setq templist (tblnext "LAYER" T))7 x- U" Y5 U6 q( f$ Z/ I* Q, w
  9968.     (setq layer_number 1)
    7 F  Z) T" F5 |
  9969.     (while templist
    " n4 M! n4 I' U$ W, l4 }# T3 G
  9970.       ;; No xref dependent layers, please.9 S  X% b* K5 A3 o: q# [
  9971.           (if (/= (logand 16 (cdr (assoc 70 templist))) 16)
    - {* l8 }) t8 v( f7 z+ t
  9972.             (progn2 e! L$ x2 u( q+ B5 E
  9973.               (setq name (cdr (assoc 2 templist)))3 X, W/ d1 @5 t5 R3 _, \; {1 u' i5 L
  9974.           (setq sortlist (cons name sortlist))9 `* C: P- F2 `7 d
  9975.         )( o, L1 R$ [9 A3 I" K4 |
  9976.           ), {. J, F) ~# u( k$ Z0 u) x
  9977.           ; Get the next layer.5 [0 j/ C1 D* w$ P4 l/ X3 q/ H! l- L/ c
  9978.       (setq templist (tblnext "LAYER"))2 J$ u: C  u/ q& ]
  9979.       ;; Not dead message...
    0 T- [# \' l  y- X( Y" J; `( K
  9980.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))
      O" K8 m: F" x* S
  9981.         (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    3 j% v7 N/ ~' M
  9982.       )
    ' {, {3 ~7 a8 I% }
  9983.       (setq layer_number (1+ layer_number))
    : o* z( b% m3 z* y4 ?! W
  9984.     )5 R# j$ t1 n9 }8 h0 b
  9985.     (set_tile "error" ""), M1 O' J7 A) X1 A3 B1 a& K) y
  9986.     (if (>= (getvar "maxsort") (length sortlist))
    ) s5 i4 W( P& h6 c0 |) w
  9987.       (progn; `/ T! I9 J9 R, h; @! }/ u
  9988.         (if (> layer_number 50)
    ( I+ N8 t) F: p( I0 C) k3 L* |) S
  9989.           (set_tile "error" "Sorting...")
    + y- M4 O3 l6 X8 q9 C
  9990.         )
    3 d3 V  ?% i% N+ {/ c% h
  9991.         (setq sortlist (acad_strlsort sortlist))
    & |3 O  T) J  {. z9 z
  9992.       )4 o( M' Z- K8 W8 J8 L7 L) j) _! n
  9993.       (setq sortlist (reverse sortlist))' x7 l' u" s3 r, `0 R
  9994.     )' L/ i% ?4 v" P5 v  [
  9995.     (set_tile "error" "")
    - x5 v; Z1 e* @+ @9 m6 B8 U
  9996.     (setq laynmlst sortlist); F8 M, I" d& I, g- c, v
  9997.   )
    8 H' X- t$ P) w
  9998.   ;;4 C2 \4 ~+ R6 `. F  K% k( _
  9999.   ;; This function makes 2 list - ltnmlst & mdashlist.0 F* t( [. O$ j. z+ e# E
  10000.   ;; Ltnmlst is a list of linetype names read from the symbol table.  Mdashlist
    4 Y! I/ \# Q# O
  10001.   ;; is list consisting of lists which define the linetype pattern - numbers
    ( C+ z  o. |" g+ g, {4 g& ?& E
  10002.   ;; that indicate dots, dashes, and spaces taken from group code 49.  The list, d4 p7 O# h# S4 F' l" n( b$ S
  10003.   ;; corresponds to the order of names in ltnmlst.
      A9 x" n. y. [
  10004.   ;;/ b6 ]: S# f- m! J( _" a; v( ]$ q
  10005.   (defun make_lt_lists (/ ltlist ltname)5 |+ A, J( f8 F
  10006.     (setq mdashlist nil)
    7 L2 r/ w7 h# s% T+ B3 N5 @: `
  10007.         (setq sortlist nil)
    % A7 y9 D! Y5 C& }
  10008.         (setq ltype_number 1)
    , b! Z+ E" N2 E& o& P9 L4 Z
  10009.     (setq ltlist (tblnext "LTYPE" T))( ]# f8 p# V- W, k! m$ q
  10010.     ;;(setq ltname (cdr (assoc 2 ltlist)))
    , H8 S; `- ~) B5 @0 k; d
  10011.     ;;(setq ltnmlst (list ltname))
    3 w. G1 u; I& t+ h7 T' @1 L( W+ v
  10012.     (while ltlist% P7 d2 x% V3 g; o
  10013.           ;; No xref dependent linetypes, please.9 m/ M& @9 D9 ^- \$ S8 w9 k
  10014.           (if (/= (logand 16 (cdr (assoc 70 ltlist))) 16)4 O/ v  T4 u# ]; e
  10015.             (progn
    ! K: a/ {% U! k. j2 e
  10016.           (setq ltname (cdr (assoc 2 ltlist))). w+ B' I" I& E. c7 E  J
  10017.           (setq sortlist (cons ltname sortlist))
    ( y% _, y) C7 A; g- M. L  G
  10018.             )
    - _' [  @% L' Q; [  X
  10019.           )
    2 Z8 l$ m) x8 Z" b" S  f" r2 r6 N
  10020.           ;; Get the next linetype.# O( a, W8 R5 W( x* C! A0 U# V; k( y
  10021.           (setq ltlist (tblnext "LTYPE"))
    3 s) m* s. R( H
  10022. 4 k' s9 U/ Q- P3 A( w
  10023.           ;; Not dead message...0 L9 Q: o1 @' o
  10024.       (if (= (/ ltype_number 50.0) (fix (/ ltype_number 50.0)))
    ) S# U; u  ?4 U7 p
  10025.         (set_tile "error" (strcat "Collecting..." (itoa ltype_number)))
    * \& [' F: t. x# I
  10026.       )
    2 W; ]$ y' Y& {
  10027.       (setq ltype_number (1+ ltype_number))
    . p! q, V8 u: X& k# Z) P

  10028. . u( r6 J' n) ^3 q" F% {9 i
  10029.     ). u6 a( E/ m6 }. C
  10030. * ?% X) U. [9 B
  10031.         ;; Remove Collecting message.8 @" l. h9 }$ C
  10032.         (set_tile "error" "")5 v$ X: v: S% K- y6 ^" K$ Z7 @6 C

  10033. ) P4 o( j- A- S% E2 `  h  i
  10034.     ;; Sort based on maxsort.
    / `, A8 E; J  }' H1 I
  10035.         (if (>= (getvar "maxsort") (length sortlist))# L. X3 }0 B7 C  o! F" K, D
  10036.       (progn* N: v1 j5 l( o  p6 Q/ H4 N* \
  10037.         (if (> ltype_number 50)% ^7 n* L5 S0 Y# J
  10038.           (set_tile "error" "Sorting...")
    4 {" F: B7 w; H  F
  10039.         )2 E6 t5 w( |7 r7 F! e! _( M
  10040.         (setq sortlist (acad_strlsort sortlist))' r. o. g/ `! j8 X8 S# P
  10041.       )
    - q$ s; N! m& w% q5 f, C) H
  10042.       (setq sortlist (reverse sortlist))
    ' P) ~+ R6 ]2 {+ q, n
  10043.     )
    & O$ r! C- [9 X( t7 @6 o
  10044.     (set_tile "error" "")) _1 Y% S6 `! q$ L; ^- e
  10045.     (setq ltnmlst sortlist)+ E5 b% ]6 z* r& \7 q1 T

  10046. - C8 U. G5 |: e! a7 T
  10047.     (foreach ltname ltnmlst$ X. z+ i( g7 i0 }4 e. y) m( g
  10048.       (setq ltlist (tblsearch "LTYPE" ltname))
    0 k- s( `/ v2 l
  10049.       (if (= ltname "CONTINUOUS")
    " V* i2 h- m5 s0 ^! A' o  q, R% j
  10050.         (setq mdashlist (append mdashlist (list "CONT"))); u6 k4 F3 h9 o9 U6 M4 W/ d. j
  10051.         (setq mdashlist
    " ^5 T7 h8 q4 [; o
  10052.             (append mdashlist (list (add_mdash ltlist)))" t  r9 z# A5 k: l5 S  P/ t
  10053.         )& y; Y3 R, R- X, C# v
  10054.       )1 q) ?# I6 P4 |$ s  }1 M4 }9 v
  10055.     )
    5 S; h# I. N: M) l" \+ w% P# q
  10056.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    # R; S- W0 k  e$ @' n9 I, X
  10057.     (setq mdashlist  (cons nil mdashlist))1 E. k( C4 B! y* H: X
  10058.     (setq ltnmlst (cons "BYLAYER" ltnmlst)), d9 r6 K/ S7 {( k* z. g! s# \
  10059.     (setq mdashlist  (cons nil mdashlist))/ Q1 F! X. H% R# {$ a
  10060.   )
    / E/ b. j/ e& _
  10061.   ;;5 ]. E' `+ ]! w6 A* l
  10062.   ;; Get all the group code 49 values for a linetype and put them in a list
    2 B2 a7 M  \8 N5 S- v2 p# B
  10063.   ;; (pen-up, pen-down info).
    ( x: Z/ m; L. ?6 T
  10064.   ;;# w! f' x0 l7 ?' k
  10065.   (defun add_mdash (ltlist1 / dashlist assoclist dashsize)
    5 Q& M3 y0 I6 t: ]. g2 _& b- r1 K
  10066.     (setq dashlist nil): S' v4 z% `% M3 ]
  10067.     (while (setq assoclist (car ltlist1))" H( {( U+ R) G- R  _3 P* a
  10068.       (if (= (car assoclist) 49)' a' d/ d* ?/ x# J/ g
  10069.         (progn- h& y0 g) ~& z0 [0 E/ K
  10070.           (setq dashsize (cdr assoclist))0 r8 T) d2 A" F2 v
  10071.           (setq dashlist (cons dashsize dashlist))1 R! j( f; q: y" o
  10072.         )6 F+ E8 u7 I9 y+ S# \8 _
  10073.       )
    ' y! Y+ k6 g* ?3 ^
  10074.       (setq ltlist1 (cdr ltlist1))
    4 `, B. ]4 Q1 i( \  B) Q" a
  10075.     )
    8 [6 y9 i) Q; l' V
  10076.     (setq dashlist (reverse dashlist))5 D* U  c) T8 G' A$ K! D
  10077.   )
    $ H7 \- J- P/ H; _5 u" J7 E
  10078.   ;;8 y  d: n# h8 I- q3 a* b; f
  10079.   ;; Color a tile, draw linetype, and draw a border around it( r0 e3 t. E, |1 q
  10080.   ;;5 B9 F$ n) _+ }  v
  10081.   (defun col_tile (tile color patlist / x y)% q0 E9 k' D; h
  10082.     (setq x (dimx_tile tile))
    1 @: V5 x; y+ \  S3 {" v. n% |) i
  10083.     (setq y (dimy_tile tile))
    - Q6 B! w. {! z, _7 c$ u
  10084.     (start_image tile)7 h( X5 Z* x) L1 G3 e4 H
  10085.     (fill_image 0 0 x y color)
    8 ^# q  Q. t3 \
  10086.     (if (= color 7). j: t4 I% _/ Q& h* u
  10087.       (progn
    2 f, ~6 ^  o2 F" z) F  `% F7 G
  10088.         (if patlist (drawpattern x (/ y 2) patlist 0))+ {8 o# c$ h) j1 }! E
  10089.         (tile_rect 0 0 x y 0)
    3 p$ L8 P5 l5 D) t3 M
  10090.       )
    3 V9 m! H* S& V) T9 s
  10091.       (progn
    + N) m& Q) T# _9 p* m" [, `
  10092.         (if patlist (drawpattern x (/ y 2) patlist 7))
    ' _3 B& b1 R/ V# n8 A
  10093.         (tile_rect 0 0 x y 7); g5 o( Y9 O" S& ]4 o  {
  10094.       )6 u$ N3 _* {/ l$ r* D0 y; u0 d
  10095.     )
    : k# G5 `  ^6 h9 \$ p( X
  10096.     (end_image)2 _# Z6 o9 y$ B$ n" |
  10097.   )& E; Q4 S, v0 r7 O
  10098.   ;;/ D. O% k- O+ A0 C( R$ a9 g8 r7 \0 b
  10099.   ;; Draw a border around a tile
    & V7 H0 e( C* O* L" J
  10100.   ;;7 K$ `8 E) N& n3 I( L
  10101.   (defun tile_rect (x1 y1 x2 y2 color)
    8 S! l' y- X! j; _  j5 Z
  10102.     (setq x2 (- x2 1))
    + X, Q. z+ b+ g: f/ Z
  10103.     (setq y2 (- y2 1))
      v& a! b2 w" w7 K
  10104.     (vector_image x1 y1 x2 y1 color). U4 ], ?! w, f3 [
  10105.     (vector_image x2 y1 x2 y2 color)
    4 s) P9 q( h  e( z
  10106.     (vector_image x2 y2 x1 y2 color)
    & V+ X5 Q& G& o5 I
  10107.     (vector_image x1 y2 x1 y1 color)
    7 w% {4 e6 ]+ X
  10108.   )5 {; g0 J. Q9 w+ _8 F
  10109.   ;;
    4 r' g8 L( p9 V" h" l! ^
  10110.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image
    7 Y# r8 A1 d: ^, O& V0 Q
  10111.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a' Q! E. s0 r9 I, Q4 ?% p- e; G& v+ ~
  10112.   ;; list of numbers that define the linetype, and color is the color of the- D1 a5 n; `$ I0 E9 c& N' S
  10113.   ;; tile.
    2 f1 A0 s, X& h, `) o
  10114.   ;;
    5 O1 e9 Y  p; F/ m5 `  ?
  10115.   (defun drawpattern (boxlength y2 pattern color / x1 x2% r# k/ g7 H9 m' U. M. z: x+ }' i
  10116.                       patlist dash); k) D# R# m& A
  10117.     (setq x1 0 x2 0)6 D' n/ f7 a! v( `6 H: h( ?
  10118.     (setq patlist pattern)
    + P) H! Z  F, l2 B/ M
  10119.     (setq fx 30)3 i8 A0 D; ?0 r' J7 t) u* t3 w
  10120.     (if (= patlist "CONT")
    0 M- o  Y% M% y1 X& d7 ~' |
  10121.       (progn (setq dash boxlength)
    / j% ]' K& p# L# E
  10122.         (vi)
    ) [8 s+ c2 p2 R1 i
  10123.         (setq x1 boxlength)
    - L: Y5 K: t3 s4 C4 o( ~' U7 s
  10124.       )
    # o+ Q1 v+ @; J# R* E& c
  10125.       (foreach dash patlist
    % {! c" F3 T& s/ z  k
  10126.         (if (> (abs dash) 2.5)# z6 P' Z4 h: M: i$ J* v
  10127.           (setq fx 2)
    : L7 E/ [3 G# L
  10128.         )
    ; S% ^) _8 W- u8 O9 F5 j" b. z
  10129.       )
    9 K1 I% z' h+ N0 L" |7 u: b7 e
  10130.     )8 z4 d/ k& ^! D: p& Z1 H
  10131.     (while (< x1 boxlength)
    2 G. x' `$ Q4 y- v
  10132.       (if (setq dash (car patlist))
    3 y1 \. j- U  J$ J, {# J1 r
  10133.         (progn9 P" S* _% d, [+ w: `
  10134.           (setq dash (fix (* fx dash)))
    * x  W! w) F- w9 T1 b1 m6 G1 H% j1 j: }" x
  10135.           (cond
    . j9 e9 V- ^! K  c$ P6 H6 q
  10136.             ((= dash 0) (setq dash 1) (vi))
    # @* P5 w; t* r0 A1 q* E
  10137.             ((> dash 0) (vi)): [& k2 r0 ~: y
  10138.             (T; N5 i( s# u6 y! O; l. y
  10139.               (if (< (abs dash) 2)# I9 z- O) g2 U% B( H
  10140.                (setq dash 2)6 n$ \( f% g) c, t
  10141.               )
    - \1 H+ S4 T* M  B% H; @
  10142.               (setq x2 (+ x2 (abs dash)))
    $ \* h7 J# [( l
  10143.             )+ f, Y2 c) `" a" }4 R2 k- E: _
  10144.           )# r5 X% j1 A% @5 W. I& i
  10145.           (setq patlist (cdr patlist))6 Y, U3 f( F- j
  10146.           (setq x1 x2)3 R& I/ s" f/ ^( d3 d0 N2 g; U8 ?8 F
  10147.         )
    ( r  Z% M6 M, `0 y
  10148.         (setq patlist pattern)
    # @( r: R/ P( f1 t& r
  10149.       )
    - }7 |" V9 O$ U1 R* l
  10150.     )0 C! U" N8 L" V7 y. f& `. e
  10151.   )4 V9 ^: ]$ I, i7 j0 M, S3 s
  10152.   ;;3 {( x4 h0 }& J  b0 D2 N
  10153.   ;; Determain state of xclip
    ' E( C2 s7 h( l' r5 I* |
  10154.   ;; Returns the group 71 value of the spacial filter dictionary.5 Z! c3 [8 I8 Q1 f! t6 t2 K' D+ a
  10155.   ;; If the entity doesn't have a spacial filter dictionary, this
    , k4 w! w6 Z5 }6 L/ `
  10156.   ;; returns 0. If it does it will return 0 or 1 depending on the
    . P3 A" @) l& \# q& U0 {+ s
  10157.   ;; current setting of the state of the clipping visibility.
    4 c0 M# t& z0 g+ f2 X6 z
  10158.   ;;
    # s$ T% g0 C( }6 r' B3 U7 Q) G5 ^
  10159.   (defun xclipon(elist)0 {% D) r. Y1 ^4 D0 z/ `
  10160.     (setq hasclip T)
    * H- w- k  R* i7 _# O2 c6 w  X
  10161.     (if (/= (assoc 360 elist) nil)  _) x' o; q6 Q8 y# e+ [. ~8 H
  10162.       (progn
    4 p- T. v. z$ W7 J) R
  10163.         (setq tmp (entget(cdr(assoc 360 elist))))
    ; g; c- q% x& y' a6 E" v7 @: W9 Y) t$ r
  10164.         (if (/= nil (assoc 360 tmp))* J3 }8 e$ K; O5 i) R- [
  10165.           (progn! o4 w- u) \  ]3 u! p) z8 i
  10166.             (setq tmp (entget(cdr(assoc 360 tmp))))
      ]' Y3 _6 o0 \. G0 B4 ?
  10167.             (if (/= nil (assoc 360 tmp))6 G, j, K8 c* ?9 J+ T- V( Z
  10168.               (progn$ C9 x6 M4 J# \7 x0 T7 Y: g1 [5 ^7 Q$ Y
  10169.                 (setq tmp (entget(cdr(assoc 360 tmp))))
    * j% _! l5 a. T3 n$ I0 P9 T' o
  10170.                 (if (/= nil (assoc 71 tmp))
    * c7 N! q: g; F) S: f* X6 u
  10171.                   (cdr(assoc 71 tmp))* P$ Q' P6 Q# ?6 r: a; a
  10172.                                   (progn
      x6 p" i1 t- u6 I9 B4 [* b/ Y
  10173.                                         (setq hasclip nil)
    ) w- Z+ Y$ K# o. ]  K: g0 n3 J
  10174.                                         (eval 0)
    % b; Z- \" b# m
  10175.                                   )
    5 s5 D9 y3 }6 }. _
  10176.                 )- t" W$ Q2 c0 Y5 U; D
  10177.               )1 d2 j! M3 e9 f" t% h$ P
  10178.                           (progn
    ! L) a: \- b* k) A8 A
  10179.                                 (setq hasclip nil)
    8 c6 q% {' ~6 f7 N$ n6 x
  10180.                                 (eval 0)
    : {% [0 h7 d$ g1 z& O3 z
  10181.                           ), Q" T  z6 [. b3 ^( {6 F& k
  10182.             )
    9 g7 p! x5 b; p* _# ~" y% c) O
  10183.           )/ {7 O( y2 q3 f* V2 y
  10184.                   (progn 3 j* G! t' u5 o0 h
  10185.                         (setq hasclip nil)
    ; e6 C) Q4 d& a( P
  10186.                         (eval 0)
    2 l" u: h  ?- B- w$ B4 z$ j! q
  10187.                   )/ m. N" V* D8 d, W5 P( j/ W0 v
  10188.         )
    9 I' W- [% g- c, ~
  10189.       )$ t  a" A, I7 P2 o# Q  g
  10190.           (progn
    2 t+ E6 w8 m' L5 g
  10191.                 (setq hasclip nil)8 ^. I8 e+ k( S: ^# I4 X% r: ^
  10192.                 (eval 0). ?% G* w" \. q( J" d9 a8 N5 S
  10193.           )
    * g3 Y; i% t( `* V7 l$ c
  10194.     )( |  F8 q) c- ?1 ~2 V; I, D& i! {9 U
  10195.   )# }! w& K# a3 m! e
  10196.   ;;
    : }! ~. L- h4 j9 F1 g) T
  10197.   ;; Draw a dash or dot in image tile( w: j0 V( `' o" z. |
  10198.   ;;, j9 c; z# p5 Z- F! f: f1 m9 A
  10199.   (defun vi ()
    6 M; n8 C- e5 L
  10200.     (setq x2 (+ x2 dash))" Q: y4 h2 b7 i1 h- I1 e8 ]7 e1 \7 B
  10201.     (vector_image x1 y2 x2 y2 color)! h$ t  I3 r+ G
  10202.   )
    1 N4 w) M$ c7 Z6 N7 p
  10203.   ;;
    - k1 |3 Z' H# U% Q& u  j+ l7 u* ^
  10204.   ;; If an item is a member of the list, then return its index number, else
    ( q: A- r! t8 t; f( }4 ?: I2 G! _& l, [
  10205.   ;; return nil.
    8 M: R, E! d; X# t* V
  10206.   ;;8 y; Q, v$ R0 x" n: _. o1 [' U
  10207.   (defun getindex (item itemlist / m n)
    : s3 b/ A6 `5 c! H  }% q" u
  10208.     (setq n (length itemlist))' a: ?, A% ?. b
  10209.     (if (> (setq m (length (member item itemlist))) 0)
    ( D6 W) v. c& W. {" }
  10210.       (- n m)
    - K9 ^  l9 Y# `- z/ s
  10211.       nil" J2 E; v( Q5 ^! i$ s% i. P
  10212.     )
    * z4 K8 M4 W3 i: O: e% g% h$ F
  10213.   )
    , @/ |! Q9 i# y5 o0 F
  10214.   ;;- R3 f+ N' m0 v) I- Z: m2 z& A5 W" F# f
  10215.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    ; ?2 o& U% Q# @7 |
  10216.   ;; ltype of the layer so it can be displayed  beside the linetype button.
    / k( _2 {* Z# }& o
  10217.   ;;
    * z8 Z1 }, L  ^. x+ q$ g
  10218.   (defun bylayer_lt (/ layname layinfo ltype)
    2 y; `3 }% G0 O# R; P( B4 S4 {$ [
  10219.     (if lay-idx/ a& @. n' M' B. Q6 M: `
  10220.       (progn4 _, b9 R+ Q( r8 _
  10221.         (setq layname (nth lay-idx laynmlst))
    1 x, W9 D7 C/ O" v4 n
  10222.         (setq layinfo (tblsearch "layer" layname))- e+ X6 i1 K7 r/ E+ I
  10223.         (setq ltype (cdr (assoc 6 layinfo)))' r  J8 r8 y+ l8 M
  10224.         "BYLAYER", I- I/ ~' k# n1 m8 _; f
  10225.       )
    . X5 ]2 j8 h% Y
  10226.       "BYLAYER"/ b0 R: l& [. r2 l1 ~
  10227.     ); A$ h  t) v& d! \( x+ M& e
  10228.   )3 O0 C: g% h2 D8 c: J+ i) n6 H
  10229.   ;;
    ( z/ {; |, K1 M) Q
  10230.   ;; This function is called if the color is set "BYLAYER".  It finds the color0 C6 j) E% `- G1 F) U8 J+ W! [. @
  10231.   ;; of the layer so it can be displayed beside the color button." ]: n* r. H" Z
  10232.   ;;
    ) S8 \/ l9 J, N: I
  10233.   (defun bylayer_col (/ layname layinfo color)* t; Y$ _3 @+ X/ }. `; m% E
  10234.     (setq layinfo (tblsearch "layer" elayer)): w" w/ M2 C- V/ q
  10235.     (setq color (abs (cdr (assoc 62 layinfo))))+ q) _5 w* l% |" d2 T
  10236.   )1 z" l- y% a9 e3 C. B* B) h
  10237.   ;;6 i5 ]0 ?9 h2 S! m/ u4 b
  10238.   ;; Used to set the color name in layer subdialogue.* G4 `* n% U" ?3 O& F2 b- b
  10239.   ;;, H2 ~' N( Q5 F' g, M
  10240.   (defun colorname (colnum / cn)4 W6 Z( }7 x) ?& Y* f' P% h+ i
  10241.     (setq cn (abs colnum))
    0 D8 Z( E( |# I0 C: J1 E# x
  10242.     (cond ((= cn 1) "red")$ ^5 ]$ z( U! ?1 p. e, I6 U
  10243.           ((= cn 2) "yellow")
    4 _; b0 ?5 d. _
  10244.           ((= cn 3) "green")
    ; [/ s. c& v( T' T2 u3 Y4 F6 _
  10245.           ((= cn 4) "cyan")
    , c+ r# Y. p+ [
  10246.           ((= cn 5) "blue")$ J. c# x# A6 L
  10247.           ((= cn 6) "magenta")
    3 M, j2 l- s: x/ v- P/ k) m  I
  10248.           ((= cn 7) "white")7 h- k9 r% y7 O' K) t  q  z
  10249.           (T (itoa cn))! |3 m/ M5 \& E: w/ E, I
  10250.     )
    5 O$ ?6 M9 S4 D! |5 P
  10251.   )
    - J* s, W! J& I& y; e
  10252.   ;;* y  B+ P& H( D! P: a4 v
  10253.   ;; If their is no error message, then close the dialogue.+ l2 D8 O5 F$ M! T2 g) }0 A
  10254.   ;;$ h; P( O" g& [, C! X; A& l4 t; N& R
  10255.   (defun dismiss_dialog (action)
    , c% |  J5 A9 Q5 \0 t8 z
  10256.     (if (= action 0)! i+ H0 r: k* d* a0 G
  10257.       (done_dialog 0)" t) K5 j1 D( Q( U* K/ \
  10258.       (if (= (get_tile "error") "")
    ! s2 o" u( ?5 r' i. a3 r# v
  10259.         (done_dialog action)
    $ F! u+ j# s1 }- B# [' D) ]
  10260.       )6 V6 @5 P2 K3 G3 z2 I, J, u; v
  10261.     )
    ; t  |1 K  H) f4 z7 m
  10262.   )
    3 b# G. U& F: O* ?5 {: c8 Z
  10263. / k) i% c: Y. U$ D3 w6 E4 K
  10264.   (defun test_ok ()+ P2 r1 f' |9 \' D+ }7 p: Y) r
  10265.     (if (= (get_tile "error") "")5 U9 X! |) |; e$ ?/ g
  10266.       (done_dialog 1)" E" y5 R: D, j- w8 G
  10267.     )' P9 I  ~  _* U: m' X& p
  10268.   )
    7 x4 L- t& k9 v; \  A+ b

  10269. 2 S: \! N+ }- L' _' ~. o
  10270.   (defun cancel ()3 j/ l; z1 M7 Z$ a
  10271.     (done_dialog 0)  ?9 G9 O5 ?. ?/ v
  10272.   )1 M1 O, G& T4 r$ S8 L7 d1 m  Y

  10273. , \+ I$ a) n" o3 R
  10274. ;;; =======================================================================/ z% F" I/ m9 y7 q/ @# x! d& ?3 S
  10275. ;;; SETUP layer and linetype lists for application, and initialize all6 d" U( J: r8 _3 T$ ~
  10276. ;;; program variables.9 b$ T2 v: J- @0 Y) p2 r2 M! A

  10277. 5 A' a6 G& }/ S) c/ ~* ]1 ]' `8 b7 q8 m
  10278.   (setq elist       (entget ename), u6 c- \' w8 D; G, v" ]2 T
  10279.         old-elist   elist
    . x# y+ I; O; |' k3 ~
  10280.         modlist     elist
    ' \8 f* ]" |4 q1 Q, b" X; r3 B) z7 ^
  10281.         etype       (strcase (cdr (assoc 0 elist)))3 j0 \9 a  q8 I$ r
  10282.         ecolor      (cdr (assoc 62 elist))
    & `* h* [* J) D7 q* F4 [- p
  10283.         elayer      (cdr (assoc 8 elist))$ ?1 }3 {% K4 M3 \
  10284.         eltscale    (cdr (assoc 48 elist)): Z1 g& B0 p/ Y
  10285.         ethickness  (cdr (assoc 39 elist))
    7 |& i' m9 B( Y" b3 R' V( g/ y
  10286.         eltype      (cdr (assoc 6 elist)), L, D" Q4 J/ d( ~3 D
  10287.   )8 t4 ?2 F# m# a
  10288.   (if (= (assoc 210 elist) nil). V& E2 m  m& I5 j2 l8 q1 d, x
  10289.     (setq extru (list 0.0 0.0 1.0))
    , k6 z$ `9 s/ O+ W, L
  10290.     (setq extru (cdr (assoc 210 elist)))+ x+ F7 Z3 }; F% E% B
  10291.   )' R+ \8 ?0 Z/ A. W% X5 \) j" V
  10292. 6 e2 D: D& U# S
  10293.   (if (not ecolor) (setq ecolor 256))
    * T# E! V- C. m9 F7 J5 W( g% o; q
  10294.   (if (not eltype) (setq eltype "BYLAYER")); c5 ]: j! K9 [4 t- c6 I# a5 t
  10295.   (if (not ethickness) (setq ethickness 0))- p) s, n1 u' ~; K
  10296.   (if (not eltscale) (setq eltscale 1))+ ?; a1 J% ?  n! B$ T
  10297. ) ; end ddmodify_init4 [. i( z+ e5 q
  10298.   i" {3 p* F, N) k! k
  10299. ;;; --------------------------------------------------------------------------( S: q7 s6 F, I' L7 ?4 ^' \
  10300. ;;; Function: DDMODIFY_SELECT  c0 ~  @+ H# A* d( C) R% \
  10301. ;;;2 A5 V4 P' H8 P% R; x* f
  10302. ;;; Object aquisition function.2 g3 ]( e- E. J9 I
  10303. ;;;
    " K: r# F8 t7 x$ R* q4 A
  10304. ;;; (ddmodify_select)
    7 _3 Y" M" Y9 w+ Q! p9 t6 K
  10305. ;;;
    6 O3 z% ?4 f2 I
  10306. ;;; Obtains object to be modified, in one of three ways:
    ; w3 t; \7 O$ O% L
  10307. ;;;
    5 _, j) U! ?% ]4 q5 r& i
  10308. ;;;   1 - Autoselected.
    / u, B, D! d9 U0 t* I* ^; @6 T
  10309. ;;;   2 - Prompted for.
    . I8 B! b) Q$ |1 V) B: U
  10310. ;;;   3 - Passed as an argument in a call to (ddmodify <ename> )
    & x& w, b3 f- ~, [$ L7 E
  10311. ;;;0 f* L6 C( X, z+ O  ^
  10312. ;;; The (ddmodify_select) function also sets the value of the
    5 n$ U( ?# i- A. j4 F  j
  10313. ;;; global symbol AI_SELTYPE to one of the above three values to5 O1 S" k& s4 r6 f( S
  10314. ;;; indicate the method thru which the object was aquired.# P/ J6 `& a" p6 @3 i/ J& T  A
  10315. ;;;7 R. S- L1 s9 ~- M" a
  10316. ;;; This value can be useful to applications that want to RESTORE
    ; c! F/ @7 _" `! [# X
  10317. ;;; an object that was autoselected to its previous selected state1 G. ?- Y. W! m2 {0 y( h, x. n: Q
  10318. ;;; when they terminate, although there doesn't appear to be any0 ^/ T: G, ]5 N4 J1 B: p
  10319. ;;; way to do this right now.
    ! G; [' Q" i1 A. i

  10320. : l  B0 e) w2 C9 v6 j
  10321. (defun ddmodify_select ()
    ) x3 X; D8 j: ]( g7 O
  10322.    (cond% n# X5 a' T2 G! L# P  ~- H
  10323.       (  ename                             ; (ddmodify) was called) D0 E6 y* H1 s0 {0 Q) j$ i6 L, N" U
  10324.          (cond                             ; with an <ename> argument
    7 {3 t5 G1 I' P$ e% c; N; k
  10325.             (  (entget ename)              ;   If object is non-deleted
    2 ~. d8 U" K# T. ~
  10326.                (setq ai_seltype 3)         ;   then return its ename.' u4 A% \- d- d  [
  10327.                (ai_return ename))))3 I4 q" k! O: z, z1 H, X* M
  10328.   |) h6 Q% {/ ?2 P% [$ h" {
  10329.       ;; return auto-selected , see ai_utils.lsp
    * c' J' T& q$ \" e
  10330.       (  (ai_autossget1 "\nSelect one object to modify: "))
    $ P0 x: d9 ]* W2 b: b7 X) q
  10331. , g! k8 [' p, b( f0 \) g
  10332.       (t (princ "\nNothing selected.")
    . q8 p$ U# t- Q# J
  10333.          (ai_return nil))
    5 a% u. H* a5 ]2 Q3 g
  10334.    )' r- e2 A% ~+ a# ^- l4 A
  10335. )& j  @7 Z4 W9 c/ y% Q5 O

  10336. & b+ }  m: c( K: I- V" X
  10337. ;;; ============= Command line interface function =======================
    - ^2 A3 j. @/ t& }
  10338. ! a& B/ P, Y( @
  10339. (defun C:MMO ()  r7 n0 J: s7 B) A8 x
  10340.    (ddmodify nil)
    / |6 n5 K' o- z. b8 `3 r! D- c
  10341.    (princ)' ^2 f; W$ |, e7 m- e6 R  s
  10342. )
    * T- D+ n" e8 \8 Q
  10343.   Q- i' f$ a( F. k
  10344. ;;; ================== (ddmodify) - Main program ========================
    ! c9 p9 a, H$ A1 d
  10345. ;;;
    ) T3 O' H8 K2 z2 b/ Y
  10346. ;;; (ddmodify <ename> )
    - C9 q8 U5 o# m6 x' h! |
  10347. ;;;
    / y9 C# n, V- N
  10348. ;;; Main program function, callable as a subroutine.
    1 L3 r9 T% c& e7 e) t8 n
  10349. ;;;
    ) d8 ^& ]- O1 d
  10350. ;;; <ename> = object name of the object to modify.
    7 x9 P3 M! g5 r  O) E
  10351. ;;;1 v9 ?3 ~3 Q3 m( s8 N/ e
  10352. ;;; If <ename> is nil, then user is prompted to select& K3 g1 A, G& w. S" A
  10353. ;;; the object interactively.
    ' o+ o/ e$ Q. O& ]4 t1 \3 ]8 P5 B: q
  10354. ;;;
    : x8 h. x: E1 b) v6 L* ~& B
  10355. ;;; Before (ddmodify) can be called as a subroutine, it must2 D% Y) i% A) ^% E# W
  10356. ;;; be loaded first.  It is up to the calling application to# b) A2 q. M0 u. K; g2 t
  10357. ;;; first determine this, and load it if necessary.
    + }8 z  h* r2 {8 l- a$ ?

  10358. 9 h  P0 M8 K! n! U0 F  B3 b

  10359. 8 x; k; v! o' A( e+ ^9 F
  10360. (defun ddmodify (ename /6 A: H4 x: J! p$ D! l& x& ?
  10361. 2ndpt              ell_calc_area            move_pt1               templist# Y  ]2 ^7 Z( _, a7 h+ M& K/ \
  10362. add_mdash          ell_tile                 n                      tempmod
    ' i- J8 l0 l7 E# `; J% ]  c
  10363. alipt              eltscale                 name                   tempst_ang
    3 G1 p. ]8 I  \0 v
  10364. ang                eltype                   newpoint               test_ok
    " n. K7 R6 `4 `. w  ]
  10365. arc_calc           emod                     next                   text  r5 c& K- u) S3 P
  10366. arclen             end_ang                  next_vertex            th-value
    8 i6 f0 r, d0 e% N1 d
  10367. assoclist          endpt                    obl                    tile
    : q& |0 J3 G) V9 {$ f
  10368. atprompt           errchk                   off                    tile_rect
    0 m+ U! h0 ~$ q' |7 x* S0 U
  10369. attag              ethickness               old_majrad             tilemode, N8 M6 ?' e7 z. `3 t9 C' g
  10370. attprompt          etype                    old-closed             totang
    # ?+ m8 a( b8 S+ R  m! R4 G( g
  10371. bit                extru                    old-closedm            tstyle
    + c; e7 f& n. ~
  10372. bit1               fchk                     old-closedn            u/ ^# m  c/ g4 k
  10373. bit-10             first-10-rec             old-elist              undo_init
    ' Z1 X" E) L$ R) F! R! v7 x
  10374. bit-11             first-10-time            olderr                 upsd/ v" x% S/ e2 r: t0 m2 H; s
  10375. bit2               first-11-rec             old-fit                v
    0 ]8 g4 J& c' c/ O% m: n7 w
  10376. bit3               first-11-time            old-idx                va8 H4 a) d. [1 Q0 K  H# L
  10377. bit4               fit                      oldlist                value
    ) y8 n  g( j- m* c
  10378. bit70              frozth                   old-spltype            ver_4
    . t- h$ M4 ~$ e
  10379. bit-70             f-vis                    old-u                  ver_ang18 z/ ?8 V4 h, H5 [0 Z" w! s: o
  10380. bit75              fx                       old-v                  ver_ang2
    4 c# M: [  F/ q4 Q0 [* t
  10381. bk-up              get_color                on                     ver_col
    7 v8 i- E& g6 Y5 j8 H
  10382. bkwd               getcolor                 onoff                  ver_colsp' r3 T4 j9 Q2 X
  10383. boxlength          getindex                 on-off                 ver_eangle
    " Y8 ]8 i, J4 N) l: {" p# w
  10384. bylayer_col        getlayer                 patlist                ver_hght
    & s0 C9 n! |7 w3 L& J7 X) `
  10385. bylayer_lt         getltype                 pattern                ver_majrad5 u* z0 B: Y) S' t
  10386. calc               getthickness             pltype                 ver_obl
    , W3 |6 x% x" N! t
  10387. cancel             globals                  polytype               ver_pt1
    : @* y2 m" S0 ?
  10388. cir_calc           ha                       pre                    ver_pt2; r  E6 t% m. F6 ?% K( N
  10389. closed             ha-prev                  proplist               ver_pt3; Y& ~7 ~+ i( @
  10390. closedm            help_entry               pt                     ver_pt4! B/ |/ W: N+ V9 @0 m
  10391. closedn            hght                     pt1                    ver_rad+ l9 E8 }' X" }( n+ [
  10392. cmd                icvp                     pt1_eq_pt2             ver_rot
    # n5 f! l* n4 |
  10393. cn                 image_add_vector         pt2                    ver_row
    + b$ U3 e& J) V7 p
  10394. cname              image_clean_variables    pt3                    ver_rowsp% {- N0 J3 G, Q1 `/ p- `
  10395. cntl-pt-indicator  image_cross_product      pt4                    ver_tag
    # G. y  Q! Y$ G9 h' g6 Q
  10396. code_71            image_disp_opt           ptype                  ver_u
    % S' Y( Q# u: c
  10397. col_tile           image_dot_product        radius                 ver_v! \( h4 U6 n8 S) o$ q6 n" l1 S/ l
  10398. col-idx            image_normalize_vector   rational_spl_flag      ver_wid
    % M3 a9 l& u* ]
  10399. colname            image_rotate_vector      reset                  ver_x1
    3 D5 \" a- ~6 W
  10400. colnmlst           image_scale              reset_flag             ver_x28 Q  b) B1 ~; Y* C+ ?/ G
  10401. colnolst           image_scale_vector       reset_lay              ver_x3$ G5 ]. R+ W9 e/ ^% F% f! \& I
  10402. colnum             image_update             reset_lt               ver_x4' M. w+ G* b& G5 l4 Z& Y0 d
  10403. color              index                    reset_uv               ver_xline_pt1
    & O' S& |1 H4 f; e. {+ @: h/ {# R
  10404. colorname          inv                      rot                    ver_xline_pt2& F- d* f' V; z( x. ]  _' R( R: r
  10405. colorno            item                     rows                   ver_xline_x1
    % z2 A9 |) {3 t, s3 p( \9 i
  10406. col-sp             item1                    row-sp                 ver_xline_x2
    + D) g( f  g4 ]) o
  10407. columns            item2                    rrat                   ver_xline_y1
    7 Q* C8 i+ u  p, o4 u0 W8 x
  10408. con                itemlist                 s                      ver_xline_y2* N/ f; N7 z  |7 n( P9 c& S
  10409. coord              jlist                    set_action_tiles       ver_xline_z10 j0 C3 I- w' E0 c# u
  10410. ctr                jlist_act                set_just_idx           ver_xline_z2
    - L1 t- n7 N* S0 X) g( e+ t
  10411. cur-10-rec         just-idx                 set_tile_bk-up         ver_xscl
    * Z2 j& P+ h* l9 S+ Z5 T% _
  10412. cur-11-rec         layedit_act              set_tile_cntl_pt       ver_y1
    / F0 \' ]$ z  k( D2 C  Z# i5 K
  10413. cvpname            lay-idx                  set_tile_data_pt       ver_y26 _! Y7 P* X8 l
  10414. dash               layinfo                  set_tile_dirv          ver_y3
    2 o, }1 L" M& v9 d5 N
  10415. dashdata           laylist                  set_tile_edges         ver_y4
    6 Y4 x2 [2 T  @
  10416. dashlist           laylist_act              set_tile_endang        ver_yscl
    8 |' P% _( a9 ]' S" c$ T
  10417. dashsize           layname                  set_tile_hght          ver_z1
    : V- `0 W  K& u% E% A% ~* e# F
  10418. data-pt-indicator  laynmlst                 set_tile_icvp          ver_z2" H& Y! K( j$ v
  10419. dcl_id             layvalue                 set_tile_just          ver_z3
    / g) |. ]6 D4 X+ I* }
  10420. dd3dface           line_calc                set_tile_obl           ver_zscl
    ) X1 q# {& U  i
  10421. dd3dsolid          linetype                 set_tile_prompt        verify_a
    6 w  [- \1 D. a
  10422. ddarc              list1                    set_tile_props         verify_d
    1 y' \/ V4 Q2 Q. _0 M& a, m: ?! d2 l
  10423. ddblock            longlist                 set_tile_pt1           verify_i
      b6 m5 p6 v' ^% L; u
  10424. ddbody             ltabstr                  set_tile_pt2           verify_xline9 k0 ]' M! @/ W& @& ^
  10425. ddcircle           ltedit_act               set_tile_pt3           vfy
    7 b. X: A9 p" u3 x
  10426. ddellipse          ltidx                    set_tile_pt4           vi
    # W5 g2 Z6 y& u1 x" J" C' r
  10427. ddgetprompt        lt-idx                   set_tile_rad           vlist: n6 T2 m* U6 {% h- ~* A" F! Q
  10428. ddgettext          ltlist                   set_tile_rc            vname0 |% h: m9 X# }! o
  10429. ddimage            ltlist_act               set_tile_rot           vpf2 q& f' |- t: `) c
  10430. ddimen             ltlist1                  set_tile_scale         vpid6 O" |' m- y$ C( I
  10431. ddleader           ltname                   set_tile_spline_props  vpldata  Z$ ?* F$ d  Z0 U% e$ g; W) R
  10432. ddline             ltnmlst                  set_tile_stang         vpn5 j. P$ }' F0 U+ |( U( m6 I
  10433. ddlist             ltvalue                  set_tile_style         vpt& I$ |9 V; y3 a) A3 U! Q1 }
  10434. ddmline            ltype                    set_tile_tag           which_tiles) W, k8 ~" N! G
  10435. ddmodify_err       m                        set_tile_text          wid
    8 X; Z4 T) M% w+ i! m. m
  10436. ddmtext            majrad                   set_tile_vpt           x
    6 {. i7 W0 Z$ P* X
  10437. ddpline            make_lay_lists           set_tile_wid           x1
    ! L+ O# C7 |; K& @
  10438. ddpoint            make_lt_lists            set_tile_xline_pt1     x2
    ' Y# Q, D9 M) _: M) ^1 B# _
  10439. ddray              mdashlist                set_tile_xline_pt2     x3, \- s( @+ c6 R  l' J3 k
  10440. ddregion           minrad                   setcolor               x4: z0 k% L# f4 y5 h& d1 ~' ^( @/ ]
  10441. ddshape            modify_3dface            shght                  xdlist
    " O# @# W9 h! M) R( y2 `+ [  y) v
  10442. ddsolid            modify_3dsolid           showpt                 xline_pt12 V: M6 \( C7 w& Z# c
  10443. ddspline           modify_arc               size                   xline_pt2" o2 G6 ~, R! O6 v
  10444. ddtext             modify_block             slist                  xline_x1
    - k2 a" z2 c6 O2 `4 W
  10445. ddvport            modify_body              sname                  xline_x2" E+ M# G& t9 v! S# t; u
  10446. ddxline            modify_circle            sortlist               xline_y14 f* Y# a( ~8 t1 c9 E2 t
  10447. denom              modify_ellipse           spltype                xline_y23 v$ F$ i; i7 h) f. q$ }
  10448. dialog-state       modify_image             ss                     xline_z1
    / R! N: G* X  H. k
  10449. dir_pt             modify_line              st_ang                 xline_z2' j( }$ @" {& y/ V/ ?
  10450. dir_ptx            modify_mline             stpt                   xscale
    3 V! X1 e5 A3 X9 r7 ]5 N
  10451. dir_pty            modify_mtext             style_act              xx) [' r- M% P4 |8 l2 Q3 Y3 v
  10452. dir_ptz            modify_point             style-idx              y
    9 U: U& R4 ]/ a6 ^( Q$ K
  10453. dismiss_dialog     modify_polyline          style-list             y11 v1 _& t3 X. G( d
  10454. drawpattern        modify_prop_geom         tagval                 y2* ~7 o' Q0 a* E# W' k7 o# P
  10455. echo               modify_properties        temp                   y3
    . \- A" W" j% ^
  10456. ecolor             modify_ray               temp_color             y4
    : `' ]% ], h/ E( p: T$ n
  10457. edge1              modify_region            temp_dir_x             yscale; Y$ _! Q: V% c1 k
  10458. edge2              modify_shape             temp_dir_y             yy
    * g. j6 P& n# C. K
  10459. edge3              modify_solid             temp_dir_z             z1  S* y0 T' f: `' E
  10460. edge4              modify_spline            temp_xline_pt1         z2, [! p& O: |9 d
  10461. edgetest           modify_text              temp_xline_x1          z3
    7 _+ m, v+ J; h) |: A. g0 B+ y
  10462. elayer             modify_vport             temp_xline_y1          z4+ W$ U3 P2 u  ~+ b! q6 [
  10463. elist              modify_xline             temp_xline_z1          zscale) [3 K: Q0 P" p0 k. [3 z; ~8 s
  10464. ell_calc           modlist                  tempend_eang           zz
    / l; U; ^. [/ U0 [
  10465. dir-idx            safe_ddedit              ver_MtextWidth         xcliponoff; p& p, E" j" l7 C  F7 I
  10466. MText_style
    0 @- Q; n# @$ V9 _. e) }
  10467.   )
      R9 q4 \. ]& x8 O5 A4 r0 s5 Q' u

  10468. ) x* E% r) q/ K0 L% z  x
  10469.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    $ t3 `) X: W9 G, G0 }" o
  10470.         old_error  *error*            ; save current error function# ?& I% q7 k" M: t+ Y
  10471.         *error* ai_error              ; new error function7 v4 X  Z) O- L
  10472.   )
    - R# r- R" I5 k* j  p' }
  10473. % K( u- q1 F& g" S; ]- I
  10474.   (setq old_pickstyle (getvar "PICKSTYLE"))          ; save old pickstyle
    4 h; C7 z+ ^9 E9 \- `3 _5 `7 P4 _
  10475.   (setq new_pickstyle (logand old_pickstyle (~ 1)))  ; turn off group selection8 W+ g5 p, [, I; e/ w- `
  10476.   (setvar "pickstyle" new_pickstyle)                 ; bit and set to new value
    5 n/ F; B: u! x! b

  10477. % \+ W1 N0 ?+ J' J4 z/ ^# j7 d
  10478.   (setvar "cmdecho" (cond (  (or (not *debug*) (zerop *debug*)) 0)9 {1 m" B* Z* {! O. q2 Z
  10479.                           (t 1)))4 Y. \9 q( z8 P/ I
  10480.   (cond) P. W7 G6 S% `: r" T
  10481.      (  (not (ai_notrans)))                      ; Not transparent?
      e7 g) [& a* m* Z! h! U6 U/ ^
  10482.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    % s5 z0 J0 K& r3 n
  10483.      (  (not (setq dcl_id (ai_dcl "ddmodify")))) ; is .DLG file loaded?
    9 L) B/ c7 v% S. C0 }& g& S
  10484.      (  (not (setq ename (ddmodify_select))))    ; object to modify?! R1 L6 Z. c3 J+ H  Z' ]* x9 u  i

  10485. * J: l/ Z1 l) h+ U- A+ ?! C
  10486.      (t (ai_undo_push)2 N) c, c8 f' e' O( N
  10487.         (ddmodify_init)                          ; everything okay, proceed.
    4 V  `# L0 K1 O% ~4 \$ Y
  10488.         (cond" Z  n$ H# s5 p! {! l* `
  10489.            ((= etype "LEADER")7 U+ U+ |5 P3 \5 |3 N& r; Q
  10490.              (setq help_entry  "modify_Leader_dialog")9 S3 M$ _7 T; N: s$ I
  10491.              (ddleader)% F! j$ ]" A  |5 C
  10492.            )
    # E+ H! p1 x6 o* c
  10493.            ((= etype "ARC")
    6 q1 c' I+ z, d4 j7 d! C7 [+ N
  10494.              (setq help_entry  "modify_Arc_dialog")
    3 I& p2 e7 w2 Y, X) y. a
  10495.              (ddarc)
    9 t6 a# @. m4 M* e$ K. {
  10496.            )
    8 k0 i2 V. V4 r3 f1 G0 U9 W
  10497.            ((= etype "ATTDEF")
    ( N( ?" y) H$ V$ Z% W: O
  10498.              (setq help_entry  "modify_Attribute_Definition_dialog"); v5 x* F# m; Z' W9 c
  10499.              (ddtext)! B' t. M4 i7 D
  10500.            )! W8 X1 r3 E# V) C' G; P% b
  10501.            ((= etype "CIRCLE")
    4 r) p" ?4 S4 P% R- R( [
  10502.              (setq help_entry  "modify_Circle_dialog")) y/ t% Y# Z' F$ l
  10503.              (ddcircle)) L2 K1 T3 P0 s$ N4 H$ \+ M# ~4 W
  10504.            )$ k0 x% s5 W' C; v/ R; i
  10505.            ((= etype "ELLIPSE")
    - m( `4 B* S- x( x4 J
  10506.              (setq help_entry  "modify_Ellipse_dialog")
    ( B: h4 ~2 Q+ E! ^- L1 m7 k* d6 `0 C: j
  10507.              (ddellipse)
    ' G2 X  w" w. r; y& T4 b
  10508.            )
    8 Y1 C9 r. K, i1 B2 z# }( ]
  10509.            ((= etype "3DSOLID")
    # Y. q; r7 @( [5 g. S1 y
  10510.              (setq help_entry  "modify_3d_Solid_dialog")
    1 x7 K6 Z8 O* f
  10511.              (dd3dsolid)
    0 t" ]8 E9 R: @! Y; h# Y+ G3 s8 W4 ^- x
  10512.            )- Q, W& W0 w+ ~: f1 X  }; [
  10513.            ((= etype "BODY")
    * j  J# m6 ]9 o- j! k, G/ X
  10514.              (setq help_entry  "modify_Body_dialog")% Y) y  y; \8 x/ @% w% Y, L
  10515.              (ddbody)* C( b9 h/ s7 \* W) R3 i) Y0 D
  10516.            )) p9 y% \6 s; }' T
  10517.            ((= etype "REGION")3 {8 c5 |7 f# [; \
  10518.              (setq help_entry  "modify_Region_dialog")) P( H+ E9 m# @7 g
  10519.              (ddregion): X* {  ]& X6 ]( Y, W) M
  10520.            ): B, H  P! G- T) ], ?* z8 d
  10521.            ((= etype "HATCH"), C/ v! _3 _/ H) M
  10522.              (setq help_entry  "modify_Hatch_dialog")
      S& Z. B$ I' _0 V8 n1 z2 G
  10523.              (ddnewhatch)* i2 a0 v  p5 L+ c' r
  10524.            )
    . O+ F- s6 R) y3 K: d
  10525.            ((= etype "SPLINE")
    $ J" j; s! E5 b1 j/ h1 b
  10526.              (setq help_entry  "modify_Spline_dialog")% N5 b( f3 K- n  G9 ~0 b
  10527.              (ddspline)' e7 D* E$ V% @, @) [& D; P" s
  10528.            )2 Q8 L) W, |1 @1 i& W
  10529.            ((= etype "INSERT")    ; see ddblock for help_entry6 Z- D6 V3 \) ^5 ^& ~
  10530.              (ddblock)
    6 g& l/ V$ E, x! l4 p8 D
  10531.            )
    7 q. a0 k) B/ `2 ]
  10532.            ((= etype "LINE")
    9 f3 ?& P( X5 n7 s8 t
  10533.              (setq help_entry  "modify_Line_dialog")
    # \& \( |$ t5 P
  10534.              (ddline)& b. p: g( j& X5 N* C% s0 [1 P
  10535.            )9 P7 }, v! Z4 H: a8 |2 ]# _
  10536.            ((= etype "MLINE")
    8 d/ l* D' t, j
  10537.              (setq help_entry  "modify_multiLine_dialog")
    : D/ F8 Q. P1 ]" K* t# _+ z0 f
  10538.              (ddmline)- s% s8 p2 X! G2 ]+ c7 |
  10539.            )
    - T- D% r( ^& d7 {8 D8 y; r; b
  10540.            ((= etype "RAY")
    $ r9 e+ y. c+ X
  10541.              (setq help_entry  "modify_Ray_dialog")) m3 d7 M5 `7 i9 O! I/ A
  10542.              (ddxline)
    . ]* C7 S9 H1 _. `/ k6 y
  10543.            )
    + _3 h3 p& I3 z9 @" x) n3 e
  10544.            ((= etype "XLINE")
    ) U5 j! o1 u& A& E! O
  10545.              (setq help_entry  "modify_Xline_dialog")5 g1 m6 K) G9 K) ]. }  q
  10546.              (ddxline)  v9 G; O0 C2 X8 S$ P$ ^7 b( R
  10547.            )
    & V6 z6 `' c  P0 V; ~
  10548.            ((= etype "POINT")! V3 d$ y* p" y! a
  10549.              (setq help_entry  "modify_Point_dialog")
    & }) H9 V3 J- Y
  10550.              (ddpoint)2 F* ?& y' L7 _$ z( P
  10551.            )
    . ?3 c8 X+ [9 p+ G
  10552.            ((or (= etype "POLYLINE") (= etype "LWPOLYLINE"))
    9 A# B: S7 w1 n* |$ {) ~& r$ W
  10553.              (setq help_entry  "modify_Polyline_dialog")
    3 s5 A9 W  Z  n  P: l
  10554.              ;; If a 2D pline, check to see if it is planar to the current
    ' e# T$ r  g8 j9 w
  10555.              ;; UCS, reject if not.   To see if the pline is parallel,
    ( L9 g; w, T$ M& S9 T
  10556.              ;; the 210 group (WCS) is added to the current UCS origin (WCS)
    3 M# p' j0 b/ _. h7 n
  10557.              ;; and then converted to the current UCS and checked to see if
    . r: {3 y4 J7 S6 c* {9 I2 C7 z
  10558.              ;; it is equal to (0,0,1).6 I) F/ `8 o, h. l. S

  10559. * J# S+ h+ K  \- n: k
  10560.              ;; Incase the 210 is default and not in the dxf list.  @/ I" D+ _" e9 l- @
  10561.              (if (= (assoc 210 (entget ename)) nil)& M( x, d) q" Q( Q& l' o, g( ]  n
  10562.                 (ddpline)( A- y3 M$ u& g) i. S
  10563.                 (progn" O0 ^0 |. y) N' I# H
  10564.                     (if (and (zerop (logand 120 (cdr (assoc 70 (entget ename)))))8 g5 |* k* a. s* O% K- t
  10565.                             (not (equal '(0.0 0.0 1.0)+ t' i0 N" W- g+ [) Z0 j2 V
  10566.                                    (trans (mapcar '+
    * I; Q6 a; l; A. n
  10567.                                              (cdr (assoc 210 (entget ename)))
    3 {: n* h& h7 q  b
  10568.                                              (trans '(0.0 0.0 0.0) 1 0)
    & Z7 m. g' @6 b+ X  O
  10569.                                           )
    : T4 U7 u" t. z5 Y$ Y
  10570.                                      0 1: D9 Z) t+ J. v' s$ @- o$ j
  10571.                                    )" _0 W4 W  T  j9 m9 {% V
  10572.                                    0.0000000001            ; fuzz1 ?& l) o, Z" k9 Y0 o4 K+ Y% Z% K
  10573.                                 ); [% }  s8 C9 ]# u' l) A7 ~
  10574.                             )8 L$ w3 k. f% c+ [; Q
  10575.                         )
    ; E" y' ?7 @# {' V
  10576.                     (princ "\nThe 2D Polyline is not parallel to the current UCS.")
    - w* n9 k  _# E1 I7 m5 V; D
  10577.                     (ddpline)
    2 [" o. |, y# L8 S# F5 |9 h
  10578.                     )
    5 X+ q; [% N3 h: d
  10579.                 )$ F% R/ K3 Y; e" I2 e  @; p
  10580.              )
    ) p% A5 t% v( d
  10581.            )2 z6 o7 l# F( k/ D3 \. T, b

  10582.   ^( r& m+ r9 l  E
  10583.            ((= etype "SHAPE"); ~- I" }3 g2 R9 d2 c! s; w
  10584.              (setq help_entry  "modify_Shape_dialog")0 [7 Q3 v/ t& @. k% _, `; Z
  10585.              (ddshape)
    ( \0 T2 o2 K1 R- L1 G  O
  10586.            )
    , A2 G  `7 L" B
  10587.            ((= etype "SOLID")  d6 x# I& Q( g2 L8 c
  10588.              (setq help_entry  "modify_Solid_dialog")
    # k2 P' |- ~! G
  10589.              (ddsolid)
    9 m  c; {  j$ @/ p
  10590.            )
    % |0 g5 R5 R- G- P$ y; E
  10591.            ((= etype "TEXT")
    - i: X3 D5 W6 J) _- {0 P
  10592.              (setq help_entry  "modify_Text_dialog")
    ' P* k/ ]- d) L
  10593.              (ddtext)# I3 J7 C$ }" p; s1 n( ?
  10594.            )6 z3 _. t$ _$ P5 e) c
  10595.            ((= etype "MTEXT")- w7 h6 w/ m# d" _+ J! _
  10596.              (setq help_entry  "modify_MText_dialog")
    / Q7 y" o+ {: M, `( Z
  10597.              (ddmtext), Y2 A* v8 o# a
  10598.            )6 P' }6 d+ ]2 G* o0 [4 `
  10599.            ((= etype "TRACE")
    4 M9 {/ ~, P4 a! m
  10600.              (setq help_entry  "modify_Trace_dialog")% H: }+ P. |3 U1 h+ w' P. g) s  i
  10601.              (ddsolid)
    ( O+ q( T* R3 `7 j
  10602.            )6 }/ h9 F1 ?% {, \
  10603.            ((= etype "VIEWPORT")
    2 }- F# I0 s9 X5 e) S* @
  10604.              (setq help_entry  "modify_Viewport_dialog"). d% [) w7 p1 n0 s" Q
  10605.              (ddvport)# H; C0 r+ z* }0 Q
  10606.            )
    3 H0 F& a% S5 P8 [
  10607.            ((= etype "IMAGE")% Q: ^7 f& R! O
  10608.              (setq help_entry  "modify_Image_dialog")& k* e* ~) `% U" ^1 s
  10609.              (ddimage)
    / @8 }3 Q4 r+ q/ }3 m7 U
  10610.            )0 H7 O/ d0 y; I
  10611.            ((= etype "3DFACE")
    + _8 U$ \" E1 O  z# U
  10612.              (setq help_entry  "modify_3D_Face_dialog")- H' V6 V/ m* R) G# a8 V
  10613.              (dd3dface): |, @% C$ Q* e: v8 N6 x
  10614.            )
    % E# q- v1 U4 u6 E
  10615.            ((= etype "DIMENSION")
    : p  ^, p# u  f9 J" P- h
  10616.              (setq help_entry  "modify_Dimension_dialog")  T( \  i* m- Y5 ]
  10617.              (ddimen)0 n9 \$ H8 d& b- B( g- S
  10618.            ); Y1 R/ X% H5 }' C. g" i; x5 {
  10619.            ((= etype "TOLERANCE")8 s1 G/ }6 P. D! f
  10620.              (setq help_entry  "modify_Tolerance_dialog")2 `! [1 ]/ J: O' E5 b
  10621.              (ddtolerance)
    ! q% P2 H0 A8 o5 {# s9 f# y
  10622.            )' W. H) w4 e! m; G0 {# H/ {
  10623. ;; Fall-through condition changed by MCAD for MDT 1.1 release.3 M* N( m# d8 T' x3 f$ ]
  10624. ;; This allows DDMODIFY to work on any custom object or any new object type
    3 C. {+ t8 U$ Y
  10625. ;; that isn't specifically handled above by calling the more generic DDCHPROP.* C0 h6 u8 h7 ^# t. P
  10626.            (t
    # M3 ?. o. g. U* v
  10627.              (if (and (not ddchprop) (not (load "ddchprop" nil)))
    9 l" g+ D6 A* j0 [
  10628.                 (princ (strcat "No dialog support for object type: " etype ".")))0 W8 a/ e- ^1 B3 Y& e! a6 b. u
  10629.              (progn
    ' u. V4 b: V2 _5 m9 x; c+ ^& q
  10630.                 (setq tempss (ssadd ename))
    % H7 a9 F1 A9 O
  10631.                 (ddchprop tempss)  i" Q% K0 U, i6 `6 l8 _
  10632.                 (setq tempss nil)
      F9 v" c8 Y6 w/ |1 T2 T+ T
  10633.              )
    - u) J' N& u6 R. V) o
  10634.            )
    4 m9 x) E  }( m! m8 M3 a
  10635.         ): q% R: B0 y9 \1 w4 b! J0 n. F
  10636. ;; Previous fall-through condition.7 ~! I+ {! f& x) T  w
  10637. ;;           (t (princ (strcat "No dialog support for object type: "
    7 ?7 r2 U. H6 S7 d
  10638. ;;                             etype "."( |7 g# \1 y4 m$ K- M2 u
  10639. ;;                     )
    6 x0 X" c/ x- z
  10640. ;;              )/ M: v3 U- r# {8 @
  10641. ;;           )
    5 U3 M* T8 D2 r/ x1 b
  10642. ;;        )+ C) g$ Y+ {" z4 [: L* i7 h
  10643.         (ai_undo_pop)
    * M$ l! B6 I1 \) n6 A. X! d
  10644.      )
    * I- u$ Q1 B) ~5 `2 T
  10645.   )8 Z' _3 v0 V1 K  r/ `4 T
  10646. 4 d4 D% a; |9 j
  10647.   (if (eq new_pickstyle (getvar "PICKSTYLE")) ; if user didn't change pickstyle
    ! B3 i7 b0 v. G3 W1 e  J1 {( O3 _
  10648.       (setvar "PICKSTYLE" old_pickstyle)      ; transparently then set it back
    " ~8 p$ y5 |* M, U) j
  10649.   )                                           ; to what we started with
    2 X4 w1 d% P. v- G/ c/ w, ]# w
  10650. 4 V8 H3 F+ O- Q6 g2 ?% S
  10651.   (setq *error* old_error)2 p) x" g+ P, y/ c' @: C; e
  10652.   (setvar "cmdecho" old_cmd)
    ' O- ^+ ~' X- t# L1 {, l2 j" i. h7 X
  10653.   (if (not reset_flag)            ; if object was modified, then
    5 L" b6 u1 H: j
  10654.       (ai_return ename)           ; return it's ename to caller7 A4 J! O3 C7 l9 s
  10655.   )
      y: h( C/ ~7 h* D1 h: I* S+ D! F
  10656. )
    ; V% R. o% ^( c) ]3 j) z
  10657. - p$ O% G- o0 s. ~+ H4 }
  10658. (defun checkForLockedLayer (ename)
    $ T7 @; n$ y# |! e
  10659.     (setq layername (cdr (assoc 8 (cdr (entget ename)))))
    ) }3 ?- z' y: A' ]0 I- ?6 u" ^$ ~$ T
  10660.     (setq layerflag (cdr (assoc 70 (tblsearch "LAYER" layername))))  A+ [- u. q% W
  10661.     (if (= layerflag 4)
    9 o# n% b9 j& x8 j, L: ]5 t/ t- j
  10662.         T
    4 y- z1 U% F' D4 b$ o4 M
  10663.         nil% O$ \2 t+ \2 Q' i/ v/ q
  10664.     )
    2 o/ }' g! k- O/ q2 x
  10665. )" e% k: b- N. p- F! V

  10666. $ O8 d* c7 E7 s4 K1 [' S
  10667. (princ "  DDMODIFY loaded.  ")
    # l* m0 a8 g5 H& X8 W9 A/ V
  10668. (princ)
      z& B5 S4 v/ Y* i
  10669. ;;;???;;;---------------------------------------------------------------------------------------
    - l3 s) A3 k0 E- z$ \+ N9 C
  10670. " H( V7 F# `; J9 L1 i  i1 T
  10671. ; Next available MSG number is    8
    . v8 `5 |, G$ [
  10672. ; MODULE_ID DDUCSP_LSP_6 g2 Q& c/ z2 i5 B
  10673. ;;;
      ?) Z: X' h& ^
  10674. ;;;    dducsp.lsp
    7 J! w4 p$ i2 r! C! V* I
  10675. ;;;! R, L$ Q, |4 `
  10676. ;;;    Copyright 1992, 1994, 1996 by Autodesk, Inc.
    % n# J0 ^- }9 [$ i" u3 }
  10677. ;;;: W& H; Z; u6 u& a: K/ o
  10678. ;;;    Permission to use, copy, modify, and distribute this software" T' K1 G. X% v4 H& |" [
  10679. ;;;    for any purpose and without fee is hereby granted, provided
    & ^0 ^  v/ Z+ u& c6 ^- e; r$ a
  10680. ;;;    that the above copyright notice appears in all copies and
    . Q8 H' F7 [) j8 o. x
  10681. ;;;    that both that copyright notice and the limited warranty and
    - u! c, I! c) P; q
  10682. ;;;    restricted rights notice below appear in all supporting& x! N6 `4 T8 [* E
  10683. ;;;    documentation.. e/ A2 }& @0 ?& r
  10684. ;;;
    % a4 f; c5 @/ l/ N- u0 r8 }- Y( G0 w* q0 L
  10685. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    ! d2 Q4 P+ ?" ]& v( Y% ?) c8 Z
  10686. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    0 F" i& R) v* d
  10687. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    3 e/ L3 T' q: y# l& M1 b0 s8 V
  10688. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE& e" ^% J+ B8 R
  10689. ;;;    UNINTERRUPTED OR ERROR FREE.0 Y( ~1 N3 o" e# t" j/ l
  10690. ;;;
    ; m% U: ?- v6 P+ @' H' @; i" Z
  10691. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    0 a3 D. T# {8 q
  10692. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer! t) G+ }9 O$ O  U, ^$ h" D9 y4 @
  10693. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) / U/ C" a+ ?1 [( K. R$ O  E
  10694. ;;;    (Rights in Technical Data and Computer Software), as applicable." w3 ^; S9 t$ \- X; V
  10695. ;;;
    7 A- q/ S* `  K9 _
  10696. ;;;.
    9 O" @4 d) N. b3 c7 K
  10697. ;;;   C:DDUCSP - User Coordinate System presets dialogue.. C! P" Q8 `4 [+ |& Y+ ~& L. I) ]
  10698. ;;;     ) {$ K% e4 a' e( ~# ~# R( ?! e
  10699. ;;;              Uses DDUCSP.DCL for the dialogue definition.  The
    ' M+ E! H  Q$ P2 G
  10700. ;;;              slide images are in ACAD.SLB.
    8 s( U) l( ~7 n1 V/ J' H
  10701. ;;;
    " R4 O6 N% b$ q) M
  10702. ;;; ===========================================================================
    2 W0 u( T1 `: y& Y+ Y, `
  10703. ;;; ===================== load-time error checking ============================
    9 L& N  u( q! j! t* p$ E4 N* }2 q
  10704. ;;;8 [# C5 ^7 m+ H; t; S
  10705. * _* x& `: E$ q" ~
  10706.   (defun ai_abort (app msg)
    2 x5 ?# u( t3 C
  10707.      (defun *error* (s)% }5 h: ?% w7 D& v
  10708.         (if old_error (setq *error* old_error))0 i4 y5 N6 j1 ^1 R  I- L( I; }8 a$ Q
  10709.         (princ)# W( d# c9 T. g# m8 a
  10710.      )% Z6 j8 ]3 S/ X; N; C. k
  10711.      (if msg
    . v: z3 D4 R  G' A9 A
  10712.        (alert (strcat " Application error: "5 h8 [" I- Y# n( C. _
  10713.                       app5 a( i& M' f1 @" G; x# F
  10714.                       " \n\n  "& v/ Y& {  [& F
  10715.                       msg7 ]2 P9 k( ?6 S
  10716.                       "  \n"
    / G2 ]# Y: M% p0 w; ]* n/ `8 H* x
  10717.               )- ]; L" r  k& Y/ m9 ~. ]: G
  10718.        )3 V  w# J( b! f& q5 y, h
  10719.      )- n9 f/ K# x6 j! `) `$ ]7 s! X
  10720.      (exit)* d( `+ A( T0 v5 `+ Z" Y
  10721.   )
    5 N: ~  ~5 Y1 b! a; `% U$ h

  10722. ! L% d( M1 m! w
  10723. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    * G9 Y/ p) N% S4 S0 u
  10724. ;;; and then try to load it.0 B( o, X& l0 H7 O% I' D8 n
  10725. ;;;
    : |+ R% a; |6 _8 R% E" Q
  10726. ;;; If it can't be found or it can't be loaded, then abort the1 r1 x5 C5 z& P8 {' f
  10727. ;;; loading of this file immediately, preserving the (autoload)' u; @9 ~) A  K; ?  W
  10728. ;;; stub function.# c: v& v) y# _# d7 L! d  M9 C) s

  10729. / x' k# V2 R# M6 ]
  10730.   (cond
    + K9 Q) k0 O) m5 b  A3 H
  10731.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    6 \7 H- r  [3 |0 u

  10732. " J. t3 e5 X; D$ k+ u( S
  10733.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    7 y( D& ?5 A. c4 }6 f
  10734.         (ai_abort "DDUCSP"
    1 Y% J8 q0 g8 r( {0 l# Y3 M  Q
  10735.                   (strcat "Can't locate file AI_UTILS.LSP."
    , A$ [1 F5 H/ z* j( o
  10736.                           "\n Check support directory.")))
    ; q6 a" T% s$ n

  10737. ( L% T9 w# Y4 B1 M2 o, F
  10738.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    8 l5 J( R0 k: j/ N7 `) ?, N/ }" [% ?
  10739.         (ai_abort "DDUCSP" "Can't load file AI_UTILS.LSP"))
    5 H2 \& k9 ~& A' i
  10740.   )
    + D5 ]& M* O' [2 D2 G  ]1 W9 K3 u* s
  10741. ( Z$ b+ F8 \; B1 q# X+ u  l
  10742.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP1 E* N5 \. a3 K9 q! Q: T* q7 O
  10743.       (ai_abort "DDUCSP" nil)         ; a Nil <msg> supresses' x( q' z7 K8 k0 Y+ \. Y
  10744.   )                                    ; ai_abort's alert box dialog.
    5 Q" v, ?; ~0 v+ k9 M" {
  10745. , _1 E' N6 i# k8 w: `0 E5 w
  10746. ;;; ==================== end load-time operations ===========================
    ; ?" Y; t8 q8 E" V- y6 i
  10747. 8 F  [7 E8 B/ g' Q7 \$ ?5 I2 u2 I: e1 v
  10748. (defun ai_ucsp_start ( / program)4 _/ |* c1 {- ~5 v, n# u7 L) C
  10749.   ;; Get program name9 k6 d- b0 `/ \4 c( l
  10750.   (if (not (setq program (getvar "program")))
    / k$ I$ e" g" e" [
  10751.      (setq program "acad")/ {' ~6 W3 K2 n0 f) B: E4 d3 i
  10752.   )) J* \1 R4 p2 j6 W0 y
  10753.   (foreach v0 '("world" "left" "cview" "top" "front" * Q; O6 N! D3 Y6 ?, @: {3 V2 x% P, W
  10754.                 "bottom" "back" "right" "prev")
    ' d) }- @4 _! ^2 @
  10755.     (start_image (strcat "ucsp_" v0))  a% r; G3 R6 [* {2 M
  10756.     (slide_image
    - `0 ?0 K2 a+ Z4 I4 B5 T8 l, l
  10757.       0 0
    0 S3 \4 x) ?8 t: _5 C
  10758.       (- (dimx_tile (strcat "ucsp_" v0)) 1) (- (dimy_tile (strcat "ucsp_" v0)) 1)+ |  S) A" l1 }& A3 ^, j
  10759.       (strcat program "(u-" v0 ")")" m1 y- t0 M- G
  10760.     )  t/ `7 |# K2 @# B# d2 t
  10761.     (end_image)' Y+ A6 s- r( w
  10762.   )0 A* u* o1 t% m# e5 g/ A$ V, G
  10763. )/ T/ K8 M: c$ l0 v9 d: N  H  ~
  10764. ' E6 j" g* J; g/ Z
  10765. (defun ai_ucsp_set ()
    0 e1 q; g* Z6 s+ W* t# V+ K; g
  10766.   (if ai_ucsp_sv1 }7 X  L& ?7 B; r  ?, f" M0 O
  10767.     (command "_.UCS" "_V")  y5 S: L  `+ H2 [1 K$ B1 e% D
  10768.     (if ai_ucsp_prevs
    5 {* }* i9 P+ P, }6 q1 @
  10769.       (command "_.UCS" "_P")
    5 m  _: v; H0 Q
  10770.       (if ai_ucsp_chg
    * c- [) \, h3 H3 z
  10771.         (progn
    & e1 t6 ?. Q8 T! l, J# w* u
  10772.           (if (/= ai_ucsp_a "*")) }" I9 G" p; n7 ^& H3 Y% D
  10773.             (setvar "LASTPOINT" (trans (getvar "UCSORG") 0 1))1 K9 I. ~' k. c8 ^3 \3 n4 n
  10774.           )
    / V" e) S. ]1 O( D! Y% @  z
  10775.           (if (< ai_ucsp_pick 6)$ ~+ c& c% h; d' o
  10776.             (setq ai_ucsp_set0 "@")
    " |1 B. s: `3 B6 j* Y6 R
  10777.             (setq ai_ucsp_set0 "*0,0,0" ai_ucsp_a "*")1 h$ j( @+ @% q  U
  10778.           )  [* X/ j# S" ^; b8 X1 D
  10779.           (cond ((= ai_ucsp_pick 0)
    + m9 J4 m  F# _* C' u; j4 x
  10780.                  (setq ai_ucsp_set1 "0,-1,0"2 K7 |% K5 t/ N
  10781.                        ai_ucsp_set2 "0,0,1"
    * t2 p6 d* O/ g# T$ \
  10782.                  )
    ( G. H4 v4 ?& s
  10783.                 )) w& p) U1 x9 _# [* _' G
  10784.                 ((= ai_ucsp_pick 2)
    2 J1 ~4 u- n1 N" f
  10785.                  (setq ai_ucsp_set1 "1,0,0". G: e0 w3 a5 m+ x; j* H/ b. ]- a* r$ K
  10786.                        ai_ucsp_set2 "0,0,1"
    ; W" j5 @, Q$ a$ _$ L0 [' i4 f
  10787.                  )% a+ m8 F+ z4 a1 z* @
  10788.                 )
    0 u% {! O, p2 w
  10789.                 ((= ai_ucsp_pick 3)! `  \# L7 U/ U
  10790.                  (setq ai_ucsp_set1 "1,0,0"8 o7 H( U+ \/ H" v
  10791.                        ai_ucsp_set2 "0,-1,0"0 `0 m! d; X3 [
  10792.                  )" U! N, J& L# [4 ?
  10793.                 )
    1 o# ^4 k) E$ Y* e: [: P  p
  10794.                 ((= ai_ucsp_pick 4)
    2 r4 }, o. I+ ^$ S4 `2 _
  10795.                  (setq ai_ucsp_set1 "-1,0,0"
    3 \7 Z( X; q* i' [5 i" z2 `' @
  10796.                        ai_ucsp_set2 "0,0,1"
    1 a% J  n. x/ e3 [' @
  10797.                  )
    3 Z" c! m- J6 V0 i* {4 \+ Y* n
  10798.                 )
    7 l1 t, z% B0 ^5 K+ B9 f1 L
  10799.                 ((= ai_ucsp_pick 5)
    3 b+ A+ q8 U/ X5 e  \5 E
  10800.                  (setq ai_ucsp_set1 "0,1,0"+ G' h7 H* t# B
  10801.                        ai_ucsp_set2 "0,0,1"% S+ c& L; h( Y. r1 s3 B/ D
  10802.                  )
    3 I# e: }. R, l# c+ s+ o  b" W
  10803.                 )/ U% Y0 `3 }: F7 d4 Y* M- q
  10804.                 (T
    " Y, t! R; P2 @. d
  10805.                  (setq ai_ucsp_set1 "1,0,0"
    % [% H1 R* m& \  c8 o
  10806.                        ai_ucsp_set2 "0,1,0"
    3 j1 {  k; A; ~3 n
  10807.                  )% H. {3 `. K: c$ o
  10808.                 )
    3 S6 n% N( p- I% c4 j' V
  10809.           )" k$ q, N% x3 O2 r7 X2 T7 y
  10810.           (command "_.UCS" "_3P" ai_ucsp_set0 & P0 i( I5 v- M
  10811.                    (strcat ai_ucsp_a ai_ucsp_set1) - v% s. C# i4 t" ^3 d! o  \
  10812.                    (strcat ai_ucsp_a ai_ucsp_set2)& U' t, @' K2 p2 S
  10813.           ) ( Z" [& r7 c7 D  C+ n- y; Q3 q7 W
  10814.         ), |! w6 h/ {# K6 R: x$ s' q3 i
  10815.       )" [) _# L. Z7 h) i" t2 {1 |
  10816.     )
    9 E6 R. c2 `+ v# V9 P( l% l: u" t
  10817.   )
    7 i( r) y  N; _5 L+ B
  10818. )
    ! z' G" M0 T7 p9 M7 p$ m# Q/ P" B

  10819. ) p: ^: P* \* |( u) G+ {
  10820. (defun ai_ucsp_p (val currtile)
    # Y2 E) h" R0 a5 @0 R# {" b; `  {9 F* ~
  10821.   (mode_tile ai_ucsp_currtile 4)& w* y) ^- \3 V% R7 c3 F$ ~: V
  10822.   (setq ai_ucsp_pick val
    9 [4 \) t; o2 u4 ^1 m6 U
  10823.         ai_ucsp_sv nil
    $ ]# ~" j0 d& Y) N% g  U+ L+ y+ b
  10824.         ai_ucsp_currtile currtile
    # Y' K/ T! f8 b" w5 T& M
  10825.   )" u# H8 P9 k4 q8 Z4 a7 L9 H
  10826.   (if (/= val 1)6 M; A! w, ~! ?* a% l
  10827.     (setq ai_ucsp_chg T)
    - i; J. y3 N  n# Z* V8 C1 l
  10828.   )
    + o/ Y3 S- J6 g
  10829.   (mode_tile ai_ucsp_currtile 4)
    ) _: ^8 w+ y+ S
  10830. )
    0 o* A8 O7 |4 k

  10831. $ b' i  r6 T% [8 M" s/ m
  10832. (defun ai_ucsp_swcs (): A* r7 t( ~  F, f
  10833.   (mode_tile ai_ucsp_currtile 4)$ Y. M8 q& z0 t
  10834.   (set_tile "ucsp_a_wcs" "1")
    6 G) G! p0 r& \9 r1 T' C; G
  10835.   (setq ai_ucsp_pick 65 D  u# D" M4 N( ~/ g
  10836.         ai_ucsp_sv nil
    ; U4 Y( G: V& j6 B3 o9 f
  10837.         ai_ucsp_currtile "ucsp_world"
    5 Y1 [  P, b% r. i9 P) R$ u
  10838.   )  T3 g% j; }2 S7 Y$ M% G
  10839.   (if (/= 1 (getvar "WORLDUCS")), H/ S7 V1 A  W& a! F% F; M
  10840.     (setq ai_ucsp_chg T)
    5 R# O9 ^4 v/ O, p6 |  @) [5 b
  10841.     (setq ai_ucsp_chg nil): X3 m& x: Q; U* @7 ?" W
  10842.   )2 ?6 h* c9 |" _4 b2 U% H
  10843.   (mode_tile ai_ucsp_currtile 4), v- _4 k. T, {2 P
  10844. )
    1 R% `+ j9 v, W6 g3 o. P
  10845. - \" `4 ^4 Q7 B
  10846. (defun ai_ucsp_cview ()
    % g! C' x9 S8 a+ r* e4 c* @
  10847.   (mode_tile ai_ucsp_currtile 4)) y7 S( W7 n* ~
  10848.   (setq ai_ucsp_sv T $ }, A$ d! [6 m0 |
  10849.         ai_ucsp_chg nil
    . e$ S8 e5 F/ ^! D. S  j
  10850.         ai_ucsp_currtile "ucsp_cview"# c3 J' H; {/ x4 K) l3 t
  10851.   )
    ! e) s- J9 |1 G+ N2 I$ o% D+ L0 U
  10852.   (set_tile "ucsp_a_wcs" "1")
    ) H# R; k4 h: t4 k0 A; Q8 q5 Q
  10853.   (mode_tile ai_ucsp_currtile 4). F. x/ z' w! \
  10854. )+ F$ a+ j1 ]; m# A. E6 x
  10855. $ {2 C! b& O& j/ D$ _' ?" @' u
  10856. (defun ai_ucsp_rucs (typ)
    7 K7 m( b: d% Q% Q
  10857.   (setq ai_ucsp_a typ)
    & }3 l/ o$ V# t. e! O8 R: s
  10858.   (mode_tile ai_ucsp_currtile 2)
    9 |) \: u4 ^2 o$ ~! T( d
  10859. )
    ) b+ u" ?/ m* x# g7 W# i- s

  10860. 9 m+ q- i4 I/ l
  10861. (defun ai_ucsp_prev ()8 X8 X* W6 ^6 Z7 p9 n* t0 _
  10862.   (mode_tile ai_ucsp_currtile 4)$ ~/ g% `  U( d, h( {0 I
  10863.   (setq ai_ucsp_prevs T% B7 S) i+ b: A$ O( c$ |6 V" j$ M
  10864.         ai_ucsp_currtile "ucsp_prev"
    ! q3 `, G3 F3 \2 j: L9 Y5 n
  10865.   )
    3 i4 x. K" @% w# c
  10866.   (mode_tile ai_ucsp_currtile 4)- {7 t3 h" i/ Y
  10867. )
    - q+ r; y) g5 G1 y9 R
  10868. ) K# R; R- s( `1 K* a6 z
  10869. (defun ai_ucsp_main ( / ai_ucsp_pick ai_ucsp_sv globals)
    $ E# h: d( r& Y( Q" `- i
  10870.   (if (not (new_dialog "dducsp" dcl_id))
    5 x" _( f6 U# h/ J
  10871.     (exit)9 L# W& W# m- [
  10872.   )
    5 L7 f' [. C) p

  10873. # P% \! U, C: o8 G* b' N- i" t. B& @# u
  10874.   (ai_ucsp_start)
    ; y% S$ {1 I! `( u, O) k5 i6 W
  10875.   (setq ai_ucsp_a "@"
    $ h7 t3 y  h& W2 [
  10876.         ai_ucsp_pick 23 [2 I0 @+ ?* M  d! c' |8 k
  10877.         ai_ucsp_currtile "ucsp_top"6 q7 H2 ]% }. `  y8 L+ |# ~
  10878.   )
    ( h: X# O& Z" e1 ~# y
  10879.   (if (= 1 (getvar "WORLDUCS"))
    : C: G4 c9 j: c, `  ?: X6 {5 h
  10880.     (progn" W' C) q: C" h9 j: I
  10881.       (set_tile "ucsp_a_wcs" "1")
    2 a% Y: N6 ~; D1 V% B
  10882.       (setq ai_ucsp_currtile "ucsp_world")0 G4 {! h  l' T5 `& C  ?
  10883.     )& B  C9 y; r9 B) m
  10884.     (set_tile "ucsp_r_ucs" "1")2 |1 X2 M( D: A- x: v+ C2 R1 p
  10885.   )
    6 J4 l7 @5 G: o! R/ h, ]
  10886.   (mode_tile ai_ucsp_currtile 2)
    1 O6 T9 H7 k, o# k% M- }% O
  10887.   (mode_tile ai_ucsp_currtile 4); s) }' U- I# y0 |) `2 O
  10888.   (action_tile "ucsp_world" "(ai_ucsp_swcs)")) [- n7 D) b) @6 N. P2 t; v* B
  10889.   (action_tile "ucsp_cview" "(ai_ucsp_cview)")
    . f- D/ x, v7 }7 M& [5 T. P; A: }
  10890.   (action_tile "ucsp_left" "(ai_ucsp_p 0 $key)")
    . `1 `* o4 X  @6 b
  10891.   (action_tile "ucsp_top" "(ai_ucsp_p 1 $key)"): F# q0 z. z, d( g
  10892.   (action_tile "ucsp_front" "(ai_ucsp_p 2 $key)")) i" n/ X( O# M7 {" C
  10893.   (action_tile "ucsp_bottom" "(ai_ucsp_p 3 $key)")
    ' D0 V$ b8 {0 `8 J( }3 t3 u
  10894.   (action_tile "ucsp_back" "(ai_ucsp_p 4 $key)")
    ! y5 [2 @# w# v7 P0 K
  10895.   (action_tile "ucsp_right" "(ai_ucsp_p 5 $key)")
    4 H- z% n! e6 \
  10896.   (action_tile "ucsp_prev" "(ai_ucsp_prev)")6 O/ ~% g4 Z, M  c
  10897.   (action_tile "ucsp_r_ucs" "(ai_ucsp_rucs \"@\")")
    7 H( e% o- }. C( i4 H
  10898.   (action_tile "ucsp_a_wcs" "(ai_ucsp_rucs \"*\")"): E# ]  t. V7 d( w2 Y8 i4 T
  10899.   (action_tile "accept" "(done_dialog 1)")2 l" E' Y) j# R) _' v0 \
  10900.   (action_tile "cancel" "(done_dialog 0)")
    ! C" ], D, J! M3 Y, i6 c+ z& ~
  10901.   (action_tile "help" "(help \"\" \"DDUCSP\")")6 ^$ Y* `3 M7 H7 s9 d# p5 k
  10902.   (if (= (start_dialog) 1)
    4 P0 D5 }& u7 u! z
  10903.     (ai_ucsp_set)
    0 K8 Z1 V; P! ~, }4 q
  10904.   )( e  E# g8 a5 s$ o4 D0 ?
  10905. )+ w* J1 U. ]9 T  g
  10906.   |8 D5 T' o) D+ a& Q2 F3 v
  10907. (defun c:UUS ( / app dcl_id old_cmd old_osmode ai_ucsp_prevs
    9 T( k; \: Q) H# G) n  X2 u
  10908.                     ai_ucsp_sw undo_init)
    2 X8 e0 \- [7 x+ I  j
  10909. ; o/ M5 ]; H6 x: t2 A# ^  W
  10910.   ;; Set up error function./ T! K! r5 C# \& A1 D% C
  10911.   (setq old_cmd (getvar "CMDECHO")    ; save current setting of cmdecho" J9 C: e) [' x% H3 ~$ H' h2 }, n
  10912.         old_error  *error*            ; save current error function
    % O: z& ~3 f7 T* o" Z
  10913.         *error* ai_error              ; new error function# z& m4 A) Q' w& n$ W1 S9 N! S* i$ W
  10914.         old_osmode (getvar "OSMODE")  ; disable OSNAP for duration
    1 O' }2 {5 S' e! \6 O: D$ r  ~7 Y* ~
  10915.   )
    7 p9 ^8 {0 s8 z& ~" q2 _

  10916. ! A. Q7 K( |+ q  l8 k; t
  10917.   (setvar "CMDECHO" 0)
    ( l( p& Q4 q- G! F. C

  10918. 2 D2 `8 P7 r+ z
  10919.   (cond
    6 q0 ^- @% }, s# t
  10920.      (  (not (ai_notrans)))                     ; transparent not OK
    5 z6 V  R+ D" P* [5 T
  10921.      (  (not (ai_acadapp)))                     ; ACADAPP.EXP xloaded?
    - s9 J  Y; c2 _, c
  10922.      (  (not (setq dcl_id (ai_dcl "dducsp"))))  ; is .DCL file loaded?
    " u& c* s( J+ l: x
  10923.      (T (ai_undo_push)
    7 b; X2 \0 C8 _) J, |
  10924.         (setvar "OSMODE" 0)
    / q$ }. y3 h' U* {8 l- I
  10925.         (ai_ucsp_main)
    / }: s% S5 ~- o5 V3 [/ u
  10926.         (setvar "OSMODE" old_osmode)2 ]- ~+ O/ b, w
  10927.         (ai_undo_pop)
    / B, z+ C% Y. V+ O: W; s
  10928.      )
    . }! U, X" G/ S$ Z* u/ J
  10929.   )
    2 _# a: V: T' e3 j+ v+ Z

  10930. - u7 u5 `7 X  k( i1 R' O, E
  10931.   (setq *error* old_error) ( P7 A) R$ z+ u  {
  10932.   (setvar "cmdecho" old_cmd)
    0 F% z+ G0 ]- ^1 X  O* w

  10933. - X, l' B4 S- ?  ]3 N2 u4 E
  10934.   (princ)# |& S9 s4 c/ d6 k& o
  10935. )- S% Q. N$ ]: y! i' ~8 u
  10936. * x, ]0 ?% ]$ Z: m" q5 R2 v
  10937. (princ "  DDUCSP loaded.  ")6 K2 B0 Y( K9 _4 y
  10938. (princ)& }! t7 q. R$ k/ J! G; e
  10939. 4 a2 N' c; G' T
  10940. ;;;???;;;---------------------------------------------------------------------------------------) V* Y" a+ H/ z6 C9 w& }' D
  10941. - J; b6 E4 H' F
  10942. ;;;----------------------------------------------------------------------------, a8 F7 c7 y! _) M0 j
  10943. ;;;5 X' l( T& t" P
  10944. ;;;    EXCHPROP.LSP   
    2 t, }# j" W' N7 r0 l9 r7 A
  10945. ;;;    Polyline and text modification capabilities added by
    # @9 f: L3 e: B; s& e* W: Q
  10946. ;;;    Randy Kintzley  
    9 x! f7 z! h9 u# I" [, `
  10947. ;;;
    ! B* c8 q- x% J0 r
  10948. ;;;    Copyright (C) 1997 by Autodesk, Inc.
    8 U4 Y/ G* {5 \
  10949. ;;;! _3 e4 F" q1 l! s( S( M1 W# v
  10950. ;;;    Permission to use, copy, modify, and distribute this software8 g, w( _8 r) ]5 T: @" Y
  10951. ;;;    for any purpose and without fee is hereby granted, provided
    ) b+ e8 ]$ K0 y. Q$ X
  10952. ;;;    that the above copyright notice appears in all copies and% Z  z% Z/ Y8 E' |. ^
  10953. ;;;    that both that copyright notice and the limited warranty and( \: i" {9 ]4 W3 g$ @0 v, w
  10954. ;;;    restricted rights notice below appear in all supporting# E7 z/ [+ i; q  H! F. ~+ l
  10955. ;;;    documentation., s# x9 V9 E/ k3 K" B
  10956. ;;;/ f  V0 c8 n1 e! g
  10957. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
      k& O- @4 B. U# ~0 `
  10958. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    8 r+ C& l! i/ a9 D; P
  10959. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC./ |) m1 A( W1 l$ D
  10960. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    4 O% p$ ~" b& v. |1 e6 v1 a# O
  10961. ;;;    UNINTERRUPTED OR ERROR FREE.
    , o/ J6 e6 f& Q- H
  10962. ;;;6 J$ L7 u4 x6 i. Q! ^
  10963. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to! Y6 b5 R2 ^8 {) C! ~
  10964. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    ( H! D$ L! F5 ?* C0 w6 z2 B" m
  10965. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    ; }) }: U" g6 X- G
  10966. ;;;    (Rights in Technical Data and Computer Software), as applicable.  b1 a+ Q) K: b3 A: e
  10967. ;;;
    2 k2 J3 |, [" [: O* Y
  10968. ;;;.( S0 j- @9 H3 Y& i* [
  10969. ;;;    28 February 19970 F" Z1 W$ H" S
  10970. ;;;  v3 d' c& n7 x+ c& G5 O
  10971. ;;;* J7 y% q# K, Y# d' o% i" J
  10972. ;;;----------------------------------------------------------------------------, s* ^) A: ]  b9 }# w; @
  10973. ;;;   DESCRIPTION$ c/ S: Z% `# g/ a
  10974. ;;;----------------------------------------------------------------------------5 l: X% O4 K# e+ X; B
  10975. ;;;   C:EXCHPROP is an extended or enhanced version of ddchprop. This  
    2 `1 p5 P) [* s. r4 h( ^) i; q
  10976. ;;;   command gives the user the abilitie to change several characteristics " I4 q% C' S$ I& s9 ]" U
  10977. ;;;   of selected polyline and text objects.
      N4 t0 h: S0 u8 h
  10978. ;;;       The style and height of selectected text objects can be modified
    $ M; J) g9 u* _% y& w0 `; m
  10979. ;;;   (including text, mtext and attribute definitions) as well as, width and ; ]$ b5 T. s4 }9 j1 I7 G
  10980. ;;;   elevation characteristics of selected polylines (includes lightweight and
    , C* E* @  T6 X
  10981. ;;;   traditional polylines.)0 D% i1 X) E5 f5 @/ n
  10982. ;;;----------------------------------------------------------------------------3 H* |* L( ~7 [4 K# a2 v
  10983. ;;;----------------------------------------------------------------------------2 ~, a2 W8 @1 E8 v  G
  10984. ;;;   Prefixes in command and keyword strings:
    ; E% J; ~$ [; y+ k- m6 [2 D
  10985. ;;;      "."  specifies the built-in AutoCAD command in case it has been. s. y0 J" k- ^
  10986. ;;;           redefined.
    * z# D3 t. O4 a4 l/ E7 j
  10987. ;;;      "_"  denotes an AutoCAD command or keyword in the native language
    ; X& d' y; |4 m! G0 [
  10988. ;;;           version, English.* Q7 Z: p8 L. j8 S& S6 |" g
  10989. ;;;----------------------------------------------------------------------------
    5 s- v: F; q& i6 f! [2 q$ M
  10990. ;;;$ @5 `( k* P! p; R. N
  10991. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;! m; ^0 H8 @' J
  10992. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;% U* l4 u/ A( D4 n5 S# w9 S
  10993. ;Functions created as result of loading file: exchprop.lsp, h  @* ?% e& J
  10994. ; DDCHPROP24 X5 O0 n# Z6 o6 h  U
  10995. ; DDCHPROP2_INIT
    5 _4 p7 m/ N" k& z1 P3 u& B
  10996. ; DDCHPROP2_SELECT8 J) r$ n: E$ f: c( X, k
  10997. ;0 L/ M5 M* a1 v
  10998. ;Variables created as result of loading file: exchprop.lsp1 b, V- f2 ~! v+ @; v" R
  10999. ; OLD_ALLOC
    8 {/ Y" m4 l7 z# Y. k$ z
  11000. ;2 L/ ^! M/ _9 A+ o
  11001. ;Functions created as a result of executing the commands in: exchprop.lsp' K" {8 v1 L9 j9 G4 b
  11002. ;1 M9 u5 N' S' d, _# R* C  C
  11003. ;Variables created as a result of executing the commands in: exchprop.lsp9 a, V7 v- b7 f  O! R
  11004. ; AI_SELTYPE
    ' T. r# [% B  J' Z1 q, b
  11005. ; BONUS_ALIVE- [; C0 k6 D, y6 p
  11006. ; BONUS_OLD_ERROR
    6 r; i2 f! u) B# Z7 e6 }5 T7 L' \
  11007. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) ^6 }) C. I: ~0 u* w7 S
  11008. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;' }: j; ~# p6 q
  11009. + C2 R% t. _$ Z* \4 p# w
  11010. ;;;
      q' `4 s* \8 b9 O) `) n+ ~
  11011. ;;; Avoid (gc)s on load to improve load time.
    ; N! Z" y% a/ G# E
  11012. ;;;
    , h' ?" r* o; i. A, p+ h) U
  11013. (defun do_alloc (/ old_allod new_alloc)
    5 k: O$ i3 S, z4 c. H
  11014.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))
    0 F7 s- g4 K. R, \4 q7 h, ~
  11015.   (expand (1+ (/ 4750 new_alloc)))
      z  b% r4 r) F2 Y- |8 u. m& S
  11016.   (alloc old_alloc)
    ) R9 H6 Q: G/ P- I  i* ?: E
  11017. );defun
    " x1 L2 U0 M9 k* X+ ]8 M

  11018. % W4 _. ?4 ~5 O
  11019. ;runs at load time - rk
    - W  ^% ^% P2 _: A! v9 E; e! A
  11020. (do_alloc). @& L; e! B! E) O/ y& e  E
  11021. (setq do_alloc nil), m' ]8 o& l5 b
  11022. ;;;! e. s2 l4 v0 r# h) A" Q, ~+ N8 `
  11023. ;;; ===========================================================================" Q/ u+ }- c; J! {( I/ M7 Z6 P
  11024. ;;; ===================== load-time error checking ============================8 D. N5 k: h* ?! [) R, t& s
  11025. ;;;
    : W+ b0 r9 {% ~% Z

  11026. # @' a+ ^7 Y1 q8 V! y
  11027.   (defun ai_abort (app msg)
    4 m: R4 T" f  I  ]' e+ w5 E
  11028.      (defun *error* (s)& [" ^9 r8 v7 k* L( S* e
  11029.       (if old_error (setq *error* old_error))
    5 @' ?4 c2 `4 @, p) V0 x
  11030.       (princ)5 C! n7 ?( C* N& l# I, ~
  11031.      );defun+ s" _! `' @3 B0 m; a$ O7 b
  11032.      (if msg
    ' F# e$ G6 A* J" [% s
  11033.        (alert (strcat " Application error: ". D3 }- g" V: |0 m. N  W( K/ N1 e
  11034.                       app4 q7 U; k# n- ~' A
  11035.                       " \n\n  "1 C  T% q3 g& R+ y8 j
  11036.                       msg
    ( u& P3 b& y1 H% U$ `! {
  11037.                       "  \n"5 J9 p0 r- F- ^4 k
  11038.               )) h8 W) J7 O5 M! f
  11039.        );alert) I6 }5 }9 N( a. }- w+ g
  11040.      );if
    ) z' V% P" P5 G2 q: H
  11041.      ;(*error* msg)
    / t0 c5 e! m/ e# w$ S  h
  11042.      (exit)
    1 w" }% W# i2 r' L4 l
  11043.   );defun ai_abort4 @+ r: {( O7 }
  11044. - N/ Z. P) R) R$ j1 w2 `% O
  11045. ;runs at load time - rk
    3 @% y8 F5 n5 }# Z! u5 g
  11046. ;(if (and *error*      ;added the if wrapper around this - rk.
    9 h  l) w+ L+ x- E
  11047. ;         (not old_error)         W. l: q" g0 r( ?! W& A9 ~; i5 f
  11048. ;    );and % @7 ]- F7 Y) `# o3 X
  11049. ;    (setq old_error *error*);setq
    6 R3 Q- K. _" q' Z( h( w6 B
  11050. ;);if7 p6 u& d! ]. O( U3 n$ N

  11051. % i7 O9 M" W& o4 i
  11052. ' l' V6 y4 N* U) V, N# R  i
  11053. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    0 y' l' _5 F2 y" ], a8 a
  11054. ;;; and then try to load it.  T; f4 \- w$ ~# J8 j- A, e% ^
  11055. ;;;
    : x: r- n* J4 ^4 h; g( w1 N
  11056. ;;; If it can't be found or it can't be loaded, then abort the* a: z6 d% G9 \- ~! j
  11057. ;;; loading of this file immediately, preserving the (autoload)
      y5 |' N3 S& t( ~1 Y7 v
  11058. ;;; stub function.
    # i) d/ q9 R( s3 E
  11059. % Q7 j8 Y3 L- [- k0 P& C: [
  11060. ;runs at load time - rk.* ?# W7 R8 t7 L; u6 T. P1 }
  11061. (cond
    6 L# \  Y2 `3 q5 v5 ^
  11062. (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    + C& w' Z* L0 \7 F% I  I) L
  11063. (  (not (findfile "ai_utils.lsp"))                     ; find it0 K# f! T% n7 [- i/ {! J
  11064.     (ai_abort "EXCHPROP"
    / ?! @& W- x+ c, d7 M3 t* r3 k
  11065.               (strcat "Can't locate file AI_UTILS.LSP."
    8 W- t* I( z: ~  a- V" R
  11066.                       "\n Check support directory.")2 O$ P" j3 W; @5 p
  11067.     );ai_abort
    4 S; M8 Q, G  F6 u0 f; G# W/ H# e
  11068. )
    . e) c, o5 h$ h; M
  11069. (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    3 T9 H; U( D+ V4 n* f; h
  11070.     (ai_abort "EXCHPROP" "Can't load file AI_UTILS.LSP")' Z1 O8 n# g% K* j8 o! M9 s
  11071. )
    ) K$ D( Z5 D9 L) h! c9 b
  11072. );cond close
    ( G" [3 {% x! T9 r$ K. L9 i

  11073. , y. c5 U/ r4 u4 ^
  11074. (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    - ]& j& @4 q) I) E
  11075.     (ai_abort "EXCHPROP" nil)       ; a Nil <msg> supresses
    0 W) m6 A. d5 I% z
  11076. );if                                 ; ai_abort's alert box dialog.- D1 ~) t2 X) e# G, U
  11077. 0 n; d: v6 z7 z0 Q
  11078. ;;; ==================== end load-time operations ===========================0 a4 ]% R* d0 Q3 ?- Z( w, T+ [
  11079. % L5 Q8 r% u1 i
  11080. ;;; Initialize program subroutines and variables.
    1 {2 P  i5 F8 x
  11081. - v- _5 `$ q5 Y: X
  11082. (defun ddchprop2_init()6 h* D9 M4 m; ]8 F; h0 d

  11083. - [$ [6 U% e6 Z) L

  11084. 1 \! {6 y) }4 \2 `
  11085. 3 V0 d9 N9 a3 _' o
  11086.   ;;: ?0 Q2 B. A+ t5 ~7 H
  11087.   ;; Define buttons and set values in CHPROP dialogue box3 R1 G' k  h5 D/ j& c# u
  11088.   ;;
    / \/ N- J: I  w8 }7 n" a0 F; u
  11089.   (defun call_chp2 (/ cmdact p1 p2)9 ^* m( C: L& Z$ W! G

  11090. $ J1 D5 `/ \6 `. [# ]
  11091.     (if (not (new_dialog "ch_prop" dcl_id))
    7 W( @! F5 R4 w" h
  11092.         (exit)0 V8 W; \- o7 J' M( B$ m
  11093.     )( c% ^0 X$ i4 p( j

  11094. 6 y4 j  S, t6 p! O  I' P7 O
  11095.     (set_tile "error" "")
    8 F* ~* x3 i) S! ~4 }
  11096.     ;; Set initial dialogue tile values
    # ^& m# m& x2 p* c
  11097.     (set_col_tile)$ c. f) K$ \; x( x3 \/ U
  11098.     (set_tile "t_layer" elayer)# m0 [$ w- M5 `9 m
  11099. 0 R! B% `' ~; E! j3 d& @4 g
  11100.     (cond
    ; a7 r9 @9 L/ z  Q$ a' T4 ?& `) x
  11101.       ((= lt-idx nil)
    , G  @, N6 w$ ^5 r' y! g8 X5 O6 f
  11102.         (set_tile "t_ltype" "Varies")8 ], U" J3 i! l+ u% j7 L
  11103.       )% G2 V8 L4 X9 g, \: j' _6 [2 N, T
  11104.       ((= lt-idx 0) ; set tile "By layer & layer linetype"3 k5 A2 q% O, B) ]- g1 T' u6 p. M
  11105.         (set_tile "t_ltype" (bylayer_lt)): }$ _2 X1 R: Q% d4 x" O4 \
  11106.       ); J) j8 o) c! V
  11107.       (T
    - @7 D2 L9 s/ V
  11108.         (set_tile "t_ltype" (nth lt-idx ltnmlst))' z; r4 I, s0 Z/ ~* d$ ?9 H$ O4 X
  11109.       )
    : B8 l( K6 A5 X! e
  11110.     )6 i0 z! y  O0 H/ s: b2 k# K' V

  11111. * t6 H0 ?. }+ P' C/ [# O! f4 u
  11112.     (if (or (= ethickness nil)* M- n- K' W) T1 a* O
  11113.             (= ethickness "")# D! ?: f1 |/ v- _1 h
  11114.             (= ethickness "Varies") # h1 Q% ?6 o: V# Y% E  u! r- b; x
  11115.         );or
    2 z* k$ n( y: }) Q
  11116.         (set_tile "eb_thickness" "")8 w8 t  @# I$ [8 S
  11117.         (set_tile "eb_thickness" (ai_rtos ethickness))
    % F& ^& b9 R$ J& C# N
  11118.     );if
    / N: G0 {4 B$ C" @' v
  11119.     (if (or (= eltscale nil)
    ! l7 {0 ~& z5 j) `
  11120.             (= eltscale "")
    - R+ Q# ]9 f' o! F. _2 f. e
  11121.             (= eltscale "Varies")
    ( r: \7 y. b  F6 U% a
  11122. ( l4 y+ q/ p1 \1 Q+ r
  11123.         )% |0 p4 H% O! Y7 G& {
  11124.         (set_tile "eb_ltscale" "")3 O% k% @: ?, q4 q
  11125.         (set_tile "eb_ltscale" (ai_rtos eltscale))' W. p( Y% g( X
  11126.     )
    * A' C8 _  a9 {6 P6 V2 |
  11127.     (if$ L7 i* T+ \5 [' _- b5 O3 a/ |
  11128.       (numberp ewidth)
    # B# Y' r5 b3 `, E
  11129.       (set_tile "poly_wid" (ai_rtos ewidth))/ i6 D7 f( h0 N8 {% {- @1 N& G
  11130.       (set_tile "poly_wid" ewidth)
    * G9 d3 T. n9 B& S- I# X/ V' `
  11131.     )
    0 V; H  m0 M, E2 i. s: b+ F
  11132.     (if1 Q! X8 X$ [+ ?, a6 n
  11133.       (numberp eelevation)5 C. x' L) X. C: g3 K5 H8 v- ~) R: b: X
  11134.       (set_tile "poly_elev" (ai_rtos eelevation))2 n5 J$ @) \4 y
  11135.       (set_tile "poly_elev" eelevation)6 U6 h- Q, u$ }9 y! F$ s* k
  11136.     )
    % D& r. |% S5 q+ l0 F
  11137.     (if/ h9 N$ f9 l# x( _2 T$ q: u
  11138.       (numberp eheight)2 P* m) U2 w# s4 |9 A" B7 m
  11139.       (set_tile "text_hgt" (ai_rtos eheight))
    ; i& z7 }4 i9 P5 @$ M) ~  i
  11140.       (set_tile "text_hgt" eheight)
    8 ~6 `7 q6 R, e# Y8 e
  11141.     )
    - {( ?' E+ @2 h* v
  11142.     (if (not estyle)- F# R- s: ?. y* g
  11143.         (setq estyle "")
    9 x; z9 Y3 |! S3 Y( d, b, R
  11144.     );if ' f( d4 E. U6 S
  11145.     (setq hair_style_list (tnlist '("style" 16)));setq
    ! n! A- a9 J/ g
  11146.     (if (not (member estyle hair_style_list))
    " `/ ]5 Y( U0 h6 @
  11147.         (setq hair_style_list (append hair_style_list (list estyle)));setq
    & |- B. P) h; D& O, x
  11148.     );if 3 @- c9 g7 j4 ^! C( e
  11149. 5 R6 x; M) S3 r4 [- M
  11150.     (setq hair_style_list (acad_strlsort hair_style_list));setq
    8 W& [! M/ O" N$ z; y8 G, }
  11151.     (mpoplst "text_style" hair_style_list)4 ?$ J2 b& w8 W2 S. F, G
  11152.     (set_tile "text_style"
    7 e6 R- |% b  ]. _8 p
  11153.               (itoa (position estyle hair_style_list))! X$ g  W3 V1 t1 i  O) W3 c" N. t
  11154.     );set_tile ; H/ X+ L: X' c; q- i5 P0 U
  11155. " A3 Y2 n* @) S0 h1 [* b+ n% p
  11156.     ;; Disable tiles if need be...  ;@RK  c6 d' p0 v4 G- H
  11157.     (setq a 0)( f' e$ a. E: J: W) w2 @
  11158.     (while ( < a  (sslength ss))! q% {& [8 Q4 K; i: g$ p% x. c
  11159.       (setq which_tiles
    - C: U2 {* u0 w3 c% r
  11160.             (ai_common_state (cdr (assoc '0 (entget (ssname ss a))))))
    1 k, x5 a9 x0 |, ^; e
  11161.     7 m8 w* W0 L* `  R9 a! k( q6 r
  11162.       ;; If all fields are enabled, don't bother checking anymore.
    ! @7 C3 `9 O/ a7 Z, }4 \% B0 G
  11163.       (if (/= which_tiles (logior 1 2 4 8 16))# K) B4 k2 T0 p% v( @
  11164.         (setq a (1+ a))
    1 k( M. h/ ^7 m7 a, s2 k2 f
  11165.         (setq a (sslength ss))+ h* \5 O% d7 r0 q7 }
  11166.       )& m4 }) q) P6 e( j  F* ~. t
  11167.     )7 E# J1 N% t+ b1 }. g
  11168.     ;; Layer Button and Text Field
    8 ^# t" d  f6 W5 a# h6 h

  11169. , \* O& O3 L( G. `0 q
  11170.     (if (/= 1 (logand 1 which_tiles))! ^* h) T' b% g9 J& ]6 P2 S
  11171.       (progn
    4 b3 l7 [1 S" L9 [8 _
  11172.         (mode_tile "t_layer" 1)
    ; }3 v* c3 L3 C; u3 i4 D) C+ K
  11173.         (mode_tile "b_name" 1)' C) w( x1 }( L: U  I
  11174.       )
    ) a" c" t% |2 C  Z8 |
  11175.     )
    ! M1 S8 s! q& h$ w7 [
  11176. * ]% _0 D4 |+ M' U7 D7 V7 t8 k
  11177.     ;; Color Button and Text Field
    3 Z' m- r+ Q4 i( k: I6 S7 l7 E
  11178.     (if (/= 2 (logand 2 which_tiles))
    ; n* P8 q: r2 N* |9 O- x8 M5 r
  11179.       (progn
    2 i! @7 H9 K6 L
  11180.         (mode_tile "t_color" 1)
    6 J. B% p5 L3 d
  11181.         (mode_tile "b_color" 1)+ E4 r2 \0 D& G' _. Z5 b( t- g5 z; v% ~
  11182.         (mode_tile "show_image" 1)
    + ]1 q& E! Y1 p/ y7 [
  11183.       )
    8 k2 j9 K0 _2 O( W, \% W7 N3 D' W  T
  11184.     ), n, b! d" x* ]7 [. H9 p
  11185.     ;; Linetype Button and Text Field8 s  z" h7 U8 `0 M; N0 D0 \
  11186.     (if (/= 4 (logand 4 which_tiles)), w! D/ R8 a7 j
  11187.       (progn5 D7 o8 C9 q, f- H  S+ i* s! |
  11188.         (mode_tile "t_ltype" 1)2 ?' D! k  J" u& H  N- W
  11189.         (mode_tile "b_line" 1)
    . D  k5 F* q) Y
  11190.       ). z0 G& ~* A9 @3 ^; W  T
  11191.     ). Q# V9 J: B! {3 e
  11192.     ;; Linetype Scale Edit Field
    ; G2 ?6 n& N. ^, Y6 b$ m" E! t
  11193.     (if (/= 8 (logand 8 which_tiles))
    ( l6 ~1 i; k2 a+ B- F
  11194.       (progn
    - v1 |6 V1 Z* I/ v9 }
  11195.         (mode_tile "eb_ltscale" 1)& U* H, W) ^7 E7 `4 A- |) |
  11196.       )8 @8 b7 O* Q" I
  11197.     )
    # s0 e/ U) v9 Z9 h1 C7 Y& l6 N
  11198.     ;; Thickness Edit Field.
    % j; Q+ b/ _, f) D
  11199.     (if (/= 16 (logand 16 which_tiles))
    " O6 n2 u1 U  C6 e
  11200.       (progn
    ( E2 |+ p7 B$ t8 F$ T1 \( g
  11201.         (mode_tile "eb_thickness" 1)
    $ C: v0 E3 C# h+ V
  11202.       )
    6 |7 o. Z4 O0 f. ]* P  o0 r
  11203.     )1 ]5 }+ s! U& E6 x$ d

  11204. 0 v8 P- n$ [, g2 R* s3 p7 t
  11205.     ;; Polyline box and tiles          @rk 10:05 AM 1/30/975 M: X% q0 N1 J
  11206.     (if (not (= 2 (logand 2 eflag))): F) |* n% W6 D! _8 v1 g
  11207.         (progn1 _7 Q4 K1 K0 Z, ~8 e
  11208.          (mode_tile "text_hgt" 1); _. F" z4 ^0 m+ q, i
  11209.          (mode_tile "text_style" 1)8 u7 C, ^& p3 _' f! `: e3 {4 {
  11210.         );progn
    . }$ o9 z. p: Q  B8 P2 |% T1 f
  11211.     );if5 Y1 F! [" ]/ Y1 b3 B- w
  11212.     (if (not (= 1 (logand 1 eflag)))  W% O/ o/ B9 ?8 v- m. u
  11213.         (progn
    8 l3 X3 R" ?" u& d4 v# `
  11214.          (mode_tile "poly_wid" 1)) P7 h. A* Z! z- {# z/ f5 a( B
  11215.          (mode_tile "poly_elev" 1)
    ) Z1 T  D9 a" S
  11216.         );progn then disable polyline fields
    3 X8 o7 {$ ^( a' Q& n
  11217.     );if; f4 g3 O" o1 K! I, _/ n4 \
  11218. 9 q( S8 O6 y- T$ X7 q
  11219.     ;; Define action for tiles/ q( A+ d( I& _* G: t2 T* W
  11220.     (action_tile "b_color" "(setq ecolor (getcolor))")( _6 }+ N% v+ n. {" [; j' }; N% L2 L
  11221.     (action_tile "show_image" "(setq ecolor (getcolor))")
    + a- O6 Q8 K5 a; `
  11222.     (action_tile "b_name" "(setq elayer (getlayer))")
    2 r* ?- ?  m2 d2 z
  11223.     (action_tile "b_line" "(setq eltype (getltype))")
    " `0 Q% j  o" }" u$ L
  11224.     (action_tile "eb_ltscale"  "(getscale $value)")
    9 f2 U# k0 w) S* [
  11225.     (action_tile "eb_thickness"  "(getthickness $value)")
    3 k. m6 d) r+ c
  11226.     (action_tile "poly_wid" "(getwidth $value)")* X0 u, K1 F  L$ ]9 L+ h' u5 t0 s, Y
  11227.     (action_tile "poly_elev" "(getelevation $value)")
    4 Y8 f8 A5 q* V5 }2 w, L* L
  11228.     (action_tile "text_hgt" "(getheight $value)")' u' q3 s5 n+ y0 [/ E
  11229.     (action_tile "text_style" "(getstyle $value hair_style_list)")
      `( G5 p1 Y; b# d( n
  11230.     (action_tile "help" "(help \"AC_BONUS.HLP\" \"EXCHPROP\")")7 d  j9 l* f$ ^- D& \9 h
  11231.     (action_tile "accept" "(test-main-ok)")
    % k1 {& X6 z' i
  11232. , j. d3 \+ Y  X$ W
  11233.     (if (= (start_dialog) 1)
    + [! R6 F+ {. f5 j; p
  11234.       (progn: l$ s$ ^* \, ?& m8 D9 `
  11235.         ; Update special properties for polyline and text selection-sets.! }, F4 Q2 Q, o1 M. d
  11236.         5 j; O8 G. o$ F5 u) g
  11237.         (if (and (= 1 (logand 1 eflag))   ; polylines rk chprop
    $ z. {7 k: E) h- m$ I4 K
  11238.                  (or ewidth8 j, P  R! i6 d
  11239.                      eelevation2 K/ Z; O. c) G) }" N
  11240.                  );or% r: E' y3 ]! Z8 m* Q8 ]- R% i7 q4 ^" F
  11241.             );and
    % D7 C# B& \/ r5 ^6 I0 C0 o( X& C
  11242.             (progn
    3 c! N4 D+ A% Z  e' @
  11243.              (setq  ss-index 0
    # |% q% P: F2 \" z- ]$ K+ B1 {
  11244.                    ss-length (sslength poly_ss)5 I9 D5 t1 X, H- |$ E& j
  11245.              );setq
    1 S0 v( I* g8 I! {- B$ |
  11246.              (while (< ss-index ss-length)
    ( F  i1 ^& ?1 V+ [! v) H
  11247.                (setq ename (ssname poly_ss ss-index)% k6 }7 B* V! `' \- _
  11248.                      elist (entget ename)
    3 b( S0 h- E  R5 M+ D
  11249.                );setq- {/ [8 I" r8 k  h  o' X
  11250.                (ucs_2_ent (cdr (assoc 210 elist)));this function lives in ac_bonus.lsp
    8 u( Z5 w0 x% b0 P; G
  11251.                (if ewidth & ]& i2 c$ H6 b
  11252.                    (command "_.pedit" ename "_W" ewidth "_x")
    2 N+ b/ f5 [* L9 i, x$ y" c
  11253.                );if 0 L# B" d& v3 _0 Z- z' M
  11254.                (if eelevation 0 S* b, V$ g/ I( ^* P6 u) T
  11255.                    (progn6 W; {! y; ^) w% [9 E' R
  11256.                     (setq p2 (list 0.0 0.0 eelevation));setq
    2 J. I8 i+ x' {4 l3 b4 e
  11257.                     (if (equal (cdr (assoc 0 elist)) "POLYLINE")
    + j, a' \' J2 C) t  T- e; o
  11258.                         (setq p1 (list 0.0 0.0
    + g1 w$ K. y  d8 @2 M/ P% v
  11259.                                        (caddr (cdr (assoc 10 elist))), s7 {  y$ [$ y  S3 X
  11260.                                  );list
    " T- }! ~# O5 f) D! x6 G
  11261.                         );setq# e- L& q5 A3 d
  11262.                         (progn
    / o5 z& c& G2 |) }) K: [) z
  11263.                          (if (assoc 38 elist)
    / v: K; B, D! k
  11264.                              (setq p1 (list 0.0 0.0
    % o4 {, ]" V3 B- g! C$ [
  11265.                                             (cdr (assoc 38 elist))
    8 e2 G1 s. x$ Q: I5 \
  11266.                                       );list0 u- @' m. s  c; ?* m: I
  11267.                              );setq& I- B# q& b% _
  11268.                              (setq p1 '(0.0 0.0 0.0))
      }& i7 g1 A! [( L4 I, p$ P# [0 b
  11269.                          );if
    6 T0 S8 s: J/ j& `" I
  11270.                         );progn
    6 y1 m0 a' _7 P+ h6 g: R$ O$ Z
  11271.                     );if
    / D9 c# ~% u1 W. G% J" ]
  11272.                     (command "_.move" ename "" p1 p2)4 ^" O: E- q* {# }  p1 y
  11273.                    );progn then change the elevation of the polyline
    . k$ L& G* y' g  ^( S& G
  11274.                );if
      P4 R$ A: v( g) R' M& O
  11275.                (command "_.ucs" "_p")
    " Y8 k1 D" }: o; `' r* e7 j
  11276.                (setq ss-index (1+ ss-index))9 P: L( b2 Y& ?3 l+ S3 ^  `; i
  11277.              );while
    / V5 N0 j: t3 |3 Q) K' [
  11278.            );progn then polylines are in the selset# |1 O5 P: w5 \( U
  11279.          );if& }9 a- I3 h7 u0 V# `7 ?
  11280.          (if (and (= 2 (logand 2 eflag))     ; text
    / I+ x, J" p+ k6 M  I
  11281.                   (or eheight 5 D/ x. l0 G& W& z. e
  11282.                       estyle6 g$ D/ w7 D- P6 y6 {' O; o
  11283.                   );or
    6 L- T- q+ B/ v. W
  11284.              );and
    ) n; x2 C- O" i  j( V; c& o
  11285.              (progn& F. i! O# }- o9 j/ T8 A3 F: M
  11286.               (setq ss-index 0 ss-length (sslength txt_ss)): x% r; L( t9 ^$ p4 G  }7 t
  11287.               (while: U/ d6 B$ k: P( a
  11288.                 (< ss-index ss-length)
    8 S6 y! u+ P2 C0 d7 }, C) E
  11289.                 (setq elist (entget (setq ename (ssname txt_ss ss-index))))
    " L% O8 y! ^1 x" X
  11290.                 (if (numberp eheight)9 Q( ~/ ?  {8 V7 u' X$ k8 i' Q7 F' T
  11291.                     (setq elist (subst (cons 40 eheight)
    ; C9 a2 T& @) `5 m' q2 S
  11292.                                        (assoc 40 elist)
    , |) ]- _% a9 d6 i- [% t' Y" B! @
  11293.                                        elist8 p" Y1 N  G0 y) M7 \
  11294.                                 );subst9 }. w' u- g4 c. |0 c' L
  11295.                     );setq
    6 t; j( i% ~& P
  11296.                 );if
    6 l; S& |! V8 u4 b, j' d- M
  11297.                 (if (and estyle ;(not (equal estyle ""))- D+ p9 }+ R0 m+ d% |, ~. r
  11298.                          (not (equal estyle (cdr (assoc 7 elist))))
    0 U0 o4 k) V" x. ~" [5 H4 O
  11299.                     );and* Z: p0 }) ]) l6 U) J0 w
  11300.                     (progn  + e4 T) n% f. ^  R% v+ M
  11301.                      ;rk. This needs to be implemented as per mtext font issue in                                                                                                          ;    ddchprop_notes.txt 5 D6 u% h9 B& ~. g# U* @
  11302.                      ;(if (equal "MTEXT" (cdr (assoc 0 elist)))6 n- t3 U) ?$ t. I1 H; L
  11303.                      ;    (setq elist (fix_mtext_fonts estyle # C5 c7 v1 u7 f
  11304.                      ;                                 elist
    $ Y0 ~( Q3 F3 ~+ @% P1 n1 ]  h" x- v
  11305.                      ;                )
    5 a' \$ l6 D* Y3 h4 x; R. D1 u
  11306.                      ;    );setq then
    , w2 Z5 U1 s+ f* s+ b) d( g! e* c
  11307.                          (setq elist (subst (cons 7 estyle)
    2 ~" q; Q; H$ u9 c/ s
  11308.                                             (assoc 7 elist)1 @! `, j* R+ D& u  m' h( [
  11309.                                             elist; J$ h' g6 o; ]
  11310.                                       );subst
    ) y9 {" a9 E( N9 S5 y. Z5 S" A
  11311.                          );setq else- r% h0 d; l, f9 `: `7 o
  11312.                      ;);if
    - j) L' p9 M9 S$ h* I, y/ J) }
  11313.                     );progn& D5 i3 l1 _- e. d2 m% \0 A
  11314.                 );if
    # ?- A* Z6 `4 c# I' Z
  11315.                 (entmod elist)
    6 u3 h" g4 Y1 f8 A4 U. _
  11316.                 (setq ss-index (1+ ss-index)): K  d& ~' k& v8 o0 v9 w
  11317.               );while
    ; b3 F$ f3 G/ \, U
  11318.              );progn then+ B* E/ \' J; B; r, \7 [
  11319.          );if: t$ {& y* P, h
  11320. " g: P) A& Q; j$ S1 K
  11321.         (setq cmdact (getvar "cmdactive")), r- |4 ^# `! i, T/ ^/ J- k! \
  11322.         (command "_.chprop" ss "")# N+ Z! F+ W  `) g) t" h8 I
  11323.         (if (/= cmdact (getvar "cmdactive"))  ; Is CHPROP actually running?
    ' |1 u: c" A) I% {
  11324.           (progn
    ' I/ u9 b7 g  D% l
  11325.             (if ecolor
    6 ~, U3 J! \9 J$ D
  11326.                 (progn
    5 n$ q+ \2 u: F0 H) y) w
  11327.                  (if (= 0 ecolor)   (setq ecolor ;|MSG0|;"BYBLOCK")). @, @# K2 N/ @: }
  11328.                  (if (= 256 ecolor) (setq ecolor ;|MSG0|;"BYLAYER"))
    / y5 a: Y  k& n4 o+ x
  11329.                  (command "_c" ecolor)
    $ p/ _8 x! ]- C1 o
  11330.                 );progn then! G+ j, Z/ @: C+ V& [# r7 E! n; S
  11331.             )
    , M2 T, k9 H2 C) @$ ?) F  _
  11332.             (if (and lt-idx5 L3 s0 b$ H$ e( J4 i" J% I( R
  11333.                      (/= eltype ;|MSG0|;"Varies")1 U9 N; p1 D+ H8 T
  11334.                 )( l1 K) \+ n* j) c! I- Y6 z4 }. i
  11335.                 (command "_lt" eltype)/ U) a/ E9 Z# o0 X4 i8 m+ K
  11336.             )/ q. E, x/ ?3 v/ i3 I6 `" k' _
  11337.             (if (and lay-idx
    2 K, c( |) ~& i$ Q1 C9 N1 `
  11338.                      (/= elayer ;|MSG0|;"Varies")
    3 \% Z3 j, B( i$ @
  11339.                 ): |# U9 K( o: Z) P
  11340.                 (command "_la" elayer)
    0 i7 s" k+ T5 W8 e4 v/ V9 M* [' ]
  11341.             )" p2 B" ]. s0 B
  11342.             (if (and ethickness
    + h1 i; \% P0 m8 U6 d
  11343.                      (/= ethickness "")8 G4 ]# T( t; i& \7 d
  11344.                      (/= ethickness "Varies") . J9 D& F9 E$ y" Z
  11345.                 )
    7 V7 t2 }4 b# G5 F3 a4 E) S6 N0 f
  11346.                 (command "_t" ethickness)+ A4 I1 X. i1 [
  11347.             )
    # m' a, h7 }& Q" o4 h! R& L; A
  11348.             (if (and  eltscale (/= eltscale ""))
    1 r# U4 {9 r+ k! e, K1 F: I
  11349.                 (command "_lts" eltscale)
      N  ?# [& Y5 {
  11350.             );if/ {' a  z4 a! x2 T# ?) ^8 A" r
  11351.             (command "")
    ! C# E9 `4 u# |1 s, t
  11352.           )
    1 V  X! E" @7 t) [$ s' D. l
  11353.           (princ "\nProperties unchanged")  ; CHPROP didn't like our SS set4 X2 P& V$ k& M9 R% h: N
  11354.         )4 B/ @; M# p  d0 j

  11355. 8 E* Y/ V* g7 k, W6 S
  11356.       );progn then OK was picked in the dialog.
      R7 `5 F) ~9 e9 n  `
  11357.       
      |  V& L- e! R9 D5 P" n2 r& }
  11358.       ;; Fred GERBER - 25-AUG-94
    " u7 v5 d6 `& d# d7 [: |
  11359.       ;; Don't print the "Properties unchanged" message when the user cancels
    2 H! D- z3 i. f$ L9 Z- ?
  11360.       ;; the dialog because he knows that already (otherwise he would have7 }" W, N8 t0 \/ K0 ^& c5 Y
  11361.       ;; hit the "OK" button). Display the message only if CHPROP fails for
    * R8 {- z% g  E' E  y
  11362.       ;; some reason, because it is not the expected behavior of the command.
    ; v; \$ H( Y9 b) I2 S! b
  11363.       ;;
    . A6 s, n3 f3 ]: w9 v
  11364.       ;; (princ ;|DDCHPROP2_LSP_8|;"\nProperties unchanged")! c: f' R# F; y' O7 I  Q7 e
  11365.     );if7 ]3 W- L; i. u
  11366.     (princ)' G% g0 Y% P1 A) Q6 Q4 y
  11367.   );defun call_chp24 K, A8 |7 D" T4 S
  11368.   ;;3 D# c, ~$ R1 @6 \1 `
  11369.   ;; Function to set the Color text tile and swab to the current color value.# [- q  z; }" M. Z* v
  11370.   ;;
    0 L' u! }4 d+ L) w1 ]
  11371.   (defun set_col_tile()
    ( C  e9 `# R- B& G# \& _- P
  11372.     (cond3 S1 Z9 u% W+ m/ M8 u9 k( U
  11373.       ((= ecolor nil)
    4 o7 A; C' m, M: l; A: z$ v7 A
  11374.         (set_tile "t_color" "Varies")+ N8 M% D+ }, W! f3 b' B& w
  11375.         (col_tile "show_image" 0 nil)8 h9 s5 S- I0 k+ B- C
  11376.       )
    3 F/ `/ p7 T' P0 B0 r6 \: m
  11377.       ((= ecolor 0)/ V% R  a: _" K4 O; o; n
  11378.         (set_tile "t_color" "BYBLOCK")
    * R5 h9 \  m  D4 d
  11379.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white" v5 W" d' R1 R: w7 M+ P- K5 @
  11380.       )
    9 v- w0 ^; N( n; s/ B% w
  11381.       ((= ecolor 1)- r7 ?) {+ ], z( n5 [1 ]
  11382.         (set_tile "t_color" "1 red")9 P( p1 l2 ^  Q
  11383.         (col_tile "show_image" 1 nil)
    2 }6 C8 q- M, S, L1 i; b
  11384.       )
    : K4 x( p% P0 g' w# j
  11385.       ((= ecolor 2)
    & y/ I% ?- v, T+ h
  11386.         (set_tile "t_color" "2 yellow")
    + n" }$ J& J# y/ c! ^+ m: K
  11387.         (col_tile "show_image" 2 nil)$ x1 [: f6 f- K9 m
  11388.       )
    1 E# G5 \: V7 f! W) o
  11389.       ((= ecolor 3)  E3 h2 J- G; |7 n5 D. C3 b/ F
  11390.         (set_tile "t_color" "3 green")+ i! c* w0 l! r
  11391.         (col_tile "show_image" 3 nil)
    4 H5 b4 T$ \# F1 B2 [$ z
  11392.       )
    * f1 N, s3 t  _; S) `* t4 g
  11393.       ((= ecolor 4)- J3 P3 r; O3 e: P' X/ ^2 N7 _# j
  11394.         (set_tile "t_color" "4 cyan")' q7 O- i6 c* E) Q
  11395.         (col_tile "show_image" 4 nil)8 `0 j9 C, r, T3 `
  11396.       )
    7 y8 A8 i9 R3 C8 b* h& A  G
  11397.       ((= ecolor 5)
    # z  ^5 }6 d* y0 s
  11398.         (set_tile "t_color" "5 blue")
      n3 i  F2 f) @1 l
  11399.         (col_tile "show_image" 5 nil)
    ( Q( N6 W. d8 a7 b) N
  11400.       )
    0 Z& n6 A0 Q3 z% ]1 p# D9 s, _
  11401.       ((= ecolor 6)
    % w; S4 k' W' x0 c4 z# m" X: T# X
  11402.         (set_tile "t_color" "6 magenta")
    9 S. r2 m& V# e5 q
  11403.         (col_tile "show_image" 6 nil)
    + r$ I! t& Z3 g' Y0 \9 v+ c
  11404.       )5 ?( o6 n- `0 G) X& n) l
  11405.       ((= ecolor 7)
    + G# J; M" L5 t: ^
  11406.         (set_tile "t_color" "7 white")* W+ K9 e2 T1 c5 m; e1 b
  11407.         (col_tile "show_image" 7 nil)+ R$ t, _4 Q: J& n0 \- H) K3 |
  11408.       )! N& X% ^# a7 g+ H. \3 V$ F
  11409.       ;; If the color is "BYLAYER", then set the tile to: c4 J0 Q; n1 R
  11410.       ;; show it's set By layer, but also indicate the" N, ]6 g9 `) j+ r1 l
  11411.       ;; color of the layer - i.e. By layer (red)
    + Z8 C' q" Q! X' q
  11412.       ((= ecolor 256)4 o* }* w, G7 ?$ D# Y0 }8 A- x
  11413.         (set_tile "t_color" (bylayer_col))
    3 y% M0 v5 s% {
  11414.         (col_tile "show_image" cn nil). l& {0 A( ^8 O& U- e
  11415.       )
    * y. k  B6 n! u/ T4 ]5 v
  11416.       (T
    9 R( V7 i, |* ?) p7 B5 l
  11417.         (set_tile "t_color" (itoa ecolor))  ~, z. q2 ?* @+ e. \7 V" Q  w9 f
  11418.         (col_tile "show_image" ecolor nil)) ~; _" s- Y$ D  Z9 L
  11419.       )
    ( M7 W8 \) [' j, X
  11420.     ). f% C7 K, m) a
  11421.   )
    0 @+ o5 L5 Z+ P/ w. X4 o6 d7 l! h
  11422.   ;;' |  E6 P% S; F7 N& o) ^) }# U
  11423.   ;;  Function to put up the standard color dialogue." {% Q6 L7 J6 \3 H
  11424.   ;;1 r9 t3 x/ Y" ^
  11425.   (defun getcolor(/ col_def lay_clr temp_color)" k3 M- C3 g$ k, S. F5 _! j
  11426.     ;; col_def is the default color used when rq_color is called.  If ecolor
    # w! L2 R9 t, F/ I$ ?4 V/ g: F
  11427.     ;; is nil (varies) then set it to 1, else use the value of ecolor.2 G# S! W2 c6 K! w/ x) H5 d  g
  11428.     (if ecolor1 L8 V9 D4 Z( r& l5 g$ J# N
  11429.       (setq col_def ecolor)
    6 Y6 [5 q) b2 T* E
  11430.       (setq col_def 1)
    2 o$ C% M1 [" K! n$ J
  11431.     )
    4 E$ e! C2 }- Z4 B! O5 q; ]! S1 V

  11432. 4 K* Q& G) q) k, @  I
  11433.     ;; If we're working with a single layer, get its color
    + Z+ u, f! ]2 ?" C: w$ }  e* \
  11434.     ;; for use in the color swatch if the user selects color BYLAYER.
    + m+ G; _9 G. ~% h% K
  11435.     (if (/= elayer ;|MSG0|;"Varies")
    " m4 X1 N2 `. `2 x7 ^7 F  ?
  11436.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    % G" G$ t! |3 a+ X& [
  11437.       (setq lay_clr 0)
    ' g& P- \3 @9 G$ n/ ~1 j# j
  11438.     )
    : Q* z" r! V  W
  11439.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))
    ! X: N! T) r5 }9 Y& C
  11440.       (progn' o" Q, D0 |6 M3 Q6 `2 l
  11441.         (setq ecolor temp_color)& q! g8 L0 D' N0 x$ M) h% x
  11442.         (set_col_tile)
    * n9 [8 O3 V8 g+ A( o4 O7 s
  11443.         ecolor" Z% U. P1 @9 l8 ?2 ]$ q0 }
  11444.       )
    1 A- E# x$ x& [7 J) S7 X
  11445.       ecolor
    4 a5 [3 I: K! w/ A
  11446.     )  V! N- }5 y/ N5 G7 R' [
  11447.   )  O/ G$ e; p) ?% X
  11448.   ;;, L& f3 r+ d  |/ G
  11449.   ;; This function pops a dialogue box consisting of a list box, image tile,
    , U* x. q* }6 ^* A
  11450.   ;; and edit box to allow the user to select or type a linetype.  It returns1 F. ^0 p" e( A7 Q. D( f
  11451.   ;; the linetype selected.
    ( J/ L0 o0 ^" e$ C! C5 h
  11452.   ;;
    ! R3 n: {+ n  m1 }2 B4 f  K
  11453.   (defun getltype (/ old-idx ltname)7 {& ?/ ?" A0 K- ~
  11454.     ;; Initialize a dialogue from dialogue file6 a6 H) I( `0 ?) z/ w
  11455.     (if (not (new_dialog "setltype" dcl_id)) (exit))" i( X6 W/ N6 i
  11456.     (start_list "list_lt")- W" ~; _$ o/ q% M  m7 Q2 t  ]9 F
  11457.     (mapcar 'add_list ltnmlst)         ; initialize list box
    , X6 n/ t: Z9 J0 c! G0 }
  11458.     (end_list)3 w3 e7 K5 M  {; ^6 f
  11459.     (setq old-idx lt-idx)
    ; Q& b. K9 ]9 s, n* e
  11460.     ;; Show initial ltype in image tile, list box, and edit box
    + g5 K) F, p' y; [5 {+ y; Z# k
  11461.     (if (/= lt-idx nil)
    6 o# Z& G+ c8 m0 n2 p2 b1 s. C. B
  11462.         (ltlist_act (itoa lt-idx))
    1 J; W$ \( A+ K. c& ^& ?. p8 P
  11463.         (progn2 J0 s: c  `. y' N! U
  11464.          (set_tile "edit_lt" "")7 r; _! S* b" U6 Q1 G9 x
  11465.          (col_tile "show_image" 0 nil)
    ( ?3 E2 d/ @# g, X
  11466.         );progn else2 S, X3 D; U% y/ N" t
  11467.     );if
    % {, h+ V. T' @0 Z& `
  11468.     (action_tile "list_lt" "(ltlist_act $value)")  i6 M% }0 @2 O5 Y5 k
  11469.     (action_tile "edit_lt" "(ltedit_act)")7 q# A% ]: S) w  `9 g" g( I
  11470.     (action_tile "accept" "(test-ok)")! p' F4 s  N* J; X- V9 a  c0 @
  11471.     (action_tile "cancel" "(reset-lt)"), R# \* K) O# h) T' n( n. F
  11472.     (if (= (start_dialog) 1)           ; User pressed OK  f! w. [/ a$ L; c
  11473.         (cond
    , B  y2 V) V3 a4 Z. ^& Z" L6 G
  11474.          ((or (= lt-idx nil)
    ! e- ]. k  U' _0 Q+ P7 ^$ x; e3 @
  11475.               (= lt-idx (1- (length ltnmlst)))" I' _* _7 \: M
  11476.           );or
    " N: f0 l! X* r
  11477.           (set_tile "t_ltype" "Varies")/ s8 `9 L# z( {  M
  11478.           ;|MSG0|;"Varies"
    % t, j! c8 x: t, y' p8 m
  11479.          )
    # L/ L* L! I1 o. Y" y- w1 ]0 w/ s4 V
  11480.          ((= lt-idx 0)
    * l, X- B& q6 \8 S9 B" i# k' c. N9 [. h
  11481.           (set_tile "t_ltype" (bylayer_lt))
    $ b! |- S2 ^8 \1 q
  11482.            ;|MSG0|;"BYLAYER"
    7 H+ b! Q: E' x) |  Q$ {
  11483.          )
    4 d& d( S8 H& @# O; V
  11484.          ((= lt-idx 1)3 E% c% g8 ]9 {( H9 v2 m  i4 h
  11485.            (set_tile "t_ltype" "BYBLOCK")
    + P( R1 {. `1 w  I+ [+ L3 ?9 ]# d
  11486.            ;|MSG0|;"BYBLOCK"' z) D) T" _# g8 ]0 ]
  11487.          )
    5 Y2 Q- z) a% |/ X
  11488.          (T8 |- d  ?1 J. A! `/ V1 F5 o
  11489.            (set_tile "t_ltype" ltname)
    ; C: ~4 I+ C0 |2 m6 I' k* K
  11490.            ltname, @- H& m: w, H2 i
  11491.          )8 M% P, M' E# }& F- R" U
  11492.         );cond then* ~4 `! h( `! ~  w9 \+ C4 b
  11493.         eltype
    ' ]7 U* g3 d4 P$ g5 ^! V9 q( I8 A
  11494.     );if
    - R1 ~! i) y$ n9 n6 z1 I8 |" N  i  x
  11495.   );defun; j* L+ s. j. v/ \8 U% z3 c
  11496.   ;;" k0 W8 D7 w# t& r& Y5 J
  11497.   ;; Edit box entries end up here* [( m$ x& m  S3 u
  11498.   ;;
    4 y) f# Y( ^, l$ H# d
  11499.   (defun ltedit_act ( / flag)
    5 _8 v+ \. g1 e& O! M( x
  11500.     ;; If linetype name,is valid, then clear error string,
    : ~, M) m$ |  P! {; W/ v6 u
  11501.     ;; call ltlist_act function, and change focus to list box.
    1 V( P/ I( h4 V. b* a
  11502.     ;; Else print error message.0 ]. [' f* P+ u3 N0 F0 `. @2 v
  11503.     ) M8 v$ M0 r. Y0 G" U, r
  11504.     (setq ltvalue (xstrcase (get_tile "edit_lt"))). n( ^; h* t! G) H  j
  11505.     (if (or (= ltvalue ;|MSG0|;"BYLAYER")
    0 n6 K/ \% ~. ]# C4 X1 T
  11506.             (= ltvalue "BY LAYER")
    & J$ }: I4 q: f5 G4 B
  11507.         )# m8 n$ ?* b( ~7 ]) V" l. f* v
  11508.         (setq ltvalue "BYLAYER")1 f+ J7 t! m! r( Y8 Y% ~/ ]
  11509.     )
    ; k' i7 I3 e4 L0 q
  11510.     (if (or (= ltvalue ;|MSG0|;"BYBLOCK")
    % J4 n2 K2 e& R& e. |1 D0 R* p" Q" x
  11511.             (= ltvalue "BY BLOCK")
    6 F2 k1 y; S  z0 @
  11512.         )
    1 W8 {) D6 }% K, U; K, S: K
  11513.         (setq ltvalue "BYBLOCK")- b+ S6 R! T4 E: X0 [
  11514.     )4 B, ^  n0 ~( b; N$ t& @: s0 c" H& E
  11515.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    4 A# A$ y6 t5 C5 [! Q( v
  11516.         (progn) a) I2 ~3 z, n* N/ O
  11517.          (set_tile "error" "")
    5 J0 T8 P, @# q& G8 N. B; u
  11518.          (ltlist_act (itoa lt-idx))+ }7 B5 M. S' m; O
  11519.          ;(mode_tile "list_lt" 2)/ J7 a  c6 e( c. |# i+ v) i
  11520.         );progn then. i0 O  x+ |( \# ~; i9 I
  11521.         (progn
    7 C/ {5 y% ?5 d5 K
  11522.          (if (/= ltvalue "")6 H7 i, S8 S. ~# I. U
  11523.              (progn
    $ b# B8 S) q1 ~* g! @
  11524.                (set_tile "error" "Invalid linetype."). {0 A3 k# u3 j% @
  11525.                (setq flag T)
    " W7 r( v; R9 `7 j) D3 C2 \/ U
  11526.              );progn& Y% G0 h/ T; V& R
  11527.          )
    9 d0 i2 \/ P  j( j$ N5 N% T4 |
  11528.          (setq lt-idx old-idx)) P: Z* ^4 ?+ C* U
  11529.         );progn else. r5 p2 l* L" D$ C; L! @  B1 d9 x
  11530.     );if
    ! o' A; f: L1 S1 \& o+ ]
  11531.     (if (and (not flag) ;added so a return will take you out of the dialog.- j( c# E2 I# r) h- q' z
  11532.              (= $reason 1)
    - ], ]) V: D4 e
  11533.         );and
    4 C. ^7 V2 B7 ]# Q6 Z
  11534.         (done_dialog 1)
    ) Z; _, C% [( j$ U
  11535.     );if
    9 }1 \, s" y) L; o. k# [4 L
  11536.   );defun ltedit_act& _, ~/ w3 }+ z% ?/ R& C
  11537.   ;;/ P5 {2 e/ O: n& a
  11538.   ;; List selections end up here
    # A+ \9 p: q* c, r% @' }; Y0 ~
  11539.   ;;
    ; g1 U' s' t1 X: R% D% g
  11540.   (defun ltlist_act (index / dashdata)6 {4 q+ X5 l$ b1 p5 s$ F% T
  11541.     ;; Update the list box, edit box, and color tile
    & N: V4 h  T  E; s% d& z0 i# U& F
  11542.     (set_tile "error" "")5 c2 ?/ A# t. {4 N& ?' A
  11543.     (setq lt-idx (atoi index))) r* E. v" o9 r; _$ o; o: F2 `
  11544.     (setq ltname (nth lt-idx ltnmlst))
    7 e% b; ]! O2 F2 O6 w
  11545.     (setq dashdata (nth lt-idx mdashlist)). a  `3 r4 a+ \+ \) s$ ~! \( s
  11546.     (col_tile "show_image" 0 dashdata)6 X; ~  L; L% J" x" e! W
  11547.     (set_tile "list_lt" (itoa lt-idx)), f" H0 {7 e6 C; l: \' p# K
  11548.     (set_tile "edit_lt" ltname)
    , x4 u& T6 d" w( O0 \
  11549.   )
    % Z4 ]0 l6 ~+ X1 T
  11550.   ;;
    2 G2 S( g. S9 c- g2 {% ^
  11551.   ;; Reset to original linetype when cancel it selected
    4 ^' w. }/ M: m4 i: o$ b/ J# u1 A% d+ r
  11552.   ;;
    $ @/ h: _3 a" `) J4 a* c
  11553.   (defun reset-lt ()
    : L6 V1 M7 D$ Q/ c
  11554.     (setq lt-idx old-idx)" q8 L7 Y: l& M4 _2 w
  11555.     (done_dialog 0)
    0 w& h% R5 V- w4 n9 ~' B
  11556.   )) N4 q6 }0 u, `9 n. T/ ^
  11557.   ;;; I# r0 b4 W( k" _& h
  11558.   ;; This function pops a dialogue box consisting of a list box and edit box to
    ( o) G6 j5 T# Y. Z$ Y% y7 B+ F
  11559.   ;; allow the user to select or type a layer name.  It returns the layer name" O$ w7 U- H4 d, A' a8 W  C
  11560.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the
    9 {* C$ Q% o# c# h$ Q
  11561.   ;; drawing.
    7 T& h' @6 ^: r0 W( v: v+ F
  11562.   ;;
    $ e$ j) G6 P0 Z6 U4 b8 a
  11563.   (defun getlayer (/ old-idx layname on off frozth linetype colname)& x. W3 o2 {# ~/ H
  11564.     ;; Create layer list the first time the layer! A9 z/ O& u; m' p& L. }% W$ z
  11565.     ;; dialogue is called.
    ! @$ }- j* O9 w. B6 j0 P# t0 \
  11566.     (if (not lay-idx)% {; u" |& z5 `: ^
  11567.         (progn
    3 Y+ i4 t- e7 @7 i
  11568.          (makelaylists)                     ; layer list - laynmlst
    8 P) R( m6 \; t5 |& S& l" w
  11569.          ;rk! P3 u  g+ W, a" e* F( V1 ~' ?
  11570.          (setq lay-idx (getindex elayer laynmlst))5 q7 i' D' @) y/ A6 K
  11571.         );progn6 r2 q0 C% g* X1 }3 v9 g8 ?
  11572.     );if
    - G$ W! x! ?% J+ i% c( O: o5 d( ]

  11573. 9 d4 Z% ]( Z  T- Q! R5 R
  11574.     ;; Load a dialogue from dialogue file& S; I) S4 z7 ^* `0 g
  11575.     (if (not (new_dialog "setlayer" dcl_id)) (exit))# W/ T. H5 Z$ R: ]1 R) d
  11576.     (start_list "list_lay")/ ^, M! C( c' q# B+ ~* `
  11577.     (mapcar 'add_list longlist)        ; initialize list box7 W$ m' x9 f! V. ~# W5 R( z$ E: Y
  11578.     (end_list)
    4 ~( B( l' `0 m
  11579.     ;; Display current layer, show initial layer name in edit
    ) c9 W& ]0 T  t0 _
  11580.     ;; box, and highlight list box.
    4 l, t5 V5 V: a) A) I: N9 s" ^0 {
  11581.     (setq old-idx lay-idx)+ c& w% v, P- s+ w4 |  C
  11582.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))
    . W% A! `+ `7 y! E+ n0 ?% X3 O1 ]9 X
  11583.     (set_tile "cur_layer" (getvar "clayer"))
    9 t; J% k0 a& j9 l! S
  11584.     (action_tile "list_lay" "(laylist_act $value)")
    $ \; j% k# a( k, Y& B
  11585.     (action_tile "edit_lay" "(layedit_act)"), @9 x: W3 M- j9 k6 S' A
  11586.     (action_tile "accept" "(test-ok)")# P+ x- Z4 b0 [& g4 }
  11587.     (action_tile "cancel" "(reset-lay)")
    ) k" p/ ?4 G5 m
  11588.     (if (= (start_dialog) 1)           ; User pressed OK
    2 k" _2 g+ @& G; B& G! n
  11589.        (progn
    * \' Z! q& x1 v
  11590.          (if (or (= lay-idx nil); Q4 c, n: r+ R% m8 [( d& S
  11591.                  (= lay-idx (1- (length laynmlst)))
    ! @' J. ^7 B+ P8 W7 F9 \
  11592.              );or0 q" D+ d) x  Z! _
  11593.              (progn
    ' j5 P/ N) K+ w
  11594.               (setq lay-idx nil)  6 R7 T9 I/ z2 s/ D* V  p! H9 K, j
  11595.               (setq layname ;|MSG0|;"VARIES")& p; r. U" h" j7 Q$ x( _, D1 g
  11596.               (set_tile "t_layer" "Varies")3 r. ]' M; J! @. @0 w* ~  C
  11597.               (setq layname ""): Z) R; n  K7 M5 `
  11598.              );progn, x* q$ ^: H# I% O2 ^; d; O; H
  11599.              (set_tile "t_layer" layname)
    & z9 o2 J, X6 A
  11600.          );if# f0 j6 S. t( Q; u2 j
  11601.          ; If layer or ltype equals bylayer reset their tiles1 T8 l0 [6 a; D( Q8 h$ M8 j8 H$ G
  11602.          (if (= lt-idx 0)
    . @4 N. X6 I! G% X; f
  11603.              (set_tile "t_ltype" (bylayer_lt))+ H7 |. M9 }0 O$ @' \+ @/ R
  11604.          );if$ a+ w+ M, _+ H; ^, D
  11605.          (if (= ecolor 256): s6 \  e1 Z2 X
  11606.              (progn
    + W2 x# l- c1 z! q- v8 q5 l
  11607.               (set_tile "t_color" (bylayer_col))2 o2 C) h+ e! j. i! g
  11608.               (col_tile "show_image" cn nil)$ d$ |& [7 T7 ~: l
  11609.              )
    3 @$ x) ^+ L+ L8 x* J
  11610.          );if  X1 L" G9 J, m  z( T
  11611.          layname
    9 u$ s  d6 {" |# U' H8 V: g( d
  11612.        );progn
      ]8 ]2 ~3 j) M7 d7 p7 ^# ?$ S" F
  11613.        elayer
    3 T8 D7 L* ~; {  X/ K5 F( Y
  11614.     );if2 F7 T5 E- y* P
  11615.   )2 O/ m6 u( u7 ^, ?
  11616.   ;;; \" P+ x/ _7 y) `0 V
  11617.   ;; Edit box selections end up here
    + F1 N& u/ n0 ]. ]. U0 r3 R
  11618.   ;;
    & L3 J+ p9 O2 o' N
  11619.   (defun layedit_act()  l) q9 o5 K; F
  11620.     ;; Convert layer entry to upper case.  If layer name is' }# H" w# S* W% y
  11621.     ;; valid, clear error string, call (laylist_act) function,1 i5 ~1 D# w" R7 \! H( q! e
  11622.     ;; and change focus to list box.  Else print error message.
    4 x% X$ o" I9 H
  11623.     (setq layvalue (xstrcase (get_tile "edit_lay")))' X' F) F' o: |6 S: B% a
  11624.     (if (setq lay-idx (getindex layvalue laynmlst)). S( ^3 t( `, @$ Q$ r5 a
  11625.         (progn! t7 A. D- P0 I; ~+ D
  11626.          (set_tile "error" "")+ @' p' B5 y. E% E0 _& E
  11627.          (laylist_act (itoa lay-idx))7 A$ `( ~0 k0 U0 R8 X# A
  11628.         )
    ; q' f% r/ l! ~" P
  11629.         (progn6 q3 g: @0 b& b! T" a
  11630.          (set_tile "error" "Invalid layer name.")
      ]) j# @- {2 ~$ Y
  11631.          (mode_tile "edit_lay" 2)
    : `: l+ H8 i/ w' B; }& l2 @1 O# a
  11632.          (setq lay-idx old-idx)( R( o0 U$ [. V( D
  11633.         )+ w# S2 \" F" W6 z5 i* q% a
  11634.     );if
    1 C3 `& R/ y- K
  11635.   );defun
    * ?; c4 z: Q' q9 U
  11636.   ;;1 Y/ j+ l" H+ H0 O9 z  a6 f
  11637.   ;; List entry selections end up here
    ! A  g- `& C- K5 k5 q
  11638.   ;;
    * K. Q+ f3 G* {
  11639.   (defun laylist_act (index / layinfo color dashdata)
    4 }% f# e  O) b: s6 ]
  11640.     ;; Update the list box, edit box, and color tile
    & ^( {3 ]/ d* v# c
  11641.     (set_tile "error" "")
    # P! }# [" ]! K
  11642.     (setq lay-idx (atoi index))
      C: [/ i; L' e& b5 O
  11643.     (if (not (equal lay-idx (1- (length laynmlst))))1 h  \% Y' y4 [
  11644.         (progn & ~4 o9 m8 I* b+ u4 b: s! f1 q
  11645.          (setq layname (nth lay-idx laynmlst))5 S+ c" J! {% p
  11646.          (setq layinfo (tblsearch "layer" layname))1 I6 P+ u; }  m; j0 H8 P6 b
  11647.          (setq color (cdr (assoc 62 layinfo)))
    6 i0 M+ O6 s9 z% ?8 p0 l  x
  11648.          (setq color (abs color))1 W5 q' M8 f3 d7 `8 R
  11649.          (setq colname (colorname color))
    ( e8 i& {* T# D) Q5 {3 ?6 }. F) J" N$ o
  11650.          (set_tile "list_lay" (itoa lay-idx))
    2 r: N9 u. l0 \/ v1 ]! S
  11651.          (set_tile "edit_lay" layname)
    9 w9 n% u$ c4 L8 h" p
  11652.          ;(mode_tile "list_lay" 2)4 x3 k0 P- k; w9 b
  11653.         );progn then 8 e5 h# _% B: z  |. y# M$ d
  11654.         (set_tile "edit_lay" "")
    5 Q6 |2 X( ~/ f2 z! K6 g' C1 o! I
  11655.     );if
    7 M* Q3 ~5 d5 ~. o9 E! M
  11656.   );defun laylist_act
    6 P; v, B: I. X7 z7 F/ G$ s
  11657.   ;;
    ) x8 t8 ?2 O# X. I7 X. |
  11658.   ;; Reset to original layer when cancel is selected
    % b7 \) f, r9 _6 N
  11659.   ;;  g% J2 z+ S9 G0 Y$ d" `
  11660.   (defun reset-lay ()( @/ v9 T$ B$ x1 }. q4 [
  11661.     (setq lay-idx old-idx)
    % I2 B" e! X, c" t! v
  11662.     (done_dialog 0)( j2 z% }+ s# g8 t# m8 o
  11663.   )
    8 O! N* y( u3 I9 C2 G. i; y  {, m
  11664. ) [5 C3 T6 X7 d& i
  11665.   ;; Checks validity of linetype scale from edit box.  It checks to
    - z; z  n; t* r% _
  11666.   ;; see if the value equals "Varies".
    7 x# U3 Z7 o* X" ~; M4 |2 b1 Q
  11667. 0 @: k* f; U  I2 L+ F7 s
  11668.   (defun getscale (value / rval)- @% ~- G/ a& r4 Z, ~; f
  11669.     (setq value (strcase value)6 x, N; S+ {: J
  11670.            rval (distof value); p+ \# L% H5 b8 Y4 a
  11671.     );setq
    " p/ ^8 G' Y+ }1 m; \, k7 w1 X
  11672.     (if (or (= value "")' f5 M2 ~$ v2 b
  11673.             (> rval 0.0). l1 F) h6 B7 B
  11674.         )" w4 j) _/ u1 T% r% c1 O
  11675.         (progn
    7 }5 [: e4 d4 H
  11676.           (set_tile "error" "")
    6 Q) k3 ?4 r3 ^3 T) s
  11677.           (if (= value "")0 [* I: _( S: B5 f& a4 y% A# s
  11678.               (progn7 {" d+ \; ?0 q8 \$ G3 H/ }
  11679.                (set_tile "eb_ltscale" ""); X1 R- ?6 |8 z# }1 ^+ \
  11680.                (setq eltscale nil)% X/ K+ m0 c0 I3 V2 b
  11681.               );progn then; Z4 v) j4 P( c/ Q0 f/ V$ b
  11682.               (progn. q2 C) X9 e: W# w6 o
  11683.                (setq eltscale (distof value))
    6 y9 W! \6 S2 ?7 L2 V& `" O
  11684.                (set_tile "eb_ltscale" (ai_rtos eltscale))
      k+ b( n1 {! Q4 S
  11685.                eltscale* W/ \/ [+ c5 u# X( q) e1 @
  11686.               );progn else
    ( S/ [2 I' S( ]3 d) j2 q. f
  11687.           );if' k0 t2 L! j9 B: V
  11688.         );progn
    0 _1 G/ w0 j5 q. l2 l: }
  11689.         (progn0 x0 p4 G; r& N. X/ l5 R% v
  11690.          (set_tile "error" "Invalid ltscale.")
    + ?0 }/ B0 x: G% ~
  11691.          nil- U( m- ?4 B  Y
  11692.         );progn else
    7 f7 m, \5 ~; ~5 C7 s
  11693.     );if
    6 L! \$ c' u$ s; j
  11694.   );defun
    + {  y4 ^$ O) n- l
  11695.   ;;, m1 |2 m4 m" S  p: {( M6 ?
  11696.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a
    * x0 y/ \2 B  @  c( W
  11697.   ;; string can't be converted to a real, this routine checks if the first
    1 n0 J7 U( E3 L8 {$ {1 i, Q
  11698.   ;; character is "0".  It also checks to see if the value equals "Varies".
    * K# j5 e' k' q8 k( b. ?
  11699.   ;;( e2 j% }- l8 s+ o1 E: G! `( ^5 Y
  11700.   (defun getthickness (value)
    ( a  d( H% Y  l% F/ F4 l; {
  11701.     (setq value (strcase value))
    ( R0 j" l& ?3 R
  11702.     (if (or (= value "")' H+ P' h; D0 `) G7 m& B
  11703.             (distof value)
    / Q; l: s7 I+ g$ J$ K2 k& x. [
  11704.         );or
    , v" @  M; h6 F2 x5 j0 c* m
  11705.         (progn
    ) n9 W) `; p: c: `
  11706.          (set_tile "error" "")6 W3 Q+ Y) ]! Z. z* b! v
  11707.          (if (= value "")" O+ \# k% k6 [# s5 e  U0 s' L) S
  11708.              (progn) q6 {- b- h; c2 i
  11709.               (set_tile "eb_thickness" "")
    ! F9 u( N: }* {* f; {' M+ W
  11710.               (setq ethickness nil)) F% M1 E* p$ v6 J
  11711.              );progn
      o3 x. D+ q8 r7 C8 [, P1 a; C
  11712.              (progn
    & S9 ?6 r2 B7 W* e& d! F
  11713.               (setq ethickness (distof value))
    ' A/ G5 u  A8 X! ]: e
  11714.               (set_tile "eb_thickness" (ai_rtos ethickness))
    ' }; @0 K' j. H. l) }" Z$ N; g
  11715.               ethickness& t# U6 d. I( r3 k* a5 B# g
  11716.              );progn7 ?5 V# H( |/ p8 e* B  N! [0 D
  11717.          );if( u3 q0 v- f6 h! N* b
  11718.         );progn% X4 {$ Q$ \: b4 G+ e
  11719.         (progn
    ( ^, f5 U& c3 \3 }3 u
  11720.           (set_tile "error" "Invalid thickness.")' u3 O7 t. O7 y8 Q0 ]5 k6 v: \
  11721.           nil
    ' l# t4 V, W1 p. {4 P: f
  11722.         );progn
    $ t3 L" g) z; g* C$ c- Z
  11723.     );if
    ; c5 E1 r5 X$ a( O. y
  11724.   );defun : D5 Z8 p, F; P
  11725.   ;;
    " A6 R+ t& }. w/ ]
  11726.   ;; Checks validity of polyline elevation from edit box.
    ) b9 K! L! T# l7 z  X6 D) S
  11727.   ;;) t! Y$ e/ R0 n2 K6 U- E
  11728.   (defun getelevation (value)
    . x6 C% `# T& b6 ^! H- C
  11729.     (setq value (strcase value))0 A  K; ]9 T/ e
  11730.     (if (or (= value "")
    9 @1 ?. ~; n5 f: q. j
  11731.             (distof value)( l  P8 ]% D- |' p# c. w* ~
  11732.         )
    - ?  X  ?: U2 R) c
  11733.         (progn
    ' l( j& C( ?" v# H
  11734.          (set_tile "error" "")/ c3 K$ R1 ]  }, i( l) ?
  11735.          (if (= value "")4 {; X2 A# ?) L# W; ?" v
  11736.              (progn6 M4 L. q1 `7 L
  11737.               (set_tile "poly_elev" "")
    ! Z. m. L$ u! e$ w  d+ z
  11738.               (setq eelevation nil)( k0 |: H) T, y7 T+ N
  11739.              );progn7 v0 b& H" p9 ~. Z3 P$ I
  11740.              (progn( P5 D! d1 L/ v
  11741.               (setq eelevation (distof value))
    % Y! U* z. |# g' h  o; H5 Z7 J. p# E
  11742.               (set_tile "poly_elev" (ai_rtos eelevation))& Y- H; O7 u% _
  11743.               eelevation; u6 i, d9 K! E4 l, y
  11744.              );progn$ K% K# C- ~+ s. g$ h! g& X
  11745.          );if; k# L4 g4 ]7 d2 `8 s0 [# T
  11746.         );progn
    ) J0 F8 Q0 {( ^- T6 D
  11747.         (progn
    1 q" W5 Q4 x6 r) q
  11748.          (set_tile "error" "Invalid elevation.")
    ) V  N+ I  w  j: C
  11749.          nil& Y& J. n" o$ q9 |7 \2 k
  11750.         );progn# I: z# o( n5 F. k* [# d, Y/ i: ]: C
  11751.     );if+ P" P* o( Z2 R( m! i& V/ S; @& l: U
  11752.   );defun7 w/ L( Q1 i8 z& ^: D0 }
  11753.   ;;
    , y+ B- x  _9 l3 ~' O* f) L0 r
  11754.   ;; Checks validity of polyline width from edit box.
    6 d; [( _+ T* T2 I$ d2 V
  11755.   ;;+ ~4 V: {& k. ~0 B" Q( o; [. F7 B8 j
  11756.   (defun getwidth (value / rval)
    : A% Y8 {9 M  d
  11757.     (setq value (strcase value)3 \  M# w. c3 o9 p( }
  11758.            rval (distof value)
    & e' s$ y, Z7 Y& n% _3 A' {
  11759.     )
    % O) c5 E9 t' A
  11760.     (if (or (= value "")$ i- A1 d/ |, @4 g0 W) r7 N6 ?
  11761.             (>= rval 0.0)0 a7 O. m% Q" o9 c4 E3 u3 Z
  11762.         )& h: s2 L8 L2 E- T
  11763.         (progn
    5 ~3 R# c" o3 u! y3 w- Q6 T
  11764.          (set_tile "error" "")( B/ w6 Z# H$ M8 e
  11765.          (if (= value "")
    / A+ Q2 c# j1 A- F6 N: b1 a
  11766.              (progn, ]+ Y* z! G% R
  11767.               (set_tile "poly_wid" "")" q8 \8 i; b( c. r
  11768.               (setq ewidth nil)
    ! [3 Y/ r* x4 o' z/ ?6 z8 f9 }: w
  11769.              );progn8 c. W. r" C$ t4 O# E
  11770.              (progn
    / O6 r# n+ D  v) \7 G
  11771.               (setq ewidth (distof value))
    - F7 J) o1 G  z5 x1 X. v
  11772.               (set_tile "poly_wid" (ai_rtos ewidth)), S6 P# [6 `+ Y8 a9 {" ?5 D
  11773.               ;width
    5 \- g6 f  c; ^) ]6 V6 w. z0 ~
  11774.              );progn
    5 ~9 @# O: G; N; _& P
  11775.          );if
    4 t( o& Y% U7 n# b
  11776.         );progn3 J9 F3 A' h( O* Y2 x7 m9 H6 f; L
  11777.         (progn
    ' c6 Z1 @) R# z( G1 |" G
  11778.          (set_tile "error" "Invalid width."), D# v  W  x- |/ k; p" s/ U
  11779.          ;(setq ewidth nil), `3 w* [$ u; b( C
  11780.          nil
    ( T/ j( |3 C& G) ?% s
  11781.         );progn
    6 u1 ?; C, f. y
  11782.     );if
    7 P* f" ~! R  a1 k& c- m$ t
  11783.   );defun
    8 ]% O. I& z8 a! j* k4 D+ b, n
  11784.   ;;1 F, M" \) t) \6 ?' p9 `2 `
  11785.   ;; Checks validity of text height from edit box.1 _$ y' F& A' Q# ]8 S
  11786.   ;;
    1 ?2 p4 W( W0 `3 P/ k7 t5 E
  11787.   (defun getheight (value / rval)
    % o* a/ `8 m! t$ T7 Y+ g
  11788.     (setq value (strcase value)5 g" @; W6 |# x7 m/ f. K# E. R. l, V
  11789.            rval (distof value)
    ; l% h4 r- c6 I
  11790.     )
    - r( r4 o- H2 v5 K. |; r4 y  m
  11791.     (if (or (= value "")
    4 W, E# p/ l4 f$ _
  11792.             (> rval 0.0)
    : Q& D6 ]# K/ Q/ M( Q
  11793.         )
    6 k- h9 G( B3 `/ d) b3 v
  11794.         (progn
    ! q' S# R+ p1 D
  11795.          (set_tile "error" "")
    0 e. i0 C8 m1 i6 y- k- i( `$ n
  11796.          (if (= value "")
    " B4 \0 h2 T, Y" E
  11797.              (progn" n2 N: g) V- E9 l7 ~, ~
  11798.               (set_tile "text_hgt" "")) y. K7 {; H; k6 \+ K. G
  11799.               (setq eheight nil); p: o+ A! e8 M* d
  11800.              );progn0 M) p4 U0 E2 a/ _3 ~7 D
  11801.              (progn
    " Y$ w- i! f9 K; n9 G: U# G
  11802.               (setq eheight (distof value))6 c+ P  d8 F" f( e' R- S
  11803.               (set_tile "text_hgt" (ai_rtos eheight))
    . ?2 F, h/ \( m; W" Z
  11804.               eheight  U3 b+ r* \( n/ _2 n
  11805.              );progn' L& u( i- u& }, h6 z2 \/ J4 H
  11806.          );if. r5 n( [1 h2 z' o) S8 e
  11807.         );progn
    6 r2 Y& ?8 b4 l# y+ e
  11808.         (progn
    ; n2 F/ ^. z+ w6 i
  11809.          (set_tile "error" "Invalid height.")
    ' f. A1 H5 }& A7 m
  11810.          nil
    4 U; [* y+ f) t' }- T
  11811.         );progn
    # i5 W. p1 K3 k5 m$ X
  11812.     );if
    . J6 b5 U* L- G* a" g
  11813.   );defun/ J7 J8 I3 B$ A% X: C: z( J

  11814. . G0 q9 t- Q' w3 \2 d, `; U
  11815.   (defun getstyle (value lst / rval)
    / a" `0 _* \7 k9 @* R4 M5 E9 D& w
  11816.     ;(setq value (strcase value))- _- _# J  m+ D: [- H
  11817.     (set_tile "error" "")
      k3 @( k: g3 ~/ R5 M) m
  11818.     (setq estyle (nth (atoi value) lst))
    + @, D* y; H% U" P, N7 X( `
  11819.     (if (equal estyle "")( b* t, o( Z+ U: `& d
  11820.         (setq estyle nil)
    # W. f5 c. e+ g) |% u  k
  11821.     );if7 W, p0 A5 I+ b& K+ ^- @. F
  11822. ( C) [0 l6 Y5 A5 R" A$ k* F
  11823.   );defun getstyle
    0 g2 _, w2 l& B. E4 z/ x5 ~3 V

  11824. 2 U: t* U$ l' A
  11825.   ;;8 a' {& P" p# J7 s6 ]
  11826.   ;; This function make a list called laynmlst which consists of all the layer" E. g2 A+ M' G0 Y1 Z9 m
  11827.   ;; names in the drawing.  It also creates a list called longlist which
    9 A* s8 S9 l+ W
  11828.   ;; consists of strings which contain the layer name, color, linetype, etc.
    ) }& a5 E, G) F0 }% z* U
  11829.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    - b; R9 P- O1 |; m
  11830.   ;; same.
    ) D; [# k' t9 Z- `0 \% P
  11831.   ;;$ ?5 @1 O  G3 F1 t% O" a+ N
  11832.   (defun makelaylists (/ layname onoff frozth color linetype lock vpf vpn ss cvpname
    0 H: y! q% a. S$ q# [( d) ~  f
  11833.                          xdlist vpldata sortlist name templist bit-70" n& F6 H- Y: Q
  11834.                          layer_number" n. h4 s9 P! x2 r4 H
  11835.                       ): {4 _2 |+ m: r8 ~
  11836.     (if (= (setq tilemode (getvar "tilemode")) 0). O* @8 O9 v0 D; \
  11837.       (progn
    % l" o. {; g. m3 q" S
  11838.         (setq ss (ssget "_x" (list (cons 0 "VIEWPORT")
    * O1 `7 N5 H) j
  11839.                                   (cons 69 (getvar "CVPORT")). J9 }2 v3 `1 n
  11840.                             )
    8 ]& Y6 B& c7 T7 E# O
  11841.                  )! `/ H, z' Y8 W# k; w, y: s
  11842.         )
    $ i& K+ G8 q/ f. |7 G
  11843.         (setq cvpname (ssname ss 0))
    . A8 s. j/ ~4 F3 M& ]& f9 G5 i4 j
  11844.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))% ^: Z7 ^1 Z( w8 k) y
  11845.         (setq vpldata (cdadr xdlist))
      s# U5 i# K! [: U5 Y
  11846.       )8 u+ p& g# N0 n+ j
  11847.     )
    $ R! R5 ^+ F3 {7 d$ f' Y
  11848.     (setq sortlist nil)
    . x! \1 [9 n# q% a/ \
  11849.     (setq templist (tblnext "LAYER" T))
    1 j/ _9 h, z- k6 P! t
  11850.     (setq layer_number 1)
    2 P, t1 G# l3 _% i
  11851.     (while templist6 X# Z3 s6 ^& a
  11852.       (if (not (equal 16 (logand 16 (cdr (assoc 70 templist)))))
    ' B) j) @+ T2 d3 A# `  k  _
  11853.           (progn  7 w( T. g; k% W2 e4 e. F
  11854.            (setq name (cdr (assoc 2 templist)))/ ~" D' r5 a$ g) k8 T6 h5 h
  11855.            (setq sortlist (cons name sortlist))1 ~* S& U! U# M
  11856.            ;; Not dead message...- q* M: J  }* W( n
  11857.            (setq layer_number (1+ layer_number))2 a) o( W: O1 ~4 M' t
  11858.           );progn1 Y- j7 c; _" O2 W0 \+ M8 w
  11859.       );if1 s+ g" P  r: Z4 S
  11860.       (setq templist (tblnext "LAYER"))
    $ [8 m. z9 E9 r) {- h! s
  11861.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))" ]7 @( J; Y' X# R! I  r" w4 m3 b
  11862.           (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
      g2 Y) T) [5 p% N" v6 P/ k
  11863.       );if. s4 Y; T# P  H6 M6 k
  11864.     )
    1 G: Z6 q+ N5 J' o4 s; \
  11865.     (set_tile "error" "")
    - m* Y2 g4 S" Z4 \
  11866.     (if (>= (getvar "maxsort") (length sortlist))
    ' A: k9 |. D/ X: O( Z. u0 x
  11867.       (progn) l. a; d! h! K3 r# G
  11868.         (if (> layer_number 50)0 U( Q5 l* S7 o
  11869.           (set_tile "error" "Sorting...")
    * m' E$ `( q$ a# K
  11870.         )
    8 }6 ~; j! N3 e! E6 D- C8 B
  11871.         (setq sortlist (acad_strlsort sortlist))
    8 b, ]% }/ a  `# E( d& d
  11872.       )/ N8 Y% w6 w# r2 r
  11873.       (setq sortlist (reverse sortlist))  n  V; K7 C" [- }6 ^6 K* u
  11874.     )5 M" b4 z3 l9 U0 T
  11875.     (set_tile "error" "")& N1 e( P; ^5 q4 E7 L$ R
  11876.     (setq laynmlst sortlist)
      T" b2 J2 p" O; n
  11877.     ;rk ! w* P5 g9 f% y7 V
  11878.     (setq laynmlst (append laynmlst (list "")))     
    ( n- f% P! l; {. Q% {9 |1 e' y, m
  11879. & J6 |6 _' D  [, j+ u7 P
  11880.     (setq longlist nil)/ k$ \, ~' n. m9 ~' M0 u
  11881.     (setq layname (car sortlist))
    # B# j. w" w0 D0 Y  J
  11882.     (setq layer_number 1)
    " T# f! ~/ v9 }4 Z6 s) U2 s' Y
  11883.     (while layname* ?* G- ^4 m2 d, M. }' b
  11884.       (if (= (/ layer_number 50.0) % c+ O7 r( T0 f1 ^; R
  11885.              (fix (/ layer_number 50.0))7 u2 C# k# I/ j3 C) J' }. T/ G
  11886.           )7 I/ h% N2 P7 c  g
  11887.           (set_tile "error" (strcat "Analyzing..." (itoa layer_number)))
    + e7 a) N; Q! R7 O7 t
  11888.       );if
    # W  B* _; T! C: f1 D: ^
  11889.       (setq layer_number (1+ layer_number))
    7 {% @, r# A* m
  11890.       (setq laylist (tblsearch "LAYER" layname))4 G: s6 \7 J% A2 ~/ x  w. J
  11891.       (setq color (cdr (assoc 62 laylist)))3 H; v0 S8 D' c' W- j- R
  11892.       (if (minusp color)5 ~( Q# _" C  B, d, U
  11893.         (setq onoff ".")
    ( f5 p3 b2 i8 [
  11894.         (setq onoff "On")+ s% u! I6 V' @9 a. S% E4 ^) w, ?: c  ^
  11895.       )  v- f5 N$ ^; T- D  \0 R# ?$ ^8 t
  11896.       (setq color (abs color))8 P# O& R8 q5 A0 B5 X) r% R
  11897.       (setq colname (colorname color))
    4 z- O3 g* N1 E0 H; T7 G- Z
  11898.       (setq bit-70 (cdr (assoc 70 laylist)))
    2 G6 Y, r% ~( h6 E/ K; }
  11899.       (if (= (logand bit-70 1) 1)
    ; W' U# L4 w. ]) h
  11900.         (setq frozth "F" fchk laylist)' k) F: l, l( P: {" e
  11901.         (setq frozth ".")! _, n* _+ n) H# C$ W
  11902.       )
    ) w9 F& S' u8 r
  11903.       (if (= (logand bit-70 2) 2)! {3 \: e* \5 F/ L: B4 D" _
  11904.         (setq vpn "N")
    & ]; i/ O1 G" J2 n& D
  11905.         (setq vpn ".")
    8 p, ]7 @* M2 D
  11906.       )2 ^* b1 t% [" e
  11907.       (if (= (logand bit-70 4) 4)4 S8 D; A: d3 r# E; V" C% _6 E
  11908.         (setq lock "L")
    2 k" y# T( }1 _
  11909.         (setq lock ".")
    8 W. P6 {! o1 N: `3 b4 e& z
  11910.       )( R/ u7 `) T$ H7 R4 @! L" a  J3 g
  11911.       (setq linetype (cdr (assoc 6 laylist)))( |" s- M! G+ }4 D
  11912.       (setq layname (substr layname 1 31))
    + `& ^1 b1 P( ]
  11913.       (if (= tilemode 0)  ]+ F# I* [; z- \. J
  11914.         (progn! `/ v: @8 ^% q$ A% [
  11915.           (if (member (cons 1003 layname) vpldata)
    / H- K# ]6 R: Q/ f( `* ^
  11916.             (setq vpf "C")& s& d% t4 r. U1 t. ^/ \0 M2 P9 @
  11917.             (setq vpf ".")
    ! E% Y: x: T, P1 {
  11918.           )
    * H. z# ]- J' Q$ S
  11919.         )5 T  [5 c% J( c5 ~
  11920.         (setq vpf "."), V2 P9 x( v$ i; h4 M
  11921.       ), y5 k- L. E+ F* s, R% p5 z8 S
  11922.       (setq ltabstr (strcat layname "\t"  x, L. ]# E- {; `# }& a
  11923.                               onoff "\t"
    & L7 ^) N' b- c& [% h
  11924.                              frozth "\t"! E6 f! g7 ~- h$ u
  11925.                                lock "\t". M0 z/ o; t& ]
  11926.                                 vpf "\t"
    5 {2 q* q  E# V9 m; i# }
  11927.                                 vpn "\t"
    ( `! B. ?0 N- w% `
  11928.                             colname "\t"
    ! a& c# {& u3 X4 G
  11929.                            linetype+ U" r! x' |! ^5 {2 P) O9 ^& S* ]
  11930.                     )7 N8 z! H2 u  {  ?! H5 E9 e
  11931.       ). ~% F" N) M; }4 i4 P- J
  11932.       (setq longlist (append longlist (list ltabstr)))
    % p1 o9 G; Q5 z8 k
  11933.       (setq sortlist (cdr sortlist))
      T! s: m3 i; g" y- [( ~
  11934.       (setq layname (car sortlist))1 ?& W* j' Z4 `8 Q- m" F
  11935.     );while
    : r4 x5 [2 q0 K" ?% d2 c9 F$ H6 Y6 t
  11936.     (setq longlist (append longlist (list "")))$ G2 e: F0 }7 {. H$ `
  11937.     (set_tile "error" "")( E$ Q& P# J; ^2 j% p
  11938.   )
    ! O, p' p4 K7 J9 o+ f6 C* z8 K+ ?+ g' h
  11939.   ;;
    / r) k9 S6 l! X+ F4 V! c
  11940.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of
    % j9 k& o' y; K6 C$ G# c  u# d
  11941.   ;; linetype names read from the symbol table.  Mdashlist is list consisting7 T- A7 p0 q) D6 _3 K6 J. x" e
  11942.   ;; of lists which define the linetype pattern - numbers that indicate dots,
    & J! _0 J$ {$ @( W" e
  11943.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    + f6 H4 p- x1 b- A' Z; ^
  11944.   ;; order of names in ltnmlst.
    8 e+ `# c: N1 N' h/ ^+ P! j
  11945.   ;;
    7 k1 H8 r+ s$ @% Y* ?2 W4 [
  11946.   (defun makeltlists (/ ltlist ltname)$ o4 @- i" |! L3 W' b& }% H) c6 P
  11947.     (setq mdashlist nil)7 H( t4 ]% C- ?2 R
  11948.     (setq ltlist (tblnext "LTYPE" T))
    8 B2 }, S: p0 Y
  11949.     (setq ltname (cdr (assoc 2 ltlist)))
    3 _3 ]8 w8 W. i: h& M+ ^* t
  11950.     (setq ltnmlst (list ltname))* C1 b; G2 d1 L1 s: [$ v) d6 c( V- z# t
  11951.     (while (setq ltlist (tblnext "LTYPE"))/ S1 H  H5 Q% ^2 N$ _4 K3 \
  11952.      (if (not (equal 16 (logand 16 (cdr (assoc 70 ltlist)))))+ k( y$ K# B% ]0 U+ d& E" w4 e
  11953.          (progn ) H9 x% ^* p& h9 U: T
  11954.           (setq ltname (cdr (assoc 2 ltlist)))* P: W- i- {# X
  11955.           (setq ltnmlst (append ltnmlst (list ltname)))9 v# H1 p' {$ C/ \+ v
  11956.          );progn8 k# A5 i: i' a1 K
  11957.      );if
    , x5 Q$ g- C( j- Q
  11958.     );while
    ) q( N/ c% X, b/ j5 o. J
  11959.     (setq ltnmlst (acad_strlsort ltnmlst))
    9 P0 W* w5 g/ |+ E% ?5 o% F# t
  11960.     (setq ltnmlst (append ltnmlst (list "")));add by rk : b' y! T. A) ~+ K
  11961.     (foreach ltname ltnmlst" q% }2 b5 Z7 ?" ?
  11962.       (setq ltlist (tblsearch "LTYPE" ltname))9 o9 E! Y/ k) |* u5 v
  11963.       (if (= ltname "CONTINUOUS")
      b& n7 T  @6 ^" V" H, }
  11964.         (setq mdashlist (append mdashlist (list "CONT")))8 B6 X6 F7 P- v
  11965.         (setq mdashlist
    , ^& T# Y0 S8 Y* Q
  11966.             (append mdashlist (list (add-mdash ltlist)))  S: ?2 l3 i; y: S/ A; Z8 {8 V
  11967.         )
    ' G& r) @2 f4 |1 j- l) ~
  11968.       )
    9 K( k5 i5 q: h: |! N
  11969.     )9 o: T- y. ~- y) u4 D: y- Z
  11970.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    1 |% t1 I3 k7 B" Y, U/ w
  11971.     (setq mdashlist  (cons nil mdashlist))1 m% I: E% e  h, O0 G5 u" v' |9 g
  11972.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    + r  D# k0 f4 l$ O' P/ }, o
  11973.     (setq mdashlist  (cons nil mdashlist))' B1 x1 h  d; h2 x
  11974.   )9 g9 o- n4 _. H6 s+ }, v+ V
  11975.   ;;0 i+ u! p; u1 P" P5 ]! R
  11976.   ;; Get all the group code 49 values for a linetype and put them in a list
    : W3 s9 Y: s/ x- L) }
  11977.   ;; (pen-up, pen-down info)
    + m% t8 A9 k% h
  11978.   ;;
    6 l0 p, K. Y6 P& h( B
  11979.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize). @6 D& Q. ]8 G: s0 k$ e8 e1 X
  11980.     (setq dashlist nil)
    ) f% @: Y3 d. Y3 f* Q
  11981.     (while (setq assoclist (car ltlist1)). C$ L! n+ {! p# b# `/ F
  11982.       (if (= (car assoclist) 49)
    - I, y+ |: n1 ?+ N4 I
  11983.         (progn/ {& y$ U3 a+ F. e$ p
  11984.           (setq dashsize (cdr assoclist))
    6 A8 j0 i6 h( S  K  n* g% _/ c( w
  11985.           (setq dashlist (cons dashsize dashlist)), v; U8 e; M% {/ P5 S4 z4 e) Q% @" Y
  11986.         )! O) x/ j6 r" Y
  11987.       )
    ' \3 c; `( B, u
  11988.       (setq ltlist1 (cdr ltlist1)): R7 ~6 ^2 m# I- ?- d5 |+ j4 x5 ^
  11989.     )$ k8 Z# _7 j8 o7 l8 Q
  11990.     (setq dashlist (reverse dashlist))* B1 I3 b# m# _% S4 P/ Y
  11991.   )0 x2 g' O' L1 \6 n+ x
  11992.   ;;% t4 ^1 }1 ?9 b  U( G% u' D" M6 G8 b
  11993.   ;; Color a tile, draw linetype, and draw a border around it* S, W2 J5 L* f$ B" T) S
  11994.   ;;: f0 P/ e8 c, r+ {7 W2 P
  11995.   (defun col_tile (tile color patlist / x y)/ B/ U2 L/ z. S) ?
  11996.     (setq x (dimx_tile tile))' p' \2 ^, i9 U3 q
  11997.     (setq y (dimy_tile tile))5 N+ N/ c1 e+ N" |: q
  11998.     (start_image tile)
      \/ x3 `1 L; f; g
  11999.     (fill_image 0 0 x y color)" k1 _) {6 `2 \: `  h
  12000.     (if (= color 7)+ s- @9 e  v) f6 D
  12001.       (progn
    & Q# f4 o- s8 ^2 P- Y
  12002.         (if patlist (drawpattern x (/ y 2) patlist 0))
    " |! F* [2 G8 R: c7 h
  12003.         (tile_rect 0 0 x y 0)
    ; y8 s% f# g9 P) o5 x
  12004.       )+ G1 p) o0 f! }. p/ p# v  R, n
  12005.       (progn+ y: |5 u+ W9 n. ]! P' M
  12006.         (if patlist (drawpattern x (/ y 2) patlist 7))- }1 d* L& M) L5 P/ W
  12007.         (tile_rect 0 0 x y 7)9 J6 T3 h( q* h  c% _% t5 s1 E
  12008.       )
    - h% O& r; U6 g( O
  12009.     )3 p. @( k7 U  i1 j
  12010.     (end_image)
    , p) w' n& D' t
  12011.   )3 D+ c$ R# N3 {8 y; S
  12012.   ;;9 {8 T% u, }2 r( F, {4 f6 i
  12013.   ;; Draw a border around a tile0 z: {. n1 D. @& P$ `% x& h
  12014.   ;;/ ]& N) {7 q  w) X
  12015.   (defun tile_rect (x1 y1 x2 y2 color)- ~# Y* v" D4 k2 Y6 o0 z9 m" V$ ]& ?! T
  12016.     (setq x2 (- x2 1))7 U# q. Q4 D4 C, f( \. m
  12017.     (setq y2 (- y2 1))- b4 [) O: f$ {7 L! z) K
  12018.     (vector_image x1 y1 x2 y1 color); n8 \+ S, ?/ s/ p( P+ N
  12019.     (vector_image x2 y1 x2 y2 color)
    0 _$ V" `8 Z0 B: b+ t- Z
  12020.     (vector_image x2 y2 x1 y2 color)4 K+ q+ a4 W' x% |7 P" A' B) {
  12021.     (vector_image x1 y2 x1 y1 color)& s6 j6 f- a: s7 j  l! }& {" j
  12022.   )8 X/ m  k( F! m9 r3 ^$ x2 V
  12023.   ;;( M1 n8 C( y" I' ^
  12024.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image1 N, g; I6 Q1 Z7 y8 y" T5 v! A8 T
  12025.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a- t9 K, W- {/ c1 v" K6 z
  12026.   ;; list of numbers that define the linetype, and color is the color of the0 K" k5 Z9 s2 Y( B: `; Q
  12027.   ;; tile.
    ' w( b: N5 S: y  M8 b9 ?- w1 b
  12028.   ;;: o# T$ B8 H! v, O+ Q" c
  12029.   (defun drawpattern (boxlength y2 pattern color / x1 x20 D7 f) l9 g; E. U7 w
  12030.                       patlist dash). |" r0 m/ ~! B, ]1 b  R! B
  12031.     (setq x1 0 x2 0)9 @$ s1 @) E0 f* t
  12032.     (setq patlist pattern)
    ' O. H" G( |! E3 @0 m
  12033.     (setq fx 30)
    5 @" u( Y6 l# w- u% H, k! L
  12034.     (if (= patlist "CONT")
    ) @6 I" b) ?+ D& L6 R+ R7 c9 h
  12035.       (progn
    0 ]5 J2 O7 }3 X% s8 Z
  12036.         (setq dash boxlength)
    # ?2 u% d% ?6 I; ^1 U
  12037.         (vi)4 A  \5 y* a, @+ r: d
  12038.         (setq x1 boxlength)1 y% z  |2 }, L) n( k
  12039.       )
    2 ^5 m6 Y3 p# q8 |( m/ F, l
  12040.       (foreach dash patlist
    . ]2 ^: ?! y8 f9 r! z0 A8 Y
  12041.         (if (> (abs dash) 2.5)
    8 ^5 E' I, [- @+ o  o6 O" F; Y  i* W
  12042.           (setq fx 2)
    + u4 @  b! o+ b) G
  12043.         )9 B" @# O9 L& \, u( \( S
  12044.       )
    9 G( ?! u! z4 v5 v1 ?* `/ T
  12045.     )
    , x& K' b  f* j! t" U5 N$ }3 i4 E
  12046.     (while (< x1 boxlength)
    ( _3 z% m+ l: q0 y- ^
  12047.       (if (setq dash (car patlist))
      o2 c( N) b! H+ ?/ a/ l0 l2 Y5 w
  12048.         (progn
    . ?: X& ?' i2 U) p) ]
  12049.           (setq dash (fix (* fx dash)))
    7 N7 R7 J9 V  p& Z+ }
  12050.           (cond  |- r" k8 S! i5 N- I, C
  12051.             ((= dash 0)
    4 i% w# M3 |1 x# E3 Y) T& c9 N
  12052.               (setq dash 1)' l' L) _4 Y0 K4 g( m# f
  12053.               (vi)
    $ L  X8 H- z' D8 w
  12054.             )
    $ z) L1 t! v" {; O  N0 z
  12055.             ((> dash 0)  `4 Q5 _7 I" p" ^
  12056.               (vi)! z+ m9 t# I; |7 l( R
  12057.             )
    + T& U+ s; p4 `" _6 T% Q
  12058.             (T
    / |4 F2 B$ X- l% P6 |6 F
  12059.               (if (< (abs dash) 2) (setq dash 2)); A+ z1 |6 O* E6 E! U& o
  12060.               (setq x2 (+ x2 (abs dash)))
    2 b. V& N' B0 w& J4 z
  12061.             )9 L! z' V8 w% ]0 C2 C
  12062.           )
    - \" ?  a& r3 j( a
  12063.           (setq patlist (cdr patlist))" C5 E! F/ G) z  Y+ F0 S
  12064.           (setq x1 x2)
    . N6 g: J: D9 p7 Q
  12065.         ); f2 X8 g( E' J6 z% m2 U/ E. s2 V
  12066.         (setq patlist pattern). y% c- n' D9 \1 P* e1 P
  12067.       )1 J0 \$ o& [' l. B
  12068.     )' a- E; j+ B3 A2 v2 [+ @
  12069.   )
    " u1 Z( M$ T. a/ |+ m  }1 G" _
  12070.   ;;
    4 }* y, c! C1 e' }' ]
  12071.   ;; Draw a dash or dot in image tile! r8 B  g3 _3 H& x2 h4 J# J
  12072.   ;;; p2 t" c% ^/ {! N; U% u- H7 z  r
  12073.   (defun vi ()% o+ r7 A4 ]& p0 z% M1 u
  12074.     (setq x2 (+ x2 dash))+ E. c2 o% T6 D+ w' M/ V$ b
  12075.     (vector_image x1 y2 x2 y2 color)
    1 s0 p% g' G& ~; T& X
  12076.   )* H5 [; n$ r, k* l& G# L, ~
  12077. & T! {# ~1 N! G
  12078.   ;; This function takes a selection and returns a list of the color,
    / f" |' {/ g# @
  12079.   ;; linetype, layer, linetype scale, and thickness properties that8 C: ^9 p6 [% {0 X
  12080.   ;; are common to every entities in the selection set - (color9 N7 g& I* @9 o4 g* |
  12081.   ;; linetype layer thickness).  If all entities do not share the same
    0 Y$ R, ^+ n) r  M; M
  12082.   ;; property value it returns "Varies" in place of the property
    7 ]7 }& w' h7 P( g0 y9 ~& T8 B
  12083.   ;; value.  i.e.  ("BYLAYER" "DASHED" "Varies" 0)
    ; h5 T) i$ F& B- u/ v! J
  12084.   ;; The last item in the return list is an integer flag for the
    2 N! B5 b( ~; n* W1 l, v
  12085.   ;; homegenity of the selection-set object types.
    , _% C& I) ^7 @+ s5 U* s
  12086.   ;;   1 = All polylines
    6 }2 K/ B1 P5 C& n; u
  12087.   ;;   2 = All text or mtext or attdef, or a combination of the three
    0 x: C3 v0 H3 \8 R6 ?  i$ Q$ D
  12088.   ;;  -1 = Any other mix of objects: N; F; _" e; \  z

  12089. 5 O0 j# z& U' ~
  12090.   (defun getprops (selset / sslen elist color ltype layer ltscale thickness
      s* |7 P" a! ]% F7 @
  12091.                           width elevation height go ctr ( T  B$ |- @$ v
  12092.                           eflag $ r9 {% c. a$ j. K9 X' b! D1 `
  12093.                           etype temp 7 Z2 M$ I0 Q" ]9 s- h
  12094.                           txt_ss     ;;;;rk 11:24 AM 1/30/97+ o: f6 J8 n5 |$ [) s% g, r, n  F  t
  12095.                           tmp ! U6 u+ G6 m4 ^5 y% m
  12096.                           poly_ss     |' l& v) x% d- X$ d2 m$ j
  12097.                           style5 `+ W1 Q  c3 o' e; k# N- z
  12098.                   )
    % ]8 b/ ?- F, i
  12099. # A) b3 I; r6 }, Q0 \0 @# ^

  12100. 4 [8 B( u$ z6 F
  12101.     (setq     sslen (sslength selset)
    $ H: |3 P9 Z  y6 W4 N* J
  12102.               elist (entget (ssname selset 0))  q$ ]/ @7 C$ y% L1 e
  12103.               etype (strcase (cdr (assoc 0 elist)))  `% |3 x8 Y3 H9 L
  12104.               color (cdr (assoc 62 elist))
    ( H% g) g# O- M/ d
  12105.               ltype (cdr (assoc 6 elist))
    , V1 E0 y" T+ Y( [* _
  12106.               layer (cdr (assoc 8 elist)): H( f1 T: U! I1 Q
  12107.           thickness (cdr (assoc 39 elist))4 T* \2 M1 X5 m5 C
  12108.             ltscale (cdr (assoc 48 elist))" C; q: e5 i% `* g9 a* F" o
  12109.     );setq
    2 `0 Z1 D' ~, Z4 U. S
  12110. 1 H& @) C" G& n' X/ w- D
  12111.     (if (not color)     (setq color 256))% W; p* @* S+ J
  12112.     (if (not ltype)     (setq ltype "BYLAYER"))0 p: Y% n2 s) n; q
  12113.     (if (not thickness) (setq thickness 0))
    : f  N! l# n  M/ g
  12114.     (if (not ltscale)   (setq ltscale 1))
    ! }& Z4 G! J5 z* B. {) k

  12115. 5 L% V" t0 b1 s0 A
  12116.     (if (not width)     (setq width ""))8 |# I' {: C% z; ]9 r& m1 P( z5 f
  12117.     (if (not elevation) (setq elevation ""))$ c* U* g0 b' Y; s
  12118.     (if (not height)    (setq height ""))3 c- P0 j0 E9 g! B) o. E

  12119. $ q* Y) e0 V4 R
  12120.     (setq      go T 7 @0 j  o# o$ z
  12121.           chk-col T : `2 I, X" c% `
  12122.            chk-lt T 8 ~4 V+ s* u. K2 [8 y3 Z
  12123.           chk-lay T
    . M+ j+ C3 D, F6 ?6 l) s. L+ D+ K
  12124.           chk-lts T
    4 V! v0 ?8 P( |3 B) [! d
  12125.            chk-th T 0 W9 {! L: Q# B6 P; T6 f$ X: P
  12126.               ctr 0
    " G2 Z( A, Y2 b: m+ i9 x
  12127.     );setq
    1 C1 \9 ], [# I3 j' |. q. i
  12128. 4 I" M2 V3 z3 h. z
  12129.     ;; Page through the selection set.  When a property
    1 n  D$ q3 i" a- D7 g" D5 V
  12130.     ;; does not match, stop checking for that property.
    0 L8 P& a  x$ A# ~; L
  12131.     ;; When the selection set is not homogenous, stop checking.
    , ~% c, I5 Y* e. B+ h
  12132.     ;; If all properties vary and the set is not a type 1
    2 \* j, A4 I/ I% j1 d
  12133.     ;; (polyline) or type 2 (attdef/text/mtext) set, stop paging.
    0 q. o: L& c& ]3 @" {

  12134. 2 T2 ^( V2 M: ~
  12135.     ;Lets set the eflag so we know if the selection set includes any , t( ^+ |9 r2 m% P
  12136.     ;combination of polylines, lwpolylines, text, mtext or attdefs.
    $ Q" L7 b, m# q) X' S) J" {4 x

  12137. 3 c6 E3 A0 V8 C+ y
  12138.     ;watch out for 3dpolyline and 3dmeshes here! @rk 10:17 AM 1/30/97" u  J+ g7 k9 {% X
  12139.     (setq eflag 0)6 O0 G$ r$ }# F% ]/ g1 c: o
  12140.     (if (setq poly_ss
    ( p) T+ E% b& O$ O2 W& H( T6 I
  12141.               (ssget "P" (list '(0 . "*POLYLINE")
    6 g2 e, K* J7 n$ Y/ z
  12142.                                '(-4 . "<AND")
    % I% D+ y1 E8 u$ k, d. Z
  12143.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 8)  '(-4 . "NOT>")
    * |5 ~$ a- |7 l+ }; @5 `
  12144.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 16) '(-4 . "NOT>"), L- Q7 Q" S6 i+ p& V' k/ n3 b
  12145.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 64) '(-4 . "NOT>"); q; N; H$ m' ^+ E' X
  12146.                                '(-4 . "AND>")
    . F) F0 H/ _2 n: E8 n) |) b
  12147.                          );list, Q% B1 e8 `8 ]5 p4 m
  12148.               );ssget get 2d polylines (legacy and lw)
    * ~) ?7 B1 R6 O
  12149.         );setq
    # N0 W% q. w/ Q7 |- ^. B
  12150.         (progn( T/ s8 U/ @- H, J$ c5 Z
  12151.          (setq eflag (+ eflag 1))
    7 k* e6 q1 Q5 I8 b& y# R8 Y: m
  12152.          
      z3 r$ }0 K. e, d) I' I
  12153.          (setq tmp (entget (ssname poly_ss 0)));setq7 S$ L# a5 w- o" ]  F: M
  12154. + L$ T& @9 X  M+ T9 x
  12155.          (if (equal "POLYLINE" (cdr (assoc 0 tmp)))
    3 L  v. D* G; T* x0 a2 m9 ~# A
  12156.              (setq elevation (last (cdr (assoc 10 tmp))))
    ( i' F( J; g! ~) K6 ?& o
  12157.              (setq elevation (cdr (assoc 38 tmp)))
    ; u$ p2 Y  X4 F5 `2 G
  12158.          );if+ }8 ]1 Q" t5 P7 z3 v" F4 q
  12159.          (if (not elevation)! _9 @2 F% [; Q& p
  12160.              (setq elevation 0.0);setq
    , v& i  _1 j5 }/ x6 J  i! {# H
  12161.          );if5 z1 ^( X8 j- x# }8 F. O+ @
  12162. - _0 ~: u4 b5 T8 L
  12163.          (setq tmp (ssget "P" - V* o) s2 N: c  u, S6 g, O
  12164.                           (list
    2 v1 [& f  y" [+ Q5 K
  12165.                              '(-4 . "<OR")7 D% x% C- c/ S7 d
  12166.                                '(-4 . "<AND") & e. H) g" m- L; r
  12167.                                  '(0 . "LWPOLYLINE")
    3 C/ G; P* o9 y, T
  12168.                                   (cons 38 elevation)# V" x" f  m7 A& Y' r
  12169.                                '(-4 . "AND>")
    - j+ R4 L1 p8 y! {8 a) S
  12170.                                '(-4 . "<AND")& f* D, W% S: J7 y1 K( P2 k
  12171.                                  '(0 . "POLYLINE")- d6 |2 O7 K7 R  G$ Y: G
  12172.                                  '(-4 . "*,*,=")
    ! Q% m9 i+ B7 }6 D
  12173.                                   (cons 10 (list 1.0 1.0 elevation))# ?: B4 T& @2 @; o$ a9 c9 m
  12174.                                '(-4 . "AND>") % \) M, V- c5 Y: H: a0 t& V
  12175.                               '(-4 . "OR>")
    $ i3 F) l+ @  k- N! o5 \
  12176.                          );list
    $ ]9 ^) ^; Q3 T9 q! ^5 t
  12177.                    );ssget
    ! b" G, x: A. g: _8 r
  12178.          );setq. N8 T, Q# j# K+ Y$ y9 C
  12179. ( x/ g6 [6 h5 ?8 T9 v
  12180.          (if (and tmp
    " {6 P# z: ]9 t" w8 a
  12181.                   (equal (sslength tmp) (sslength poly_ss))( f( P: O* z& E8 ^* Y, p8 {& n
  12182.              );and3 o5 l, w: ~/ k5 i& r/ O: [9 h
  12183.              (setq elevation (ai_rtos elevation));setq* h/ A: ?+ c# |9 x. L5 n- R# n' H
  12184.              (setq elevation "")
    ; z2 Q( V2 T4 }; n7 |
  12185.          );if+ ?) w: _# i8 |& v8 k. h
  12186.          
      ~4 [- S+ L9 P! h
  12187.          (setq width (pl_width_getter poly_ss));setq
    8 }/ D1 f- ~% ^3 l
  12188.          & ~8 X" M! F& X6 g! b2 |0 J. a# Y
  12189.         );progn then 2d polylines and/or lwpolylines are in the HHHHHOUSE!2 [! c  p7 L! g$ U; ]4 e0 w; k& y
  12190.     );if
    0 |/ {3 ^/ e" O
  12191.     (command "_.select" selset "")1 A2 I0 i- k2 U
  12192.      
    ! X" T( v6 d9 T& O
  12193.     (if (setq txt_ss 7 `1 \( D, i# B
  12194.               (ssget "P" '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT")
    0 f: z( J8 y' Q& P' I6 y& l
  12195.                            (0 . "ATTDEF") (-4 . "OR>"))
    . e0 d3 a8 R8 w% m2 @! {
  12196.               )  
    7 }5 p" @5 g" p7 B* q! C5 Y' B* E0 I& E
  12197.         );setq
    - m; F9 d9 v2 V" V9 h
  12198.         (progn
    " l: I! U$ B; M3 Q  d  w
  12199.          (setq eflag (+ eflag 2))$ e. l9 Z4 I' z5 i, p7 Q
  12200.          (setq height (cdr (assoc 40 (entget (ssname txt_ss 0))))
    $ H( n" e- }! ]- e. Z
  12201.                   tmp (ssget "P" (list (cons 40 height))) 2 I6 I) N' j1 c9 |: N
  12202.          );setq
    3 `3 Q/ C1 m' u4 P5 m+ e4 r
  12203.          (if (and tmp
    9 j/ W" N$ o6 C8 g
  12204.                   (equal (sslength txt_ss) (sslength tmp))                    
    $ X# j* W$ ^6 w2 a
  12205.              );and" [+ q$ u1 [" C% \
  12206.              (setq height (ai_rtos height));setq  ;@rk need to translate from float
      f  R+ J" A2 C) R
  12207.                                                    ;to string and back again easily
      G% `$ w+ c( u* M6 T
  12208.              (setq height "");setq else the height varies
    % ?! n! s: g0 t0 b
  12209.          );if! b! }- J6 B# E* z2 M5 w
  12210.          (command "_.select" txt_ss "") 3 r2 _% @* r( D# s6 m
  12211.          (setq style (cdr (assoc 7 (entget (ssname txt_ss 0))))
    5 z$ z+ r5 S8 ?: z3 A
  12212.                  tmp (ssget "P" (list (cons 7 style))) ) J  _% V8 a% }
  12213.          );setq
    1 {: n9 d) B$ ^1 a1 _5 ?
  12214.          (if (not (and tmp
    4 N7 H, c! ^" y$ L4 c
  12215.                        (equal (sslength txt_ss) (sslength tmp))                    
    3 G5 y7 P+ o' L5 a" u
  12216.                   );and
    , [/ E+ O' b8 i8 L
  12217.              );not
    : S* b$ R5 j4 c# s
  12218.              (setq style "");setq then the style varies 3 c+ j( ^; ^7 w$ b/ W* c
  12219.          );if
    * [1 G( f, N; c1 T+ Y' @& F' Y" d
  12220.         );progn the text type objects are in the selection set* ^$ c$ e9 o# b" |8 @; Z5 R
  12221.     );if
    ) Q5 H& g% E  p: X( e( m
  12222.     (command "_.select" selset "")* Q- r  \  K% }7 [. Z; D" g3 Z0 c
  12223.    
    9 I2 n3 u- c& i/ g0 _4 I
  12224.     (while (and (> sslen ctr)
    ! c/ `) b2 T; |8 n
  12225.                 go0 A% z" f7 `4 q5 q& |3 v+ E
  12226.            );and
    - ^+ O  G6 d: \9 a
  12227.       (setq elist (entget (setq en (ssname selset ctr))))
    ( R3 I  Y! P2 o; y# s* y
  12228. % s, H4 Q% c% ~* t) N3 I! L
  12229.       (if chk-col (match-col))0 B8 e- o1 z- f& F8 j6 ^( w1 L( W0 ~
  12230.       (if chk-lt (match-lt)), ?1 A- B5 e! V: U2 u. `1 j8 z& ?
  12231.       (if chk-lay (match-lay))/ H; z! j0 D% L: u% B
  12232.       (if chk-lts (match-lts))
    $ b  P! j# i: b2 D! w/ S
  12233.       (if chk-th (match-th))
    , X0 _- C3 ~% c
  12234. 9 ]- m- B- m. L0 W. V9 b
  12235.       ;(if chk-etype (match-etype))
    2 |7 B8 z# X" _7 ]6 p4 v
  12236. 4 e2 C9 L  d" D$ ~8 f
  12237.       (setq ctr (1+ ctr))9 J, c$ x) M% s1 }7 ~( w7 A$ D
  12238.       (if (and (not chk-col)/ Q7 F: H6 I6 \2 @& z* Q
  12239.                (not chk-lt)
    + ^, Q0 D1 t8 G. v) m" m: _
  12240.                (not chk-lay)# N( `9 _% L0 e1 o
  12241.                (not chk-lts)1 y/ O! U$ u; ]6 ~  ]
  12242.                (not chk-th)
    4 U" J! |1 J/ ?0 }
  12243.                ;(not chk-etype)* G! G5 r* b$ U! d
  12244.           );and
    1 i2 o5 C  p  I/ a
  12245.           (setq go nil)
    1 y8 q0 r5 {. b; k" R
  12246.       );if! z2 {* d' v3 o, S4 D
  12247.     );while
    6 Y7 O1 i. ~: O3 `$ v
  12248.     6 ~2 d4 O& M0 D' A
  12249.     (list color ltype layer thickness ltscale
    : ^6 z# ^9 @% r, T
  12250.           width elevation height eflag * c  |7 o1 Y& Y) s& S' b
  12251.           style poly_ss txt_ss
    ' e, t- m' C" W% i" F/ Z- i
  12252.     )2 V+ Q/ Q: j9 V* |9 H: M
  12253.   );defun getprops
    & h+ x6 c5 G8 h( \$ t+ |# O# p* I
  12254. 0 @% G* u: R! s8 x* \  g# ?, ~0 h' d5 i3 s
  12255.   ;  This is a speedy little routine to tell whether the polylines in 1 i4 c7 b# U: ?) f1 F% X
  12256.   ;the selection set argument are of varying width or a constant value. 8 S/ d' u1 P( c9 p, G/ z' }
  12257.   ;Looping through the vertex's has to be done for old polylines when ( ?4 O0 {/ C- P3 H( n' F
  12258.   ;the polyline header has width values of 0.0. Basically, in this case,
    & E4 W0 e( i7 _3 t4 z5 |9 y
  12259.   ;information in the polyline entity header is abmiguous. Width values
      K: b6 F4 O) v, D  y' a
  12260.   ;of 0.0 in the header entity could mean the polyline has a constant
    / i- R# ~7 R% i
  12261.   ;width of 0.0 or it could mean that the polyline has vertex's of varying 2 e. F/ S' u- s5 V! L) M3 ?
  12262.   ;width.
    0 r5 u( ]; P+ w, i3 M, i
  12263.   ;
    + C# u5 A* H' U/ a
  12264.   ;  It's all in wrist. Err a.., I mean it's all in the 'if'
    $ [) |) v9 o8 d. U6 E! o1 F- a! x. D
  12265.   ;;
    * R1 J# k8 D) T5 |( f6 H
  12266.   (defun pl_width_getter ( ss / ss2 ss3 n na e1 width width_a width_b flag flag2)
    8 y" W) a  O  K2 h

  12267. 1 ~) s3 a% l1 s. b( b1 M
  12268.    (if ss ( r. V' q( a+ ^6 q$ @; i- ^
  12269.        (command "_.select" ss "")- Y6 j9 U+ m0 t+ [; Q
  12270.    );if
    ! s% e% U7 e5 d+ U% [% @
  12271.    (setq width ""( h$ V4 J0 _8 k8 S4 X8 ]; z, w
  12272.           flag nil' k9 W" {# J" r* R/ {6 x9 U
  12273.          flag2 nil! Q+ b4 ?7 q% `9 G3 F" B4 \& F
  12274.    );setq
    0 l" H& a7 g5 T7 T# `
  12275.    (if (not
    & q7 O& K$ B6 l1 }6 a# S# ?
  12276.          (and ss; o& l7 J. R% s
  12277.               (setq ss2 (ssget "p" '((0 . "LWPOLYLINE"))));setq
    & D% c. {" Y: V* |; K
  12278.               (setq    na (ssname ss2 0)
    4 B5 d( o0 F1 C& G: s# |
  12279.                     width (cdr (assoc 43 (entget na)))% E0 G9 A  P7 k6 Z7 |. d
  12280.               );setq5 c8 z* Q& @* i4 c$ t& ~" r$ u. B
  12281.               (setq ss3 (ssget "p" (list '(0 . "LWPOLYLINE")
    * X( D/ o% \. f. r) v
  12282.                                           (cons 43 width)
    , y1 F3 ]* a. A, m7 N! `6 U# s
  12283.                                    );list8 F. W9 A7 d9 j; A) M5 W
  12284.                         );ssget
    $ t' F6 J  T* k( d
  12285.               );setq( T1 X$ D1 w" q1 j1 a! T& F
  12286.               (setq flag T)
    6 q" k5 ~' }/ t. ^+ V5 y
  12287.               (equal (sslength ss2) (sslength ss3))
    ; x7 I# W, N. q8 h$ E" _. h
  12288.          );and. I; w& R  {. N5 s, j
  12289.        );not7 ]+ [2 @8 ~- `
  12290.        (progn2 l% M& c% J+ h" z$ f8 P+ ~! ]
  12291.         (if flag
    ( {5 Q# L4 h& Q& |
  12292.             (setq width nil) 3 r4 W  i% s( I4 m& v
  12293.         );if
    3 T( O3 ?7 z, M2 u2 P' m
  12294.        );progn+ P4 H3 X* ^# b, f- l: }
  12295.    );if : U! S; e, @3 o( b- b
  12296.        : R+ ?6 m/ @% t
  12297.    (if (not
    1 f* f! |. P8 t$ `5 C. m
  12298.         (and
    4 d, e( P. y3 L" Z
  12299.              ss, P  B. F$ U# f- u
  12300.              (progn (command "_.select" ss "")
    8 b5 B% A! ^* v2 A2 x. {
  12301.                     (setq ss2 (ssget "p" '((0 . "POLYLINE"))));setq
    7 f5 |% |& p4 ]5 A  ~  A: t: H
  12302.              ) : i, O' o6 o8 H
  12303.              (setq      na (ssname ss2 0)9 @- p, X1 L% i1 _9 t
  12304.                         e1 (entget na)
    : y! @7 G4 n, \( [# p
  12305.                    width_a (cdr (assoc 40 e1))  p" L, Y$ u# u1 i
  12306.                    width_b (cdr (assoc 41 e1)). s. z) N2 p1 v' U7 y' _4 ]
  12307.              );setq4 z1 H5 ^, V3 ~! `+ a
  12308.              (equal width_a width_b)
    - a% w8 p3 \$ w9 `. J
  12309.              (setq ss3 (ssget "p" (list '(0 . "POLYLINE")
    6 @, W: @( r# {" Z3 }1 n
  12310.                                          (cons 40 width_a)# [5 b+ x3 ^2 ]! i8 G3 d
  12311.                                          (cons 41 width_b)
    / r) R0 v2 M5 Y# e
  12312.                                   );list' `: D& W" v4 Q5 R. v
  12313.                        );ssget- U& [- _1 l3 h( ^
  12314.              );setq
    % I3 V' L* j. k5 O% h" V
  12315.              (setq flag2 T)7 U8 Q: b. {; r1 O/ B
  12316.              (equal (sslength ss2) (sslength ss3))" @4 ?# V; }  {: V2 L3 u
  12317.         );and
    9 a6 I& O1 X1 \" Z4 R
  12318.        );not " W) X: P- H" h: |+ }- j( a
  12319.        (progn
    1 [4 W+ g; T& i4 \
  12320.         (if flag2
    8 T) [* b! J; I' c" L
  12321.             (setq width nil);setq
    * U" D" k. x# V
  12322.         );if
    + A: M/ n: ^. c1 w9 d
  12323.        );progn then
    7 S$ R) ^& v' K! o1 K% B! q9 H, @6 @" ?
  12324.        (progn
    % g! y6 T8 z6 T" E
  12325.         (if (or (equal width "")
    0 |( U9 U& X6 o! }' G3 f3 G: r6 G0 F3 `
  12326.                 (not flag)8 a- G* ]" }. E
  12327.             );or
    8 c- b! r/ y5 w5 z
  12328.             (setq width width_a)
    & `1 u4 C& ^( \' g* e: q
  12329.             (progn
    ' @, Z- o3 U: G) S
  12330.              (if (not (equal width width_a))5 _9 p: D, H. [- v" J. o
  12331.                  (setq width ""); F& a7 g% r8 f; v
  12332.              );if  5 V5 E. P1 ^  U$ B' l( d7 N" q: u4 s
  12333.             );progn
    4 K6 C# l1 c( A$ @" J
  12334.         );if. y* S2 ?0 U7 F* X# b% D7 K7 j
  12335.        );progn/ O( Q1 m% ^/ J) n6 O, g! W
  12336.    );if
    ( \/ J+ c. x9 h, a6 V# |! E% T1 L1 z
  12337.       
    2 ~+ O! y. M' q6 D- [

  12338.   `) f* q" h/ {) d! ~) `8 b
  12339.    ;now for the special handling for old polylines  i* |0 t/ X8 K* [# F
  12340.    (if (and width
    / H% w$ a3 B) D( S1 z, t
  12341.             (equal width 0.0). y9 z4 V1 t, X+ m7 c  x8 a- j. @
  12342.             flag2( C$ A/ y. P7 v9 i
  12343.        );and 7 D; y" h+ N0 U$ l' s" B
  12344.        (progn
    1 M4 w: \6 a+ j! I$ j$ H1 A$ _3 b
  12345.         4 Y! Z7 z" G$ U
  12346.         (setq n 0);setq
    * G" Q7 Z. o& l0 t
  12347.         (while (and (equal width 0.0)! P- p0 y. ~/ V* P3 b8 r) h  n
  12348.                     (< n (sslength ss3))
    . z, Y/ y% M$ O3 v7 S) ^! |
  12349.                );and
    2 p5 j* G. g/ F1 V
  12350.          (setq flag nil
    9 a2 ~8 U: y$ V* q5 W! E2 R
  12351.                  na (ssname ss3 n), j' G, e9 S! C6 e# E5 h( L! C" ~
  12352.                  na (entnext na)4 a' e4 Q0 w( J7 K( c1 r/ E- ?
  12353.                  e1 (entget na)0 e9 R& {$ h- P& n, e# |
  12354.          );setq
    3 e. P) {5 n' d6 f+ R; ]) M, E
  12355.          (while (not flag)
    - N$ W" h8 V3 m5 V5 S7 {' w6 h$ |
  12356.           (if (or (equal (cdr (assoc 0 e1)) "SEQEND")
    9 S0 v, D2 ]  x9 Q
  12357.                   (not (equal (cdr (assoc 40 e1)) 0.0))" g; r4 }- P1 \
  12358.                   (not (equal (cdr (assoc 41 e1)) 0.0))& z" u) i2 p5 Q/ p2 }6 W
  12359.               );or0 a( T6 j; w6 v) r( J) y5 e8 s4 _+ D$ v
  12360.               (progn
    + M3 I9 T8 n# Q* [8 s
  12361.                (setq flag T);5 e. a8 b5 m3 b! ?# ]9 d4 Q2 D
  12362.                (if (not (equal (cdr (assoc 0 e1)) "SEQEND"))$ l" H. ~5 F7 ~) g
  12363.                    (setq width nil)
    1 U! B' y! s+ k9 m
  12364.                );if
    : \/ N) J* o5 C& E2 F
  12365.               );progn then jump out of the loop3 }( R: ~$ j2 o% M8 C4 C# H
  12366.               (setq na (entnext na)( E3 O; M+ G" s
  12367.                     e1 (entget na)
    * J5 g: w" g/ v0 b
  12368.               );setq
    5 e3 L9 w" [- k* |2 P2 C
  12369.           );if
    5 K2 G* Y) F* C* j
  12370.          );while
    4 L6 F0 m4 S9 b9 |$ s! A
  12371.         (setq n (+ n 1));setq  ) y5 e5 f0 ?$ @- N2 z0 g& g
  12372.         );while
    4 x9 O/ ^4 [6 w; |. J8 j9 z
  12373.            
    % n; f- X0 u/ |: A( w6 [
  12374.        );progn then it's a legacy
    * K+ }8 r( e4 ?+ p" @. x# G+ }
  12375.    );if    ;legacy polylines that may have varying widths  
    ) Y# k7 E- n- L$ }5 c7 O
  12376. # E: i* ~; Q$ ^. g
  12377.    (if (not width)
    ' W; ?6 s3 V* s+ f7 r
  12378.        (setq width "");setq
    & W, ]; N$ Q% X: Z) p; {  O2 k
  12379.    );if7 @) H7 c1 ?/ |- E. ^" ^/ A4 R% T
  12380.    (if (not (equal 'STR (type width)))
    4 N" {* F$ _( ^
  12381.        (setq width (ai_rtos width));setq $ q: t+ Q; ?$ s4 K2 X# B) n
  12382.    );if 5 W! y8 I# S' t- V
  12383.    
    $ S7 n0 E" j0 e
  12384.    width   
    4 G. Z6 y, ~6 B8 T/ _4 P5 k
  12385.   );defun pl_width_getter; u: i! S% O; N# ]$ B; X9 r
  12386. : C: w9 W2 m5 r! {5 ^: P
  12387.    
    ) c% T" ]  d3 ?3 m
  12388.   (defun match-col (/ ncolor)
    $ k3 n. O8 [3 c& r. ~- }- e
  12389.     (setq ncolor (cdr (assoc 62 elist)))& a; V5 k6 |& L7 d8 x
  12390.     (if (not ncolor) (setq ncolor 256))
    " j2 u( o! @# s) c  ]' q$ G
  12391.     (if (/= color ncolor). |0 a5 L5 {% c# E) k& K
  12392.       (progn' t/ m& R# I% L( ?1 U8 P. J* d- R5 K0 T
  12393.         (setq chk-col nil)7 k! e9 c0 n1 K2 }; b; z/ P& v
  12394.         (setq color nil)
    0 s+ j: l/ A! K* d8 g
  12395.       )
    & Q9 U+ n( S( z6 J8 \
  12396.     )
    - n( x" c% y0 T5 K" z& Q
  12397.   )
      u* Z! s2 Q4 \! O
  12398. $ q- `$ B, Q7 T1 c  p0 f6 P7 s
  12399.   (defun match-lt (/ nltype)
    ( m9 C8 o- b! _6 ?
  12400.     (setq nltype (cdr (assoc 6 elist)))
    1 H) C5 W9 T% f$ h
  12401.     (if (not nltype) (setq nltype "BYLAYER"))
    % U: V2 l. H7 s
  12402.     (if (/= ltype nltype)
    $ f9 t7 `) y6 b- W. [6 p
  12403.       (progn1 s% k* E' ~1 V# ?7 K
  12404.         (setq chk-lt nil)
    1 Z- L6 k7 j' h5 r: d1 ~3 D
  12405.         (setq ltype ;|MSG0|;"Varies")
    - [$ J- T$ X5 F: T6 v
  12406.       )
    ) p9 u$ E# l. @: ^1 p2 w
  12407.     )2 x/ Q& d) Y! w' a" F  x* C$ s; V
  12408.   )8 x6 ~0 _& x9 V- b: K( L

  12409. 4 d3 @' t* ?3 C) o: ~7 M
  12410.   (defun match-lay (/ nlayer)
    ; S! N% n$ N7 d) J  j! s, C1 [
  12411.     (setq nlayer (cdr (assoc 8 elist)))/ x- q$ {+ i- E3 s, y
  12412.     (if (/= layer nlayer)
    " X. B" e7 F  w/ t3 i# B1 V6 c
  12413.       (progn! ?. l  C8 J! ]) r
  12414.         (setq chk-lay nil)0 G* c  J- I! X6 B5 g# v
  12415.         (setq layer ;|MSG0|;"Varies")7 i  S3 w. t6 y3 I6 m
  12416.       )/ f2 N6 W# s- ^% Z4 Y+ v$ @
  12417.     ), G4 U2 J0 x5 r; Q
  12418.   )
    1 O# W. G8 m, Z  }2 W
  12419. / Z# G! e3 \5 F4 ]
  12420.   (defun match-th (/ nthickness)
    $ C" q! k- `* r
  12421.     (setq nthickness (cdr (assoc 39 elist)))
    7 C% P. N1 F: J" ]) v+ `
  12422.     (if (not nthickness) (setq nthickness 0))
    " l! K, y8 c8 W' V
  12423.     (if (/= thickness nthickness)
    % v) C: Y7 i; c2 @
  12424.       (progn
    / C- D5 r6 m4 t6 p
  12425.         (setq chk-th nil)- F9 o5 N. e0 N! E, [% P9 W
  12426.         (setq thickness ;|MSG0|;"Varies")$ q/ l% J! w' t" Y9 U- a! t! l% y
  12427.       )
    & }. t' q6 D6 p( w# Z% B; X. ?
  12428.     )9 M1 w! f; w8 N. H# V; o
  12429.   )
    5 G+ a' N# |6 \  i, n) L/ Q3 m5 }
  12430. 9 G& s, q+ r, u' h. Z( T0 m/ [
  12431.   (defun match-lts (/ nltscale)
    . J8 d/ Z* M8 Z  [+ F
  12432.     (setq nltscale (cdr (assoc 48 elist))): F; ]" i" \& l' w5 Z2 v
  12433.     (if (not nltscale) (setq nltscale 1))
    * {( X1 z0 ?8 |+ H3 R8 J
  12434.     (if (/= ltscale nltscale). g/ o" f1 i: c9 G$ ^* g
  12435.       (progn
    * N+ o$ c8 S0 \% [/ h
  12436.         (setq chk-lts nil)
    $ l; j- s( [3 e
  12437.         (setq ltscale ;|MSG0|;"Varies")
    4 j- R5 x6 s2 t1 F
  12438.       )
    # \0 S5 y- h' d0 B0 o0 U
  12439.     )$ J% ^3 B* F- v! P$ {% s* _
  12440.   )+ W0 q9 u# Y& f: g9 \+ M2 [

  12441. ! A: z% I( O# A- u& N# ?) {; V
  12442.   ;;% K& s# o  x/ X, N
  12443.   ;; If an item is a member of the list, then return its index number, else: d; W8 i; ^' ~9 \9 E2 o
  12444.   ;; return nil.  h% [' `! J9 Q6 [* G  q, U
  12445.   ;;
    6 M( e9 c; ]% n+ A6 y
  12446.   (defun getindex (item itemlist / m n)
    ! y2 t  A+ d3 {1 z) u" h$ T
  12447.     (setq n (length itemlist)); e  V* Y" ?$ t  J* E% p, X
  12448.     (if (> (setq m (length (member item itemlist))) 0)7 k/ r! w" }$ K
  12449.         (- n m)
    ; y. f6 I6 U5 f! ~
  12450.         nil
    & j' {6 I% F* s' T
  12451.     )
    ! k6 i3 b$ i* m0 X* f0 I( d) k
  12452.   )5 m0 C. ?/ Q9 |/ N+ \
  12453.   ;;. h% g% r8 F1 e2 i) M7 ]% U
  12454.   ;; This function is called if the linetype is set "BYLAYER". It finds the% e, W9 ]: a4 |: i) d( k# ^) z  |
  12455.   ;; ltype of the layer so it can be displayed beside the linetype button.
    # R, H$ j- n8 C, D: b. U! @$ N7 ]
  12456.   ;;
    * A! }4 v* Q; \/ \% M
  12457.   (defun bylayer_lt (/ layname layinfo ltype)/ K8 ]) J7 [) H2 P
  12458.     (if lay-idx
    7 Q4 G3 E8 g  E/ I8 t
  12459.       (progn
    # d5 `1 e" v! g! O; G
  12460.         (setq layname (nth lay-idx laynmlst))/ f  ]+ I5 p. w3 c. l5 S
  12461.         (setq layinfo (tblsearch "layer" layname))( b( b; A3 J' f# }
  12462.         (setq ltype (cdr (assoc 6 layinfo)))
      o  C6 Z3 w8 g6 A$ [0 o& k- O
  12463.         (strcat "BYLAYER" " (" ltype ")"). O: g- g: [2 F% B
  12464.       )
    1 w  |. Y2 V4 I
  12465.       "BYLAYER"" N: f; {0 |- Y
  12466.     ): X- T. ]$ ~6 v& w9 z
  12467.   )
    9 ~: ?/ D0 a* {' L- j( L( r; `
  12468.   ;;
      X# F, u1 l: Q8 O  T# N: ~$ U, \
  12469.   ;; This function is called if the color is set "BYLAYER".  It finds the
    1 c* ]- ^1 i% j& E9 Q- ^
  12470.   ;; color of the layer so it can be displayed  beside the color button.
    * T! ]/ V( O% X, y  d9 s
  12471.   ;;
    " s; O9 }, H1 m) `9 z2 |" u
  12472.   (defun bylayer_col (/ layname layinfo color)9 T3 _. T) \: N/ S. {3 c
  12473.     (if lay-idx
    2 u' o, I8 }/ ?2 |9 N
  12474.       (progn  H+ ~9 g+ [# V( r( O
  12475.         (setq layname (nth lay-idx laynmlst))0 V) Z$ \* }. A7 c1 F  Y3 Z
  12476.         (setq layinfo (tblsearch "layer" layname)). n8 N! q' l! \9 R6 U5 K
  12477.         (setq color (abs (cdr (assoc 62 layinfo))))' \9 m! c% |# l9 ?
  12478.         (setq cn color)
    ( o- G! B! ?: ^1 P
  12479.         (strcat "BYLAYER" " (" (colorname color) ")")
    4 E  J( a& [8 E5 ^5 m3 Z
  12480.       )
    & A$ s- t( \7 G5 w5 J7 U7 o3 u- ~
  12481.       (progn
    , M; O2 e! a- c4 q* X! g
  12482.         (setq layname elayer)- Q$ y' u2 E9 C' L3 e
  12483.         (if (and (/= elayer "")
    # j) |/ h& F" {% W& A
  12484.                  (/= elayer "Varies")8 U( W: `) D; `! d) g+ j
  12485.             );and1 z$ K2 R" o% N; R: ^
  12486.             (progn+ d1 a2 W+ `0 |9 S- y- @
  12487.              (setq layinfo (tblsearch "layer" elayer))7 A+ l( W8 h7 B# |3 Z
  12488.              (setq color (abs (cdr (assoc 62 layinfo))))+ Q. E! `1 y5 `2 m/ i1 F' r
  12489.              (setq cn color)
    ; r3 A* B3 Z0 M& Q8 w4 x& D
  12490.              (strcat "BYLAYER" " (" (colorname color) ")")9 e- p" A# T6 c+ e1 H5 M1 a
  12491.             )
    & t6 \4 K/ N' ^( C
  12492.             (progn
    , h% A0 ?: [- I" l
  12493.              (setq cn 0)7 [& j7 g- A5 R  P1 n
  12494.              "BYLAYER", f, g3 l3 `. |! ~0 J
  12495.             )+ K' }5 C/ @5 V1 D, f( f7 [
  12496.         );if
    , R1 _" S2 O8 T6 P# ]
  12497.       );progn4 y9 c4 W% D# C  Y6 ^4 G
  12498.     );if
    + b2 g* V- y9 H# X' V% `8 j2 z
  12499.   )
    * T, I0 ^3 Q" u- l5 i% S6 N* U4 t
  12500.   ;;
    / w$ [: S  e8 {0 z1 L
  12501.   ;; If there is no error message, then close the dialogue
    6 P0 C, g0 h9 m) M8 \% s6 B
  12502.   ;;! k3 W. O' ]5 _' j' B4 R4 h& G
  12503.   ;; If there is an error message, then set focus to the tile
    # a+ n# x6 o5 C& f6 Q
  12504.   ;; that's associated with the error message.
    - V1 M! |0 ?- R- q1 p6 f7 G5 j! E
  12505.   ;;
    ( d) l2 g1 d# {3 u, _2 a' k3 _8 F
  12506.   (defun test-ok ( / errtile)* p# C& e, p) E( [! U! U0 a3 d. a
  12507.     (setq errtile (get_tile "error"))
    / H3 R# P  }% U# t$ p5 z/ i6 D
  12508.     (cond
    % P2 \; h# {+ x" A0 G
  12509.       (  (= errtile ""). [0 `7 T3 j& h3 l1 d; Q
  12510.          (done_dialog 1)); Q: m6 s. B( a0 t9 D' h; }2 v
  12511.       (  (= errtile "Invalid thickness.")
    4 T% b/ }. E, z2 M( {" E0 p0 o+ P
  12512.          (mode_tile "eb_thickness" 2))
    " z5 h  L3 P" {( n
  12513.     )) C/ \  Y% O/ [* Q% F
  12514.   )
    . }# e7 E9 L+ e; o& A0 t+ m4 E
  12515.   ;;, ?: P6 l% d$ M: ?+ w: R
  12516.   ;; OK in main dialogue.
    . ~. A! Y% Y6 W3 p* ^1 c
  12517.   ;;
    7 `" ^: Y. G' n1 R. W
  12518.   (defun test-main-ok ( / flag)% ?: N( X1 Q' F% I: [. @
  12519.    (setq flag T) 8 o4 Z0 q' c3 x
  12520.    (if (not (or (distof (get_tile "eb_thickness"))
    / E- H4 m& o# ^5 X7 ^; N1 H/ F+ \
  12521.                 (= "" (get_tile "eb_thickness"))0 J6 h* [( G- C! p" J6 r
  12522.             );or6 V& o" B2 Q9 a+ q
  12523.        );not  ?8 a% q+ R1 u- o0 y
  12524.        (progn$ l, L  v% ~' g
  12525.         (set_tile "error" "Invalid thickness.")
    0 Q% i' r- R4 `! o. Q
  12526.         (mode_tile "eb_thickness" 2)
    4 {# _5 b: i/ e7 R
  12527.         (setq flag nil);setq
    ) V! E+ {" k/ A/ n5 J
  12528.        );progn
    $ V5 W, e2 o0 q" ^
  12529.    );if; J7 ]9 R6 q. ^$ g4 L7 M  n
  12530.    (if (and flag
    - d9 m' j9 e$ u
  12531.             (not (or (< 0 (distof (get_tile "eb_ltscale"))). Q' ]- k/ K8 `" L
  12532.                      (= "" (get_tile "eb_ltscale"))
    . n9 t/ u' q) U( F8 ]% R; k( r
  12533.                  );or      9 @2 R* R4 ]2 \: I
  12534.             );not
    / b/ `7 W. E. d' n2 z: M. [% \
  12535.        );and
    ; G4 P; |# p1 w( j" P1 j$ q5 G4 ^
  12536.        (progn
    0 l; a6 w/ Q( p9 @8 b
  12537.         (set_tile "error" "Invalid ltscale.")5 V/ g+ {: ?2 w! c5 n. [, j4 I
  12538.         (mode_tile "eb_ltscale" 2)9 @" @/ ~2 L. J. j% x4 u) E, E7 m
  12539.         (setq flag nil);
    # V/ O; e% u+ I( c
  12540.        );progn then
    8 y/ f9 S  N* }- _- X/ w
  12541.    );if
    % x0 F1 S7 l, R  K+ M$ }* }
  12542.    (if (and flag' |  h" ?4 V0 I6 r" l: s
  12543.           ; Don't test the tile's value unless it's enabled." C% o4 H8 V; R7 B0 W9 t& l
  12544.           ; We're not set up for the display-only value8 Y+ K( z0 d3 h" U2 d4 a
  12545.           ; of "" here in the error handler.
    - i9 p6 t+ W& j6 c
  12546.           (= 2 (logand 2 eflag))  ?4 M6 \0 E" x1 y% w1 L
  12547.           (not (or (< 0 (distof (get_tile "text_hgt")))) t$ b& w; y% d$ b( s; r
  12548.                    (= "" (get_tile "text_hgt"))
    3 }1 N& G- C% \$ m5 m  F* Z  e4 U
  12549.                );or7 i6 {8 t9 Q/ R7 X- U( J' H. Z+ b
  12550.           );not
      H, |) I( ]2 h$ J1 t; @- h% a7 Q
  12551.         );and( w/ o* ]6 g+ @% \8 P0 m- C
  12552.         (progn" `$ k2 c% u8 S  l
  12553.          (set_tile "error" "Invalid height.")" y' z+ c( g" d$ K. {6 b$ A8 _
  12554.          (mode_tile "text_hgt" 2)# \# T1 T0 E" H; S9 H; V
  12555.          (setq flag nil);0 O* w+ I! Z8 J! v" Y) x
  12556.         );progn then
    ' h, R) m/ \% ]% e
  12557.    );if
    0 ?: ?/ c' K! y/ m0 f: j
  12558.    (if (and flag
    ( W3 Q1 Z; F; K& O4 K7 s  G; m
  12559.             (= 1 (logand 1 eflag))2 Z, X0 [; b( P
  12560.             (not (or (<= 0 (distof (get_tile "poly_wid")))
    5 @8 X% D. G* E" @% A
  12561.                      (= "" (get_tile "poly_wid"))
    # q; d% N4 Z" J
  12562.                  );or
    ) k' c) \, f" G4 `' E
  12563.             );not
    7 y7 P% w% M" e1 t2 v
  12564.        );and
    ; G; ~+ c1 A7 J
  12565.        (progn
    1 _* r0 q( D# U/ D+ N- n4 \! e0 w) {
  12566.         (set_tile "error" "Invalid width.")
    ; i* z0 z& G! E' U
  12567.         (mode_tile "poly_wid" 2)
    7 w+ r' q& v4 _/ d4 K* y5 I2 {. i
  12568.         (setq flag nil)
    5 X/ Q* K% c3 @' z- P6 V
  12569.        );progn then! j0 E2 G* _3 K- s* O: e
  12570.    );if & ^( W8 p- y8 W3 ^$ {% q
  12571.    (if (and flag
    $ P  U! D! n9 ]$ k  a; Q5 X
  12572.             (= 1 (logand 1 eflag))7 I: B! a5 V( \. d/ c! x0 w
  12573.             (not (or (distof (get_tile "poly_elev"))
    5 p$ c3 B& A1 [
  12574.                      (= "" (get_tile "poly_elev"))  }; s: a% m0 v4 q, L- ?
  12575.                  );or
    " M* V8 D3 b# l3 B4 U
  12576.             );not
    3 q* A" [. a" [' P
  12577.         );and% ]4 p8 E) P: `. Y9 b
  12578.         (progn
    ; z1 W+ O8 B. I; Q5 _
  12579.          (set_tile "error" "Invalid elevation.")
    + Y" B! [( B) v  ]9 m' }
  12580.          (mode_tile "poly_elev" 2)
    9 v5 [% L% S' T' ^9 ~9 Z1 u8 Q  Y+ m  v
  12581.          (setq flag nil)
    # S9 Y7 L8 c* x7 h2 L3 m- F9 O
  12582.         );progn then
    ) v% ~5 ]3 m2 D2 v" ^
  12583.    );if  ; H+ C/ Z7 o. b; {  {8 {
  12584.    (if flag
    ; k0 }4 [  i/ [- Z
  12585.        (done_dialog 1)% u% \* ?" X$ e  r3 P/ @. ?1 `6 q
  12586.    );if
    * V# z  S& k; b# J7 J
  12587.   );defun test-main-ok& q% U* a, ~( h3 a

  12588. 7 u0 K$ u5 N+ a: g. |
  12589.   ;;, o8 Q: h; e, J% \
  12590.   ;; A color function used by getlayer.
    ; l1 p0 F! j/ h# r
  12591.   ;;
    . X1 B& ?8 m! o9 }6 l4 L+ z7 z
  12592.   (defun colorname (colnum). q" Z3 K: t8 _0 G7 _
  12593.     (setq cn (abs colnum))
    4 H/ X! J! I2 i4 q# }) `
  12594.     (cond ((= cn 1) "red")- x8 X/ F# D  U  Q8 w4 B" j% h
  12595.           ((= cn 2) "yellow")
    6 P- `( O2 g6 P/ H  E) n
  12596.           ((= cn 3) "green")
    2 R1 z- c" g$ I6 m$ W" Q. J
  12597.           ((= cn 4) "cyan")
    * r+ A) J" B! |) a
  12598.           ((= cn 5) "blue")' q# y  B% H+ |8 h# A
  12599.           ((= cn 6) "magenta")
    # P1 Q7 u! G. e* Q1 D1 x( L$ z( H
  12600.           ((= cn 7) "white")+ t( Z. \0 F' l, u' u, S1 }
  12601.           (T (itoa cn))
    $ m# F/ B: N7 e1 l0 A
  12602.     )
    ; T9 r3 U% G9 U, X8 m( [8 a8 i: V, S
  12603.   );defun, |; O' y2 Y( S& E7 _0 Z
  12604. , O4 \+ y5 w; Z# t% G$ @, z, g
  12605. ;;; Construct layer and ltype lists and initialize all1 @( ?( h7 o# `' I: S
  12606. ;;; program variables:
      K' t. ?! k9 \" U. J1 ]# B

  12607. 8 V& p( ~# S. ?" K3 ^7 ?/ l
  12608. ;  (makelaylists)                     ; layer list - laynmlst
    8 ~' o' p  V% N' I% }' A) A& X
  12609. ; F  O+ t; Z- d" g

  12610. , Z& d' p- e% F0 J9 \8 d2 a+ v
  12611.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    3 k: }" C' ?3 F
  12612. 4 a  l3 u5 s* u$ e. o  _+ l
  12613.   ;; Find the property values of the selection set.1 E' ~; ~$ M4 i* Q
  12614.   ;; (getprops ss) returns a list of properties from# J1 ~0 f+ H0 v8 I' O( k
  12615.   ;; a selection set - (color ltype layer thickness HEGHT STYLE WIDTH)." `: f4 R7 H$ ]: h  g
  12616. . S8 D4 z) m% @
  12617.   (setq proplist (getprops ss));@rk interesting things happen here: `8 y' w" N% h0 V

  12618. $ l) A6 C3 w2 u! ]/ U+ j
  12619.   (setq  m4 q# m1 h! l1 Q9 p% _! c1 p2 R
  12620.             ecolor (car proplist)
    4 Y. X8 C, H2 t4 e
  12621.             eltype (nth 1 proplist)
    ' ]0 S( D, O+ P- ]2 z! e3 V7 }. A
  12622.             elayer (nth 2 proplist)
    + G$ B' a% d& g+ W5 H, V# K  _
  12623.         ethickness (nth 3 proplist)3 D+ ]4 r* t" L7 o  [7 A" ^
  12624.           eltscale (nth 4 proplist)
    3 }  [! D4 h! n: O/ J$ O/ J5 o' Q
  12625.             ewidth (nth 5 proplist)
    8 C1 Y5 G) R6 s) }* L0 m: }
  12626.         eelevation (nth 6 proplist)
    8 V7 y9 |/ h5 y* s* T
  12627.            eheight (nth 7 proplist). e  m8 Z/ y2 {1 {
  12628.             ;etype (nth 8 proplist);commented out and replaced with the line below. RK.' }- j6 d7 A# z1 E
  12629.              eflag (nth 8 proplist)
    ' ~9 x! T3 J$ Q; J. g' s
  12630.             estyle (nth 9 proplist)
    7 Y  X& A# c- r, @# o7 K
  12631.            poly_ss (nth 10 proplist)
    " R9 I  F  \/ u3 d
  12632.            txt_ss  (nth 11 proplist)2 T2 h1 _- y3 c) A3 m8 T; ^5 j
  12633.   );setq
    / B) l' R; [: Z
  12634. 1 Y; Z/ O. D1 `1 q2 s4 b0 \* }
  12635.   ;; Find index of linetype, and layer lists
    % T' ?5 h: G& _2 _2 e
  12636.   (cond8 n) D( K& q0 ^( X
  12637.     ((= eltype "Varies") (setq lt-idx nil))
    3 W* A9 R% F9 ^$ T) b% @
  12638.     ((= eltype "BYLAYER")- z: [( D/ M% I1 w2 P8 u
  12639.      (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    6 H3 V( V6 i9 v! o+ V0 g1 l
  12640.     ((= eltype "BYBLOCK")
    3 h8 v2 ~% p* b8 R$ f
  12641.      (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    ! O+ y+ S* W" m0 A( v
  12642.     (T (setq lt-idx (getindex eltype ltnmlst)))
    * F* a$ X* r% O" c2 x, C
  12643.   )6 I+ b# V8 m6 g+ L
  12644.   (if (= elayer "Varies")
    0 n8 g# N) P' U. h* N  q, r1 z
  12645.       (setq lay-idx nil)
    - |' a8 f; n, d- f# J
  12646.       (setq lay-idx (getindex elayer laynmlst))2 D  R, d& \/ b4 o! u+ u' S
  12647.   );if
    0 I# O- h8 a4 }6 h6 z0 ~
  12648.   (if (= ethickness "")9 @  V# g3 p. n# A. r
  12649.       (setq ethickness nil)5 N( `! f5 }0 [2 v; r# V1 J( V9 g
  12650.   );if' N' _1 ~: `  N5 O% }
  12651.   (if (= eltscale "")
    % X4 ]- E4 i3 Z) ^
  12652.       (setq eltscale nil)+ X! c, ?4 V) o
  12653.   );if
    " O% d. g" s, r! |  Y
  12654. + L' h  X; }* m; g
  12655. );defun ddchprop2_init   ; end (ddchprop2_init)7 J5 V) y: k9 K8 C0 X+ x- t! Q

  12656. % Z& H3 n6 |9 v0 N* l" u+ E4 \: d
  12657. ;;; (ddchprop2_select)/ l$ n% b0 B7 W; E5 i6 }- `
  12658. ;;;& O' T# ~2 T2 q6 M% ?
  12659. ;;; Aquires selection set for DDCHPROP2, in one of three ways:: s3 M# s: t7 q. a$ \; G) [" n
  12660. ;;;
    * Q3 F9 W; G6 R' o: h; N
  12661. ;;;   1 - Autoselected.
    8 x9 k" s" }+ e$ g
  12662. ;;;   2 - Prompted for.
    0 l4 P$ S4 L6 z  h; h
  12663. ;;;   3 - Passed as an argument in a call to (ddchprop2 <ss> )
    3 }* V% h4 m0 ]4 |; C
  12664. ;;;
    ; r+ N* U! C* y( y- u
  12665. ;;; The (ddchprop2_select) function also sets the value of the
    " t7 s7 i! t2 U5 t9 ^; p
  12666. ;;; global symbol AI_SELTYPE to one of the above three values to
    ( D" P! Q; w9 e: D# `
  12667. ;;; indicate the method thru which the entity was aquired., N1 c6 e1 t4 A7 N7 N# h

  12668. 9 f2 s; J( }+ Z. C! O, ]

  12669. 5 p! h9 ~( p, R+ y
  12670. (defun ddchprop2_select ( / )
    " o$ V4 {) J9 Y( C, k9 r2 Q) K

  12671. * o/ Y" `& m$ J8 H+ R  f
  12672. ( W: U; [4 [( y9 H2 f% E
  12673. ;returns only entities in ss that are in the current space. & _% E5 s* n; {+ b" H' m$ {
  12674. (defun ss_in_current_space ( ss / a cur_space ss2), `1 M$ ^, \  c0 Z" Q" A

  12675. ( v( {+ E) _) b. v/ x
  12676. (if ss0 c: p" {. O6 m4 D
  12677.      (progn, F. P4 Y* \& }3 \6 l$ J! w. r
  12678.       (if (and (equal (getvar "tilemode") 0)5 `# S2 ^5 f, e* _& a  J" n
  12679.                (equal (getvar "cvport") 1)* D! ^5 t4 v! W
  12680.           );and
    . M* N: Z0 X3 z0 Y! O
  12681.           (setq cur_space 1);then paper space is where we are.
    - |, L) G; {8 r. F1 B
  12682.           (setq cur_space 0);else model space.
    , X' ~0 ^* e; d, h9 {% W0 u
  12683.       );if
    . g* j4 p! j* m
  12684.       (command "_.select" ss "")) R) S/ |' b  q8 P$ ^- O; Q1 d- P
  12685.       (setq ss2 (ssget "p" (list (cons 67 cur_space))));setq  t! u" E) B+ s
  12686.       (cond                              ;;;;;tell the user what's going on./ c, h+ S+ K- z9 e
  12687.        ((not ss2) (princ "\nNo objects found in current space."))
    , ~; F+ [) B, I& d* s& C1 E% x
  12688.        ((not (equal (sslength ss) (sslength ss2)))- C2 @& q: Z8 s) j7 I
  12689.         (princ (strcat "\n" (itoa (- (sslength ss) (sslength ss2)))
    % E1 V  K- [) s+ v/ y1 _% J
  12690.                        " object(s) were not in current space."
    3 e8 m( U( n' E1 w! s
  12691.                )$ P! ]9 _% B$ i
  12692.         )' f. j& U0 _# {: C9 v- y6 c4 _
  12693.        ) 5 o  s4 n1 @' ~; K9 f7 q+ p
  12694.       );cond 0 D* G2 O& z6 `6 P' Y! Y3 J/ [
  12695.      );progn then
    ' H$ f& A$ ~) }
  12696. );if  8 E; Y. q1 R8 `& \* [2 Y0 b
  12697. ss26 e6 i! k9 O7 S, ?3 H: e; i- C
  12698. );defun ss_in_current_space
      y4 ~& ^/ A, E( l

  12699. ; q4 G* g9 i3 s" p. d1 j7 ~* i6 e

  12700. : Q6 d6 x; ^6 u& j4 I: Y
  12701. ;;;begin the work of ddchprop2_select
    : S& ~  X! ~6 M4 T

  12702. 4 U/ i% U  H  b, I
  12703. ;; temporarily restore original highlight setting.
    + Z! p" L/ d( Y
  12704. (b_set_sysvars (assoc "HIGHLIGHT" (car bonus_varlist)))
    $ \' X3 c8 y- B& E6 ^, r$ V6 r) [* N
  12705. (cond3 Q/ Q; C* g* W+ S6 [& h7 L
  12706.    ((and ss
    8 t5 Q1 @6 V5 n: j6 p
  12707.          (eq (type ss) 'pickset)4 w$ Z) `/ b2 V4 Y! N5 O3 O& z' r
  12708.     )        ; selection set passed to2 S6 Z$ j8 F3 M5 q) L5 U
  12709.     (cond                                   ; (ddchprop2) as argument3 _5 s( N4 q7 a/ ]9 q0 w) q
  12710.      ((not (zerop (sslength ss)))       ;   If not empty, then
    * A: _( h' b; d9 Z4 o
  12711.       (setq ai_seltype 3)               ;   then return pickset./ x. E# s3 I3 {% l7 `- l! W  r4 Z9 V
  12712.       (ai_return ss)
    3 o# f" K' _8 f2 M! x, `8 q
  12713.      )0 J$ S& D1 ~% P3 b6 E! y
  12714.     );cond close8 ]* b9 s9 K. m
  12715.    );cond #11 D# b- {4 h7 M
  12716.    ((setq ss (ai_aselect)))                          ; Use current selection$ t) P' C3 [; s6 K0 y3 }, |+ ]8 ^
  12717.                                                      ; set or prompt for objects
    6 r8 g0 h* |5 P, z$ J
  12718.    (T (princ "\nNothing selected.")" p; I' S) `; M5 i- m7 c
  12719.       (ai_return nil)) S  `! J' b$ e, H3 u5 r' c7 x
  12720.    )
    6 ~! ?9 O" G2 \: f
  12721. );cond close: E0 s% H* X* t7 ]& i& w- z
  12722. (b_restore_sysvars)! V& \/ @, H2 E, n0 A3 t5 ~" T

  12723. ! y1 P/ [, }, `* x3 y
  12724. ;(if ss
    5 m1 c$ A2 P% O6 v/ o8 z- x2 @
  12725. ;    (setq ss (ss_remove_locked ss))
    : g% }. l. Q7 \& s; k
  12726. ;);if
    3 K$ j  V* `) {0 S, e- W  M. A
  12727. (if ss7 m5 r: h7 F5 A9 u* y6 `! v
  12728.      (setq ss (ss_in_current_space ss)) 7 d+ _3 Z( o7 G# ?* W1 _& c- [
  12729. );if
    5 Z. t4 q  j% |, J% N

  12730. 9 I  U3 G+ U" {
  12731. ss
    # V5 H! ]) W) P
  12732. );defun ddchprop2_select
    6 y; {. ~% f) n; T; h0 Z6 ^

  12733. % m, `' M7 C" U

  12734. 8 c2 s; r6 _7 a; c0 Q# u: S
  12735. ;;; Define command function.& _  Y" [, c$ M5 z2 y6 J
  12736. (defun C:CCH ()/ v! t$ C3 s8 P6 f, E3 N
  12737.   (ddchprop2 nil)
    : v* U* E; w  k& p, b- k
  12738.   (princ)
    5 e2 j4 l) K* i  J- R! r
  12739. );defun: O& e0 ]- n  o

  12740.   n8 b) P' n3 y6 [

  12741. * t- h2 p0 R0 P$ {1 K) }; t
  12742. ;;; Main program function - callable as a subroutine.
    - R9 g3 L: c) f$ `1 K# b9 G2 x
  12743. ;;;/ f, z' W  G# w) Z
  12744. ;;; (ddchprop2 <pickset> )( W/ a' L5 |2 H8 ?- V5 ?& _
  12745. ;;;
    & @. C: J) \. q
  12746. ;;; <pickset> is the selection set of objects to be changed.
    2 s' I' l# Z' ]/ Q% ~
  12747. ;;;, X! P: O. I' E5 m  E$ e6 y, v  l
  12748. ;;; If <pickset> is nil, then the current selection set is
    0 O# o7 F7 F. d* A7 b+ O9 b2 a
  12749. ;;; aquired, if one exists.  Otherwise, the user is prompted
    : N& D/ k6 ~  ^' n+ i$ G& Y
  12750. ;;; to select the objects to be changed.5 g( ?* ^( R* L1 G; u) j' Z% V
  12751. ;;;
    % K6 W# x% L' m; r! \* m1 l
  12752. ;;; Before (ddchprop2) can be called as a subroutine, it must
    8 _: Q! z9 C) Z! [* q6 U7 z
  12753. ;;; be loaded first.  It is up to the calling application to
    ( F( ~3 D7 T. a
  12754. ;;; first determine this, and load it if necessary.
    % d6 w1 @2 R  T% E3 `4 {  v8 Z/ D
  12755. 0 O7 |8 n- X' `) m0 G" y( y  N7 V
  12756. (defun ddchprop2 (ss  /8 s$ ~- l- j! f
  12757. 9 Q3 q( i6 n* \4 @
  12758.                   a) [$ k% M! V7 t  N
  12759.                   add-mdash, \9 c& u. F6 I2 B7 s
  12760.                   assoclist0 M% Q) q1 N% ?4 o/ U! z
  12761.                   bit-70
    0 X2 ?* S" L4 p6 M; `. H
  12762.                   boxlength
    ! d. m: d) z: N" L: @& j7 n$ T
  12763.                   bylayer-lt
    & b: `: \' c0 [5 _
  12764.                   bylayer_col
    , d" o2 l! B# Y% w4 E
  12765.                   bylayer_lt
    2 n/ m; b4 r, j. |6 P' p
  12766.                   call_chp2* a: J. ]' d. T# v
  12767.                   chk-col
    8 r: z+ r$ v; v4 k4 P2 E* G
  12768.                   ;chk-etype        ;var removed by rk 2 U% }, [$ @# @- f0 V7 R4 Y
  12769.                   chk-lay   
    $ g+ ?$ ]& J+ A* F$ r1 x
  12770.                   chk-lt
    7 D3 O9 N# C. F# [9 R- Y: S  }
  12771.                   chk-lts           ;var added by rk
    8 _8 F+ @% u9 o$ \' L
  12772.                   chk-th
    9 E/ J% ?& e. _2 W4 _/ ?
  12773.                   cmd
    ! d) ~9 `0 o" t8 `; w2 Z
  12774.                   cmdecho+ Y- q& F- A6 q4 _( {7 z& p
  12775.                   cn: c. b' J$ a& X1 W
  12776.                   cnum
    # t) D6 E- k. f
  12777.                   col-idx
    * m1 w: M; C! U. q1 s' k; o1 T* Z: n
  12778.                   col_def
    0 `4 b. a4 w  h: y$ e0 e) J
  12779.                   col_tile
    ) P2 k' A8 Z6 I$ _) q
  12780.                   colname
    6 e5 p2 j5 r( o
  12781.                   colnum) u# n7 m7 @: a& S$ }  d3 e
  12782.                   color$ C& t! z* D6 y/ |
  12783.                   colorname3 c% |* j4 P5 N, o
  12784.                   cvpname
    * Z# r" Q) M% W+ b! A
  12785.                   dash
    9 f7 H0 g, y+ }+ q
  12786.                   dashdata. ?& ], P) _; k7 P7 L9 G
  12787.                   dashlist
    * Q) ?/ _9 K. T" D0 f$ z( @" H
  12788.                   dashsize
    : a2 J. |: ^3 m0 j
  12789.                   dcl_id: H( W$ a" o. |/ r$ g; ^. S
  12790.                   ddchprop-err
    ' ]7 K" y  v# J" ?( D
  12791.                   drawpattern4 f! n1 y+ r+ V
  12792.                   ecolor
    1 D) T0 w& A# {- y3 n
  12793.                   eelevation$ t( d' ^( e& o  H6 K% z
  12794.                   eflag
    2 t2 K! Q% p, q
  12795.                   eheight% D4 `$ H5 a: q0 M
  12796.                   elayer
    1 \; r0 s" [) p4 b& O
  12797.                   elevation
    ! w0 e( W( G9 m9 ]
  12798.                   elist5 j8 |$ F0 T. l1 |1 i9 U) ^* n) Z/ k
  12799.                   eltscale2 j  g9 h% V  f. s
  12800.                   eltype
    " u4 i/ B' ]9 L/ U) e  Y: O
  12801.                   en& q+ O% [- M# ]  Q' _4 z" n
  12802.                   ename
    " m* G1 P9 _& T4 @- ]; c
  12803.                   ESTYLE             ;var added by rk1 K3 O( m& K" u: X6 F( z0 V9 ^" W/ p
  12804.                   ethickness) i* \8 ]/ _# T  J
  12805.                   ;etype             ;var removed by rk
    5 `: [: c% h  |; v  \
  12806.                   ewidth! `, N+ q  M, S
  12807.                   fchk; g( v; i$ _+ i. g! P8 c. {3 \+ |0 K
  12808.                   frozth- N  W, k7 m& s, f$ u4 D  i% c6 M
  12809.                   fx1 P1 L7 t5 n; f! B' M/ s
  12810.                   getcolor
    8 x3 y3 e- x+ D( K3 R; u
  12811.                   GETELEVATION      ;function added by rk
    ; F; o) b3 |% F0 ?- `
  12812.                   GETHEIGHT         ;function added by rk
    1 Y$ m/ ]- |) n0 z
  12813.                   getindex
    8 N7 [- J7 H6 u7 p! t" ?
  12814.                   getlayer6 C; d1 }5 D0 l6 J& T
  12815.                   ;get_locked_layers ;function added and then removed by rk - P$ a7 e2 H  r0 m" J% g" _/ b
  12816.                   getltype
    7 ?. H* |0 j8 `* k/ C
  12817.                   getprops
    # g* C& `8 o, f) L, o. Q$ V
  12818.                   getscale          ;function added by rk8 n  B+ s! C* F& g& {1 ]# Q
  12819.                   GETSTYLE          ;function added by rk/ F8 x$ S* K$ z& w9 }4 p
  12820.                   getthickness6 E" s1 _$ n1 z1 m
  12821.                   GETWIDTH          ;function added by rk* F: W, a  Z0 S1 Z
  12822.                   globals
    % y: J+ C; V& n$ s' {" h
  12823.                   HAIR_STYLE_LIST   ;var added by rk0 D/ V5 F, j+ h! g: S# \( p+ Z
  12824.                   height
    % U8 r& u5 G$ N+ [1 t. M
  12825.                   index
    ( z6 l6 n. w0 O! c3 E/ `- r# p; z+ w
  12826.                   item
    7 h2 T4 E' @. j( u7 l6 D7 b
  12827.                   item1
    # n" n8 K! Y/ c: ]4 f) T" W3 ?7 Y7 ?
  12828.                   item2
    . q8 e8 M' G% }2 I0 m, H- I
  12829.                   itemlist
    4 D0 C0 m6 w8 }" ~
  12830.                   lay-idx# s0 \8 B" `; f% ~, C, l
  12831.                   layedit_act
    ' L) Q: I2 `! J% f/ p
  12832.                   layer  n2 R& h5 P5 m! P
  12833.                   layinfo
    . l( w3 w* o: G# w* G0 g
  12834.                   laylist
    1 |; k) w& q8 p; a5 z
  12835.                   laylist_act  q0 K& [& S7 k4 s
  12836.                   layname' P% g2 l" B  B. o* h: w- I
  12837.                   laynmlst' U3 J) n7 T) n$ ^' S
  12838.                   layvalue
    9 m- M0 g0 _: \3 t( M" O
  12839.                   linetype7 s" A3 {5 Q! O9 e1 `
  12840.                   list1
    9 g+ h$ c9 a7 J3 U  h4 k
  12841.                   longlist
    3 Q( X& u2 b+ O  N
  12842.                   lt-idx: k5 k# m8 w, N' A% o( c
  12843.                   ltabstr9 k4 G+ ~" d/ m) ]$ w$ Y
  12844.                   ltedit_act
    , a' U! \' p2 a: M3 Z
  12845.                   ltidx
    9 \7 D4 m( Q0 t7 C
  12846.                   ltlist
    ( q! \' a. b" o8 ]# U2 t0 q  O
  12847.                   ltlist1. f9 P5 N4 p( Q: j3 z" _- ?. ]
  12848.                   ltlist_act
    1 Q4 r: ~+ T: D) R
  12849.                   ltname
    ; h9 O- p6 r% ?( l
  12850.                   ltnmlst2 M1 c+ k: f5 H3 \" Q1 ]# t
  12851.                   ltvalue
    & e4 |% f% R) ^
  12852.                   ltype
    3 i8 M5 B$ Y+ _9 \/ e1 R
  12853.                   m
      U% z8 V) D/ b# m# i" |' x
  12854.                   makelaylists
    ! a6 `9 a1 s& T. S1 n
  12855.                   makeltlists
    - \$ _1 }: o: i7 k; l
  12856.                   match-col
    5 r) F  Y( w, w/ n% d
  12857.                   ;match-etype          ;function removed by rk) ?( X4 ?$ Q* q
  12858.                   match-in2 A. K! Z+ b0 a  Q4 ]
  12859.                   match-lay; X& y) s* g% C5 o3 G$ _7 n
  12860.                   match-lt& C0 f1 @1 X; P/ Q
  12861.                   match-lts! ~; c6 @; C6 p+ z; \& L/ w  T. u
  12862.                   match-th
    ( l4 K2 @, Z# L) e1 {
  12863.                   match_col( H8 t1 ~& s4 `/ ^/ ~
  12864.                   mdashlist
    0 [7 H  h2 h3 H. R& V) m4 M6 E( \
  12865.                   ;MPOPLST               ;function added and then move to ac_bonus.lsp by rk( Y+ v: N8 a( G) K/ e. R9 Z
  12866.                   n$ R0 P1 J% n. D, d  R
  12867.                   name
    * w' p. I1 v( c" V1 M
  12868.                   ncolor2 Y) q1 [. @5 E+ [
  12869.                   nlayer! i( O0 U7 B7 J* H
  12870.                   nltype& ^+ k$ M% d; y& m9 k% H( [: ?) }
  12871.                   nthickness
    - g- O! }  n: e& V1 u
  12872.                   off% j) C/ U1 S6 r  G% v1 k& |
  12873.                   old-idx
    0 r) e2 T; G8 [9 b$ h# ?
  12874.                   olderr
    0 S6 Y' G; k# k, x7 _  p
  12875.                   on
    ' x1 \% I' P' J  U4 K
  12876.                   onoff
    8 l$ o! \8 ^. L) G5 `( w; A
  12877.                   patlist5 ^- Q7 D  s% \4 ]6 u
  12878.                   pattern
    6 B" v$ E6 |# X
  12879.                   PL_WIDTH_GETTER       ;function added by rk6 I+ q. o. t& ]) K
  12880.                   POLY_SS               ;var added by rk1 Q; P4 n- k, X: R
  12881.                   ;POSITION              ;function added by rk and then moved to ac_bonus.lsp9 d' k  M6 D' Z; h1 u! @
  12882.                   proplist
    5 g: |7 h4 Q& S: F5 l
  12883.                   reset-lay
    3 N2 ]1 U7 B* U; i  v$ l. N
  12884.                   reset-lt, }% q5 H; B! I, A/ [
  12885.                   s
    9 A% s  G! Y) h
  12886.                   selset
    : k1 g) Y$ o6 ?. v7 D  P# y
  12887.                   set_col_tile
    ' m# }' K6 P3 u- G" W
  12888.                   sortlist
    5 t+ r" t9 Z3 J6 G: x, H8 t
  12889.                   ss. A9 O+ w6 T* b  M9 r  [* R
  12890.                   ss_in_current_space  ;function add by rk.
    ; G' x# `& X0 s1 r" n5 A
  12891.                   ss-index4 A9 R3 ?1 g4 c3 ]9 n$ C
  12892.                   ss-length
    2 C' y! r1 l( C3 N7 r/ m
  12893.                   ;ss_remove_locked     ;function added and then removed by rk.. a; e1 a' F3 Q, R' Z
  12894.                   sslen
    # N8 V1 Y9 S/ E6 @! J" t5 `
  12895.                   temp_color
    9 }* ^* k' Z1 H
  12896.                   templist& K" _; K1 U6 v0 I9 X
  12897.                   test-main-ok
    : c5 F  Q7 _7 ^+ @" J6 ?
  12898.                   test-ok
    2 D: `* L6 V" ^7 t/ O! L4 R
  12899.                   testidx6 Q8 X) x7 ?! y
  12900.                   testlay
    1 p6 o  A) R8 F6 h4 Q
  12901.                   th-value! j0 Q9 v: U% i/ x' @* ]
  12902.                   thickness+ e4 l4 ?& F7 y4 [
  12903.                   tile
    ! C- @$ _( T9 O; G
  12904.                   tile_rect9 Q6 p( t. [% S$ g& v2 `0 U* F: e
  12905.                   tilemode
    ( B' n7 R$ H! A2 Q
  12906.                   ;TNLIST           ;function removed and moved to ac_bonus.lsp by rk, a3 K+ _, m7 h
  12907.                   TXT_SS            ;var added by rk# |& \8 {7 x" {. o0 T. g' ^- h* U" j
  12908.                   ;undo_init        ;removed by rk.
    ( R% \- C  l0 R8 E$ |
  12909.                   vi9 p# w9 g" y1 r  x
  12910.                   vpf7 g4 N( @; G+ o" N. E" y9 t
  12911.                   vpldata6 l* N& E2 g/ |
  12912.                   vpn' a- M3 H4 |6 p. ?+ F2 X
  12913.                   which_tiles9 a% x; T+ h! I/ O
  12914.                   width8 k) c4 d" L6 x% g, S
  12915.                   x* R$ E! l8 I, f
  12916.                   x1
    4 @) T. m, p+ \$ ]' \. M2 w
  12917.                   x2% V* p* Q1 Q' C" D0 o
  12918.                   xdlist) J8 G1 ^+ R* s6 _& P. d
  12919.                   y4 k* K9 d. a2 a( A) c+ o2 L, o' v! X; L, c
  12920.                   y1" O7 Y9 X, z2 \1 h9 Q1 t: s$ \
  12921.                   y2
    ! V4 d6 p9 _" i& B8 c+ H( z9 I' ]
  12922.                 )1 e5 H: g! _/ Z6 C& S# F; ?
  12923. ' N8 w' [2 V9 e& ^1 c
  12924.   (if (and (not init_bonus_error) 6 d2 J4 V3 @& \; r. u( @
  12925.            (equal -1 (load "ac_bonus.lsp"  -1))
    . w' a0 _  f5 n) J
  12926.       );and5 Z8 e1 }, G2 ]5 Q' ?
  12927.       (progn (alert "Error:\n     Cannot find AC_BONUS.LSP.")(exit))4 y+ d0 G) ~: k* ^6 C
  12928.   );if; e& J9 e3 k6 z/ T# D% N
  12929.   (init_bonus_error (list' J% G% z" w1 q6 J6 N7 r0 C9 o$ E
  12930.                      (list   "cmdecho" 0
    0 D# Z: Y# o. u# _; [
  12931.                            "highlight" 0, _. h2 L7 N! ]6 d
  12932.                            "regenmode" 1  t& ~0 k- w1 G/ s" g
  12933.                              "ucsicon" 0
    6 n) e6 c- h+ C4 z  [, ^( O3 {
  12934.                      )
    # y2 W) ]8 n! n
  12935.                      T     ;flag. True means use undo for error clean up.                    * a+ t& X' ^# `$ y. H% Y# f/ G( o
  12936.                     );list  ; p* h# a( S* q3 X3 _: {5 G! R
  12937.   );init_bonus_error
    - R; s* ]# D+ r5 m$ q' D5 k: s

  12938. 3 ^# A- F7 Q* f  a9 {) P; z% Y
  12939.   (cond( ?$ T- w6 |( l6 n8 Z
  12940.      (  (not (ai_notrans)))                       ; Not transparent?! q! H. {, X7 F/ U  h7 u6 p4 D  @
  12941.      (  (not (ai_acadapp)))                       ; ACADAPP.EXP xloaded?; a5 r) x* U7 e' J
  12942.      (  (not (setq dcl_id (ai_dcl "exchprop")))) ; is .DCL file loaded?
    2 j) B8 g1 p' O2 y: O: f9 \5 {' l
  12943.      (  (not (setq ss (ddchprop2_select))))       ; objects to modify?* W8 x. D0 _6 Q6 y, j- }/ ], W
  12944.      (t
    4 j* a5 O" C, f! |
  12945.         ;(ai_undo_push)
      |6 v3 _. e. ^. ?# {( ]+ F
  12946.         (ddchprop2_init)                          ; Everything's cool,9 h) g3 O6 u. ]- J; l! \& ?
  12947.         (call_chp2)                               ; so proceed!
    ) N! ^4 x$ P6 j+ F5 w' f$ _3 t
  12948.         ;(ai_undo_pop)
    " d, l4 [5 Z" e5 }; ?2 u- I7 p0 I
  12949.      )
    ; r% }# ]7 F& h6 V. `  I! l$ |4 Z$ R
  12950.   );cond close
    & K( K, _& f/ S

  12951. * b, H/ v5 |5 c; [5 T; v6 M- o
  12952.   (restore_old_error)
    : `2 I' K+ b! D# V/ f
  12953. 7 \  W! \$ o" W
  12954. (princ)8 H! s) U/ p# D" s/ u- N' P! z
  12955. );defun ddchprop2
    3 N8 H- D# m( Z% q1 j0 W

  12956. 8 O/ i7 N7 ]( I8 i7 K
  12957. ;;;----------------------------------------------------------------------------
    8 D# V/ g0 R$ |9 K; P% s8 s

  12958. , v: B8 m9 x5 G. N" T
  12959. (princ "   EXCHPROP loaded."): W/ R; ^, v, u5 J, _
  12960. (princ)" U$ C4 O+ e: s6 K  W

  12961. 0 C7 z; i* x+ S1 }6 O& _" R3 U
  12962. ;;;----------------------------------------------------------------------------; {: H( U  ]4 T
  12963. ;;;---------------------------------DDCOLOR_LSP--------------------------------+ l4 F5 V* B5 K
  12964. ;;;----------------------------------------------------------------------------. ~8 _" g. U" J7 o
  12965. 1 _  u$ a9 I  n8 O4 J. Y) G6 N
  12966. ; Next available MSG number is    24
    ; D4 F5 n. j, i; }" c* G7 T( H
  12967. ; MODULE_ID DDCOLOR_LSP_
    9 {9 C* v  L$ `$ W# d2 a
  12968. ;;;
    5 {# t5 K3 G; f2 L) ~
  12969. ;;;    ddcolor.lsp
    + I) P! O3 A7 x  L
  12970. ;;;    & `- m! ?8 S- l9 ?
  12971. ;;;    Copyright 1990, 1992, 1994, 1996 by Autodesk, Inc.
    * A$ }% S* V3 z% b
  12972. ;;;7 A0 H' p4 m  V! P# s" U1 ]3 B) S0 e
  12973. ;;;    Permission to use, copy, modify, and distribute this software2 y2 [8 B. o6 b1 b  x% c" o
  12974. ;;;    for any purpose and without fee is hereby granted, provided. w3 W$ \+ R7 V& B% _
  12975. ;;;    that the above copyright notice appears in all copies and
      ^' T2 Y) y$ n' F4 {: k
  12976. ;;;    that both that copyright notice and the limited warranty and! N4 p9 m: R: Y# G* p- v* g% T
  12977. ;;;    restricted rights notice below appear in all supporting
    1 m+ R/ ?7 \# ~3 A( R6 j
  12978. ;;;    documentation.
    ! ~/ H8 K" H3 V5 U) f1 I! V
  12979. ;;;
    , D* W$ b1 W( J- S& u1 ^
  12980. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.4 M( a  o9 I( o  S! Z
  12981. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF5 q9 h' ?& L7 b5 K6 K
  12982. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    ! g9 y+ G: c/ N
  12983. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE+ Z+ N5 ~; K0 J4 j# [
  12984. ;;;    UNINTERRUPTED OR ERROR FREE." ]4 T/ H- S2 v
  12985. ;;;
    3 M6 C. t0 N/ o6 ~: ~6 [) }; T+ x
  12986. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to+ ?3 Z, `/ m& i0 c8 j( W0 m) x& b' X
  12987. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer" z1 l( u$ |4 c. D
  12988. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    * K& E) @* n) V+ B- Q% Z/ [
  12989. ;;;    (Rights in Technical Data and Computer Software), as applicable.9 f# I( \; i8 S5 O
  12990. ;;;+ j; K8 [* o2 Q! a7 ]
  12991. ;;;.. ]( w" E- ^) C3 Y; \
  12992. ;;;. d" c: j% J3 `' _2 p8 z
  12993. ;;;----------------------------------------------------------------------------! D& V5 C+ y. s% i+ E
  12994. ;;;    DESCRIPTION
      `/ b, \- [/ \1 X3 R& P
  12995. ;;;     . i7 |* I0 n) T2 F, x7 n: n' t) ?
  12996. ;;;    Chromatic Pallete style color selection dialog., C$ T' i0 j; d5 w& {2 w0 Q" C
  12997. ;;;    . V5 W/ x# O9 B  _, U
  12998. ;;;    Globals:
    ' e- _+ h" ]& j; a$ A7 `7 e. c' p
  12999. ;;;    * ?. B/ K" D0 X
  13000. ;;;          chroma_color - Integer color index.  The last value selected$ L$ @8 q: M% f  v, y4 {" G
  13001. ;;;              by the user in chroma dialog.  It is not cleared or reset
    * ?* E; z9 `0 o6 b5 _5 [
  13002. ;;;              by a cancel.  Only used for communication between callback6 o( o) d7 v$ X! }! a4 R) Q* D
  13003. ;;;              functions and the (chroma) funciton.1 J) S* h* S" x$ D3 |4 j  b
  13004. ;;;   
    1 S& d0 H2 b( c! r0 g; D6 x
  13005. ;;;    Depends on the definitions for the dialog provided in chroma.dcl., q; j1 x. ~* ~2 Y, P
  13006. ;;;   
    2 O' b' l+ ?. ]5 P7 A$ S) l
  13007. ;;;
    + |7 d0 w7 J& d9 d" ^
  13008. ;;; C:DDCOLOR -- Dialogue front end to the CECOLOR sysvar.  Uses the chroma
    2 T) ?8 {0 ?7 L( U6 k. y. A4 p! C
  13009. ;;; pallete style color selector.
    + l* t8 A- k9 B! F( _( z
  13010. ;;;* j$ G1 h$ k6 W* r; b8 @+ `: T* l
  13011. ;;; ===========================================================================
    : ]4 @3 K4 U: o: q# H
  13012. ;;; ===================== load-time error checking ============================
    ! j' D2 P  p- }* B- q) ?
  13013. ;;;( ]2 ^* r+ o2 V

  13014. ; j9 @+ I' H" h) u
  13015.   (defun ai_abort (app msg)1 {- z' p1 G$ \
  13016.      (defun *error* (s)6 n! d7 b6 ~* ?
  13017.         (if old_error (setq *error* old_error))
    % Y0 u0 w; v( k1 A9 a: l
  13018.         (princ)  J! ~- f$ ~9 X% _8 @6 U! S
  13019.      )
    . n& \, A: I" T* V
  13020.      (if msg( r9 n& w8 O7 \1 @
  13021.        (alert (strcat " Application error: "
    ' G% Z6 v9 T6 F
  13022.                       app
    ) v' l3 K9 U" M' G
  13023.                       " \n\n  "3 x+ d/ f  r# \1 q/ ]* p& ]7 f0 G
  13024.                       msg
    " R' k8 K) Z9 f& s. P
  13025.                       "  \n"
    ; ?: x4 k% r; A% s, b; q8 }
  13026.               )
    ( }, y4 e" [; }, B6 K% p
  13027.        )
    5 v1 m8 j0 o+ J; O* v
  13028.      )& g5 J9 d+ r1 O+ A3 h% T) ]
  13029.      (exit); z! I* e5 O: a, S' ?
  13030.   )
    , y/ M1 O1 W+ _5 _  t1 y* J

  13031. 8 X6 d5 u# e! }/ s7 s" l- C
  13032. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,( Y+ `7 _9 b  W3 T
  13033. ;;; and then try to load it.
    + j1 `' w2 _. g2 _$ b5 B* [
  13034. ;;;
    $ n! E! Z" c; K0 @* a3 G6 g$ j
  13035. ;;; If it can't be found or it can't be loaded, then abort the
    , w9 V1 t+ u8 U& G0 _' S
  13036. ;;; loading of this file immediately, preserving the (autoload)+ g+ B/ i! n5 c0 M: B
  13037. ;;; stub function.
    ' ~  p2 d4 ?/ H

  13038. ' _: N8 F0 l5 {. f* B$ _& L
  13039.   (cond* m1 ^. {3 k, U' }( V
  13040.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    6 a( B6 K6 M' z$ a- ~8 z, I) Q' V1 u

  13041. : L, }: v' D% ^" j: p' \: }- i
  13042.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    7 I! A) q: f" @
  13043.         (ai_abort "DDCOLOR"
    6 X# V2 B- G( r1 Z7 V, R& o# U
  13044.                   (strcat "Can't locate file AI_UTILS.LSP."
    - I7 j5 |3 F) [' O
  13045.                           "\n Check support directory.")))! a; c8 Q+ V0 d! [
  13046. ( F7 |! ~9 H$ t7 n
  13047.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it" {& @, a' }0 j* G0 ^% P" n; w0 O
  13048.         (ai_abort "DDCOLOR" "Can't load file AI_UTILS.LSP"))
    . l/ A9 x: r/ d$ n
  13049.   )
    ' d" k  @5 m& U. R& V& U
  13050. ' ]: V) s$ W& {8 K0 m5 z6 d$ y0 ~% e
  13051.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP0 j% Q1 ]7 X" Z8 n+ X* a- L5 U
  13052.       (ai_abort "DDCOLOR" nil)         ; a Nil <msg> supresses
    3 d' S( Q  M. u
  13053.   )                                    ; ai_abort's alert box dialog.4 v0 \9 q: |) x6 h5 c" l6 ~
  13054. 4 _# ]! X* Z' |' I* B7 a3 }* T* \
  13055. ;;; ==================== end load-time operations ===========================$ m6 p) a# {- t; C3 D! ~

  13056. , B0 f- l$ k) t
  13057. (defun c:ccc (/ co_oce clrx co_err co_oer lay_clr)- z: K' l* R5 C! b4 M2 n) Z
  13058. 2 g; Z1 m) |  j2 @& t' B8 o
  13059.   ;; Main Color function, called by setup code.
    / X3 q. i1 D  y* [8 ?9 m9 L3 c: q
  13060.   (defun ddcolor_main()0 `& z: C) W+ l' a- n
  13061. 2 u/ Z3 ]6 r6 v# F0 |$ |* e
  13062.     (graphscr)  f) u! a6 M) R( l! e. F
  13063.   
    + D$ n0 ], i6 T3 Z6 d$ F: z
  13064.     ;; Get the color of the current layer, for possible BYLAYER color swatch.8 X: }% `) Z$ u" T
  13065.     (setq lay_clr (cdr (assoc 62 (tblsearch "layer" (getvar "clayer")))))
    ( ^8 l0 K' o5 }  l- p. t! b7 V
  13066. 9 t8 L7 W' p2 P  Q- h: E/ i
  13067.     ;; Call the dialog here...* ~0 F/ V+ o. w" |$ h/ F; e) S
  13068.     (setq clr (acad_colordlg (cstoci (getvar "cecolor")) T lay_clr))5 V! d5 {1 w5 R  M3 L+ [
  13069. # G- u3 L' R7 s- A7 s8 X# v
  13070.     (if clr, [1 K" p9 v( ]+ u4 h* g. |" Q
  13071.       (setvar "CECOLOR" (citocs clr)))
    9 k& ^8 U/ Z% E1 Q( e
  13072.   )$ J  {0 ?- H/ h4 T; f! }3 K
  13073. & R$ u& S, s3 @5 u) x3 q; W! D5 M
  13074.   ;;;
      ~+ n" v1 x5 q# l& }
  13075.   ;;; CSTOCI -- Color string to color index0 \2 N' k  ]( k5 O7 _9 l
  13076.   ;;;   Convert an arbitrary case string into a color index.% f6 J" g- G/ ^  \; V
  13077.   ;;;   Returns nil if string is not a valid color.# u5 V- u" m; g$ r; l* P
  13078.   ;;;
    9 p6 k3 @' t% J. H0 m; n9 @& o
  13079.   (defun cstoci (str): ]/ r- i7 v4 T/ A
  13080.     (setq str (strcase str))
    0 N% N! M# P4 h% p
  13081.     (cond, J* R! [: G9 W; C: L, R
  13082.      ((= str "RED")        1)
    5 t1 }' v- r9 M$ u
  13083.      ((= str "YELLOW")     2)8 E3 D: s6 Q  w% w. r. W
  13084.      ((= str "GREEN")      3)& o( h* X# ]: Y, d* t( O$ p4 N
  13085.      ((= str "CYAN")       4)
    - j$ o7 K  L( P
  13086.      ((= str "BLUE")       5)
    $ s) ?6 U2 r+ J. n/ ~# T) E
  13087.      ((= str "MAGENTA")    6)$ t2 a8 c4 H2 N" }1 \4 _
  13088.      ((= str "WHITE")      7)
    % e8 k3 Z8 [+ _3 f% c
  13089.      ((= str "BYLAYER")  256)# X6 c5 n& ^- l' X, ~/ e( Y
  13090.      ((= str "BYBLOCK")    0), N' y+ n0 T, Q3 ?4 f
  13091.      ((= str "BY LAYER") 256)6 ?4 b& ?6 c4 M3 x
  13092.      ((= str "BY BLOCK")   0)
    9 ?  p$ G  k* a9 a  Z7 J! l
  13093.      ((and (< 0 (atoi str)) (> 256 (atoi str))) (atoi str))
    5 ^7 n' p  m/ A: A0 ~3 Y
  13094.      (nil))
    5 v* r$ |; [. y" y/ @
  13095.   )! F: j, C# x  V6 n

  13096. 8 a) `9 J+ H5 V; C# N" P
  13097.   F( P* n2 U2 E/ f
  13098.   ;;;* ~( \3 N3 G3 c) N) i
  13099.   ;;; CITOCS -- Convert color index into standard color name.. i. {: I' h) I! ]5 n1 r/ S
  13100.   ;;;    Will return the standard and logical color names as text
    + _$ f, _( G1 p' M- H% }  V
  13101.   ;;;    strings.  Returns nil for out-of-range color indicies.
    * f; e* z8 e: c6 b# r
  13102.   ;;;  G0 A  s( `0 ~2 ~7 _
  13103.   (defun citocs(i)3 @9 ]; X$ A$ |8 S8 T% Y7 W3 w
  13104.     (cond
    9 `# E+ s" P6 x. K' F
  13105.      ((= i 0)   "BYBLOCK")' K$ y' a; [# F
  13106.      ((= i 1)   "red")
    1 `/ j% w0 }9 _
  13107.      ((= i 2)   "yellow")
    0 z, v2 S4 e( C; {% m0 Y4 C
  13108.      ((= i 3)   "green")
    5 C4 u% T* S2 l* y! p' d8 z8 L( x
  13109.      ((= i 4)   "cyan")/ A" h/ `, n) I: [* G
  13110.      ((= i 5)   "blue")
    ; [% e$ J1 \( p) r; x
  13111.      ((= i 6)   "magenta")" S- O/ z- g0 @0 U
  13112.      ((= i 7)   "white")
    # x# }% |4 n% Y0 ^" r' c; V, U7 v4 k3 v
  13113.      ((= i 256) "BYLAYER")' }0 g4 d" y5 N) `+ n9 f
  13114.      ((and (< 0 i) (> 256 i)) (itoa i))
    9 b; p4 O( [  X( {' V! [, K, z$ z5 |
  13115.      (nil)); f9 A1 J1 o% [$ x6 L0 L
  13116.   )
    , |/ b- ~5 Y9 W6 z: m. D) Y

  13117. 6 D/ i, f2 b1 t, ]2 h/ X0 V/ r5 o
  13118.   ;; Start of ddcolor
    3 T# z3 v3 N4 L7 D: d" }
  13119.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    " C' K7 ]5 i$ W; f4 z' ?) f
  13120.         old_error  *error*            ; save current error function
    9 k5 z8 }  a' c" {  O
  13121.         *error* ai_error              ; new error function
    $ a; K) M% i3 ^$ c2 R. V
  13122.   )6 `3 l0 p. d/ o  W+ R' ~
  13123. ) \5 [' S5 Z) D6 [
  13124.   (setvar "cmdecho" 0)! p8 w6 b3 `9 X& V! \" P4 b& p7 ~
  13125. ' w6 X" `3 |4 f. h, E
  13126.   (cond7 M& Z3 s8 p+ I
  13127.      (  (not (ai_trans)))                        ; transparent OK0 ~7 c8 h0 r. i" u" D8 n. K! p
  13128.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?# v4 c9 b- r7 \* x2 T# B: y: g: w
  13129. + w, A8 x# p/ ~- B; G
  13130.      (t (if (and (/= 1 (logand 1 (getvar "cmdactive")))
    , Z( R) q9 J- ]' j6 H7 b; h
  13131.                  (/= 8 (logand 8 (getvar "cmdactive")))
    - \$ x+ t% h) c
  13132.             )9 O' b! N+ e* {, b
  13133.          (ai_undo_push)
    " U& o) x6 c! G8 r4 i. d
  13134.         ). i: o- K& x+ d$ g  ]( C0 o
  13135. $ L+ k7 S1 F% B& @  B' @* [
  13136.         (ddcolor_main)                          ; proceed!, }0 B# |4 O, N. M- V. f3 l6 ~
  13137. ( k- T: O0 _' u% h! b4 r
  13138.         (if (and (/= 1 (logand 1 (getvar "cmdactive")))
    - f# p) p: }" c
  13139.                  (/= 8 (logand 8 (getvar "cmdactive")))
    7 H$ _' ^( d) O9 n# T; _+ u) M
  13140.             )
    5 k) @0 U3 l4 H; a8 z) g2 O! d
  13141.          (ai_undo_pop)# [. j  g$ t5 \) J1 d
  13142.         )
    / I" V0 d/ O" U
  13143.      )
    . {2 H$ {8 l7 j1 _5 I6 R( V5 c: z/ [
  13144.   )
    6 I  ~3 {' x+ M- s6 O1 X2 j  r

  13145. 8 R# h% [+ F5 v5 x9 P/ x# ]
  13146.   (setq *error* old_error)
    7 i1 Z+ u; M1 e7 r3 O" v# z
  13147.   (setvar "cmdecho" old_cmd)
    ! H: \# T5 Y0 D: }0 n: S$ k& H
  13148.   (princ)
    # [' s: ]2 s$ h

  13149.   R6 U) |+ e7 t" {/ E  x
  13150. )
    " S; |% a4 \7 M' C5 q( R+ P

  13151. " g9 j9 H5 o5 t6 n5 H- q( f$ d
  13152. ;;;----------------------------------------------------------------------------) l1 F2 B# T2 g3 j5 s6 m1 `
  13153. . g9 }0 n* P6 c
  13154. (princ "  DDCOLOR loaded.  ")& Q0 [' h4 `- n: J3 Z( D
  13155. (princ)) N% F( ^4 z! m  A% f. ~8 ?! T; }
  13156. $ h% R: U1 z5 P) B
  13157. ;;;--------------------------------------------------------------------------;
    9 E4 X" _4 [- t3 ~2 j; Y: }5 T. d
  13158. ;;;---------------Chon NHANH Nhieu Doi Tuong GIONG THUOC TINH----------------;
    , i' \! y2 q7 u: h
  13159. ;;;--------------------------------------------------------------------------;+ _# z, t! H3 W1 T8 ~1 U' |  V
  13160. ;;;   ssx.lsp
    8 t+ f( E# ^, @! g$ |+ G5 }
  13161. ;;;   Copyright (C) 1990 by Autodesk, Inc.
    . G/ ~+ b. r, f( E6 h& p) y
  13162. ;;;   Copyright (C) 1991 by Control Systems, Inc.% O4 m) E6 A8 V% z- g* [) q
  13163. ;;;! x; ], x5 X  L7 l7 E
  13164. ;;;   Permission to use, copy, modify, and distribute this software and its
    4 G, C, p5 Z' v1 Y/ U+ Y
  13165. ;;;   documentation for any purpose and without fee is hereby granted.0 Y2 _! \8 A/ i/ G3 X
  13166. ;;;4 |3 L9 o& s1 {! O
  13167. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
    ' E% Q  r. m+ l/ s: _
  13168. ;;;   ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF! i+ {9 p& N' s; K+ N8 ?% a
  13169. ;;;   MERCHANTABILITY ARE HEREBY DISCLAIMED.8 H, n. {3 S4 l5 S& ]- R
  13170. ;;;
    : h& j; H9 J/ l# x: i" |6 ~
  13171. ;;;   Larry Knott                        Version 2.0    7/18/88% ?( @, d0 r0 w" T
  13172. ;;;   Carl Bethea & Jan S. Yoder         Version 3.0
    ) Q9 w3 a3 O4 R) v; r, R5 G
  13173. ;;;   Enhancements to (ssx).
    & b- i! P7 {7 U, d% K/ O% Q2 r
  13174. ;;;   15 March 1990
    : v8 S  Y# _2 I0 L8 A
  13175. ;;;1 H8 S+ l. g2 _8 T( _, p
  13176. ;;;   ARTIST Software, Inc               Version 4.0   December 19915 V6 x/ ]! m3 R" c6 Q7 D- Q$ ]
  13177. ;;;   Modified for FLEXICON usage. If the variable FLEXVAR = 1,8 b  }# v& D- u4 r7 b
  13178. ;;;   use Flexicon menus' `. w# A1 N. v  B
  13179. ;;;8 ~  e( F9 L" E8 ?) {4 p6 m
  13180. ;;;--------------------------------------------------------------------------;
    # Y& [$ L/ p2 y$ A, N  k) \
  13181. ;;; DESCRIPTION
    " b  n# S7 G  ^; E# r7 V
  13182. ;;;                              SSX.LSP                                 
    * Q+ y9 E7 S# [$ v
  13183. ;;;                                                                          5 M) W5 {( F# F$ _
  13184. ;;;   "(SSX)" -  Easy SSGET filter routine.                                    8 P1 {6 x0 U, S8 J$ [: |0 v& {
  13185. ;;;                                                                           
    ( I. B# s3 _! w' E/ p# x
  13186. ;;;   Creates a selection set.  Either type "SSX" at the "Command:" prompt   
    3 K, l& O" C2 @2 ?6 A% l6 q4 Q
  13187. ;;;   to create a "previous" selection set or type "(SSX)" in response to ! q0 \! K0 D  E2 T
  13188. ;;;   any "Select objects:" prompt.  You may use the functions "(A)" to add ! _: G6 I) d' |5 X  Z
  13189. ;;;   entities and "(R)" to remove entities from a selection set during 6 U8 |5 P. w. H# B3 I& X
  13190. ;;;   object selection.  More than one filter criteria can be used at a
    : q- ~7 ^) `6 C
  13191. ;;;   time.         3 h, s7 b" N' I0 {1 T8 l4 P
  13192. ;;;                                                                          
    8 b  W  O0 ?0 ?% c
  13193. ;;;   SSX returns a selection set either exactly like a selected
    ) ^: P' V" {9 \7 |
  13194. ;;;   entity or, by adjusting the filter list, similar to it.
    4 o9 o( f" z) h
  13195. ;;;
    % k$ }5 w$ w& Y9 d9 e
  13196. ;;;   The initial prompt is this:
    1 h8 q$ C8 n/ z
  13197. ;;;   1 S7 A. O1 Y8 ]4 B) I+ E
  13198. ;;;     Command: ssx
    5 Q+ v  ^: M* c; \7 F' L
  13199. ;;;     Select object/<None>: (RETURN)7 `4 r1 m8 y* a: y0 _
  13200. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
    1 k7 o4 @# Q- D! n  b1 ~
  13201. ;;;   
    1 j$ B2 I* B# b8 ^  ]
  13202. ;;;   Pressing RETURN at the initial prompt gives you a null selection / a, i' m% b3 Q0 C
  13203. ;;;   mechanism just as (ssx) did in Release 10, but you may select an 7 X; h& b1 r2 n& f( S
  13204. ;;;   entity if you desire.  If you do so, then the list of valid types
    / ^( W+ F% `. b! [6 e& Q
  13205. ;;;   allowed by (ssget "x") are presented on the command line.
    9 ^8 y3 W/ |) S* [
  13206. ;;;   
    1 ]: ?7 l- u5 N
  13207. ;;;     Select object/<None>:  (a LINE selected)
    $ p& e2 X2 U' M# B, [
  13208. ;;;     Filter: ((0 . "LINE") (8 . "0") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))
    * b: ?( K/ G1 J" |
  13209. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
    " ?5 @1 I: L8 l( f5 \3 J( K
  13210. ;;;   9 {, V1 p8 d$ X" I* P" c- \: \
  13211. ;;;   At this point any of these filters may be removed by selecting the
    ( G* P8 x% g7 v( ^
  13212. ;;;   option keyword, then pressing RETURN.
    . E+ u! ?. h- H. W; Z- v* F% ]
  13213. ;;;   " y! \6 {+ J' h) i% C
  13214. ;;;     >>Layer name to add/<RETURN to remove>: (RETURN)
    ; E" x6 c3 J0 `1 ?! q
  13215. ;;;         $ K" ?* d( d* j1 ?& b  e3 ~+ K) c
  13216. ;;;     Filter: ((0 . "LINE") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))) M8 r- k( A2 j" C% o
  13217. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
    ' P( `. Y- A0 [) C4 Y, m9 u- `
  13218. ;;;   * u9 |7 h) o" Q5 Y" p$ C, a' {
  13219. ;;;   If an item exists in the filter list and you elect to add a new item, 0 e% t# b1 w0 F: U% N
  13220. ;;;   the old value is overwritten by the new value, as you can have only 9 P6 j1 r' b' g. L8 e
  13221. ;;;   one of each type in a single (ssget "x") call.% R( n5 `* ~( J2 d6 c8 h9 ^
  13222. ;;;! E0 f3 b+ k% K1 Q( F, u
  13223. ;;;--------------------------------------------------------------------------;; t3 Q, Q* E1 {. _7 N
  13224. ;;;+ f4 S8 t1 g; o3 Q5 A, i3 ~
  13225. ;;; Find the dotted pairs that are valid filters for ssget3 v! c! H& k/ ^" C7 E" D
  13226. ;;; in entity named "ent".; V4 @+ w7 U0 l7 Z$ V1 ^( z  P% h
  13227. ;;;
    3 C; s' ^7 i6 @; ?, k: Z6 M/ F
  13228. ;;; ssx_fe == SSX_Find_Entity4 p$ F7 E4 z; K, b
  13229. ;;;3 x4 `9 n( v9 t
  13230. (defun ssx_fe (/ x data fltr ent)- f- l8 `9 {) H# C3 l
  13231.   (if (and (= flexvar 1)(/= t2 "Pick"))
    $ h) M- t7 [% ]% b
  13232.    (setq ent nil)
    + F- \5 B; H9 k0 @: X
  13233.    (setq ent (car (entsel "\nSelect object/<None>: ")))1 o6 Q+ P* Q1 j( u, Z. Q
  13234.   )9 T- a, G- r& A1 U, r" N
  13235.   (if ent& U" p" |  y  v$ w  N5 P6 D4 O
  13236.     (progn  a* V# ]7 F1 L3 {8 K
  13237.       (setq data (entget ent))
    , V4 Q: T. O) k2 W
  13238.       (foreach x '(0 2 6 7 8 39 62 66 210) ; do not include 38) x* f9 }4 `' W* _
  13239.         (if (assoc x data)" r" p, v; T1 m* g8 o3 {
  13240.           (setq fltr 3 h4 O+ f1 @3 v& j) O" Y2 d  h  T
  13241.             (cons (assoc x data) fltr)- a' g+ ?$ p" A. W
  13242.           )& ]; j% T# f9 S* i
  13243.         )
    6 E- Q1 H: ^! b
  13244.       )    7 F( x- p' e9 W6 R' }+ D9 K# U
  13245.       (reverse fltr)
    $ D# _" R# w7 ^3 {5 ?
  13246.     )0 n" q- b* w8 z9 t' e
  13247.   ) - @" f5 w4 n# M, q2 p. N) A0 M
  13248. )3 U: B$ q! D: b, u' }) E0 d- \
  13249. ;;;( d; L& }  c1 [/ n$ o
  13250. ;;; Remove "element" from "alist".: A. s$ ~# i1 U( f
  13251. ;;;! B; H  u- x5 v( }2 p
  13252. ;;; ssx_re == SSX_Remove_Element
    + j3 U- e4 F* U) Q% w# V6 ^; ?+ B
  13253. ;;;) w7 Z7 U- M& y8 D
  13254. (defun ssx_re (element alist)4 @" G0 m9 x- Q) q  t
  13255.   (append
    2 F  _( o- T0 n% Q
  13256.     (reverse (cdr (member element (reverse alist))))
    ; V, C9 w7 ?2 c
  13257.     (cdr (member element alist))   - [# }" U* b3 i8 \
  13258.   )7 U& [% [7 F9 `, _1 o
  13259. )
    3 B- P- o1 X' K# e- @/ o
  13260. ;;;! D& k1 I3 ^- m/ J) K1 @( X. m: j
  13261. ;;; INTERNAL ERROR HANDLER 4 w' a; K; o/ m
  13262. ;;;- b9 a" ]% U: p: X2 s. i
  13263. (defun ssx_er (s)                     ; If an error (such as CTRL-C) occurs
    ( m$ T5 f" p- F8 S0 u" V
  13264.                                       ; while this command is active..." n3 K4 U5 }( y0 Z: H8 {! N- z8 J
  13265.   (if (/= s "Function cancelled"): T& n. P) l6 ?  k
  13266.     (princ (strcat "\nError: " s))
    ! w; o' }0 `5 p: Y' e7 {! T  r+ P
  13267.   )! M3 S; E, k0 J( Q! V
  13268.   (if olderr (setq *error* olderr))   ; Restore old *error* handler: t2 {4 F$ L) c# t) N! S
  13269.   (setq flexvar 0)
    ( f" G, x9 I$ t6 d
  13270.   (princ)
    3 a# Q! V+ t( j" a$ C6 m
  13271. )# M. `, a2 Y2 M( f6 S5 v; _% f
  13272. ;;;4 y7 ~* d- f7 B$ r  z
  13273. ;;; Flexicon call routine9 q7 o6 b& ^8 k, n5 j5 [
  13274. ;;;
    4 _9 `! P; I) _7 Z( g' p- _
  13275. (defun flexmnu (a)1 v, A3 h7 x" }
  13276. (if (= flexvar 1)
    9 a1 K- D+ |9 l1 Y, g6 l
  13277.   (command "FLEXICON" (strcat "FLEX" a))
    + m% w  n$ x9 ?
  13278. )
    7 D, i( F2 ?7 W: y' R; w" `
  13279. )! }* }8 s$ ^  w
  13280. ! H" ~; S; n2 \- m7 Q
  13281. ;;;   6 E, r! z! D9 H7 i
  13282. ;;; Get the filtered sel-set.. Q1 c4 b' v: V- G$ M/ ?% k
  13283. ;;;
    # o8 l. `, j9 |+ i7 q
  13284. ;;;6 D+ k: e1 z7 _
  13285. (defun ssx (/ olderr)+ K: A4 ]' H6 z( v% _
  13286.   (gc)                                ; close any sel-sets            
    5 j7 w& r) j& A) _# L
  13287.   (setq olderr *error*
    * L3 h- C; _* ~% o$ ?
  13288.         *error* ssx_er % m0 S. N. O6 b% M3 B
  13289.   )
    ) b1 i7 @. d! A$ `/ n
  13290.   (setq fltr (ssx_fe))
    . _' J* o8 {4 U! w: A
  13291.   (ssx_gf fltr) . w! p+ N8 [0 Y( B, w2 [8 X- r3 M) X
  13292.   (if (= flexvar 1)/ {: i" w- v% B5 A
  13293.    (progn  ?+ e% r: y2 Y+ b& G: ]2 `
  13294.     (prompt "\n \n \nNow select the required EDIT command and (P)revious.")$ n0 y! }. Q* J; V+ K- z4 \, Y
  13295.     (flexmnu "EDIT")
    * m3 q* z' F" c) P' k& @: T
  13296.    )
    9 H8 S7 g$ d& h; D/ m
  13297.    (command "p"): E. Y  r% t2 t. s) h' a6 ?
  13298.   )
    6 ~8 _6 i, [9 f( J
  13299.   (princ)
    # S, J4 M! g% j' s; K% o/ w
  13300. )1 T1 ]+ x6 M2 g- J* Q) S
  13301. ;;;
    & X3 v# [0 `% E! ^4 S5 U- Y
  13302. ;;; Build the filter list up by picking, selecting an item to add,) d5 }7 B. Y! S( D
  13303. ;;; or remove an item from the list by selecting it and pressing RETURN.& h0 i3 H) F; T
  13304. ;;;
    7 U+ C( P* e2 h. u" f" u
  13305. ;;; ssx_gf == SSX_Get_Filters
    1 q) ?$ P5 ], p/ S# k
  13306. ;;;5 O4 D. }/ g/ c$ {8 h
  13307. (defun ssx_gf (f1 / t1 t2 t3 f1 f2)
      L; T2 U: A+ }& K7 @* F% }
  13308.   (while
    ) X* g! Y: C* u( O
  13309.     (progn
    3 j; T$ h2 r7 K( f. U
  13310.       (flexmnu "SSX")
    7 a: y4 V! L) L
  13311.       (cond (f1 (prompt "\nFilter: ") (prin1 f1))); q; k- d3 Z( l3 [4 Z
  13312.       (initget
    & Q" X0 L5 l& Z9 }
  13313.         "Block Color Entity Flag LAyer LType Pick Style Thickness Vector")
    1 W+ |' h3 \$ t( s8 y" b0 E. ?; o+ j0 ~) q
  13314.       (setq t1 (getkword (strcat/ N+ N% p$ F: p
  13315.         "\n>>Block name/Color/Entity/Flag/"2 B1 V0 }; f& R2 p; |" i: L5 @# w
  13316.         "LAyer/LType/Pick/Style/Thickness/Vector: "))) % x! k- s8 F  G' r2 \" S
  13317.     )7 Y$ ~% {2 o! y1 J
  13318.     (setq t2( E4 }: Z% ]& V! R/ o
  13319.       (cond
    # `( {  l  Z$ J: U7 V4 |
  13320.         ((eq t1 "Block")      2)   ((eq t1 "Color")     62)8 w! |: [. k! L+ W8 q
  13321.         ((eq t1 "Entity")     0)   ((eq t1 "LAyer")      8)1 ]+ ~% W+ q$ d1 N
  13322.         ((eq t1 "LType")      6)   ((eq t1 "Style")      7)
    # v8 J8 i7 w. ^0 a
  13323.         ((eq t1 "Thickness") 39)   ((eq t1 "Flag" )     66)
    , S) b) ?; b% c, |* y- o! w* i( Z
  13324.         ((eq t1 "Vector")   210)
    9 w/ x& u3 g( i$ N# F8 C7 q+ u
  13325.         (T t1)
    / d$ }2 W! ^* Z& v; N0 v7 {& X0 Q+ K
  13326.       )
    % v, Q  N! S( |3 i/ Y' d& k8 u  ^3 A
  13327.     )8 a0 C7 [' Y# E  b( z5 P
  13328.     (setq t3% t# p) @' z# w( m
  13329.       (cond2 h! K! [0 c+ G% X2 c5 y$ }9 J
  13330.         ((= t2  2)
    1 ]/ Z; b3 N. U4 J( J: _4 ]( c. |
  13331.          (if (= flexvar gtads 1): F6 P! k. B* b; ]7 A5 J
  13332.           (progn6 @( w  d  a: Y8 d/ N/ J1 \" E/ F+ b) S
  13333.            (prompt "\n>>Block name to add/<RETURN to remove>: ")
    " ~% l" `+ d; G0 x, L! H3 D9 \, `- W9 [
  13334.            (gttable "BLOCK")
    + D# H7 p( t) }
  13335.           )
    # X; W6 \! r; l% ?
  13336.           (getstring "\n>>Block name to add/<RETURN to remove>: ")
    " P' V7 v8 [( {4 O
  13337.          )5 }( |5 B9 z2 j* j6 v
  13338.         )
    ' D3 h, E2 ~# e/ Y% ~( L( J
  13339.         ((= t2 62)  (initget 4 "?"): f( |" M( U/ G6 g9 H
  13340.           (cond
    7 d  `' f/ s* b7 `" O, b
  13341.             ((or (eq (setq t3 (getint % K) V8 j, F$ }% `* ^0 X$ A* P5 p
  13342.               "\n>>Color number to add/?/<RETURN to remove>: ")) "?") , B) s8 ^3 E. r9 ~
  13343.               (> t3 256))7 Z. o; J% s* `/ t
  13344.               (ssx_pc)                ; Print color values.! p+ ~4 _8 ?3 l, e
  13345.               nil" M6 I, @/ W6 R/ W, n
  13346.             )& i# }$ z/ p" D; q7 @1 N/ B
  13347.             (T
    5 O" I4 Z. v9 E& G  ?/ P* i7 ^7 T' N
  13348.               t3                      ; Return t3.9 i7 t, S8 h$ ?  V4 B: J# W8 A
  13349.             )" G9 L. y7 f$ z
  13350.           )
    5 C. l" y* R* i
  13351.         )0 ?" R! ^( g1 R% C+ C6 L/ V
  13352.         ((= t2  0) (getstring "\n>>Entity type to add/<RETURN to remove>: "))
    / D' t$ ?9 i1 g
  13353.         ((= t2  8)
    2 b% w$ M9 t3 z4 \/ I: `2 [: Y
  13354.          (if (= flexvar gtads 1)0 U8 ?9 l1 p; w# ?7 @3 _
  13355.           (progn$ A: A( b3 r" {
  13356.            (prompt "\n>>Layer name to add/<RETURN to remove>: ")$ L1 T& z0 B+ i+ M. i+ N
  13357.            (gttable "LAYER")
    & Q" ]( H  Q  r
  13358.           )- m  J! l2 F: [! F! j7 i+ ]
  13359.           (getstring "\n>>Layer name to add/<RETURN to remove>: ")0 u5 Y, w2 ?% Y7 q& i, d& J
  13360.          )8 h6 z* t. `; o* X, R+ x
  13361.         )
    + i' e& l3 S7 X1 z% b! ]: N$ v
  13362.         ((= t2  6)   _2 }1 y$ w. q  B+ b% x
  13363.          (if (= flexvar gtads 1)
    , V2 Q5 m/ x6 g# `$ c
  13364.           (progn
    2 B$ d# }: n( ~' b8 P
  13365.            (prompt "\n>>Linetype name to add/<RETURN to remove>: ")
    , P! r4 [0 n. ]' G: j) R& U
  13366.            (gttable "LTYPE"); ^* F+ f6 k# l$ g& C. N% [
  13367.           )! c! R! y$ o8 `5 F+ Y
  13368.          (getstring "\n>>Linetype name to add/<RETURN to remove>: ")
    4 _2 j0 s2 E, k" `5 c, o5 L
  13369.          )
    6 O, ?0 g( y- X' O' N* Z& ^* |
  13370.         )
    ; p+ p; K' a& Y$ }
  13371.         ((= t2  7) $ H! D; M& v$ O4 Q
  13372.          (if (= flexvar gtads 1)5 t: g* f/ f8 ], ^7 S& e) }; A
  13373.           (progn
    # T* g2 q# E) O8 L) b
  13374.            (prompt "\n>>Text style name to add/<RETURN to remove>: "). d& c9 z; A7 j0 v: \+ J
  13375.            (gttable "STYLE")
    7 `8 _0 H0 K& [, z% t
  13376.           )0 Q$ K- L% v; {4 n
  13377.           (getstring "\n>>Text style name to add/<RETURN to remove>: ")
    : I& L$ o$ V4 @
  13378.          )+ u9 U2 A/ c+ q& N6 p$ V3 A' Q
  13379.         )
    ( z  t. O) a' G
  13380.         ((= t2 39)
    4 x# F! _$ u* F7 Y% ~0 a9 b7 o
  13381.            (prompt "\n>>Thickness to add/<RETURN to remove>: "); B0 `  l  }% E. h7 W+ [
  13382.            (if(= flexvar gtads 1)(gtfnum"Thickness to add:")(getreal))/ ]9 o4 b$ P6 h- g1 K! w7 G
  13383.         )* k) M  h6 l6 R! z  o9 y
  13384.         ((= t2 66)  (if (assoc 66 f1) nil 1))
    & \/ c3 S; V/ ~
  13385.         ((= t2 210)
    / a# u! f+ Z5 J9 ?& k. N7 ^5 A
  13386.           (getpoint  "\n>>Extrusion Vector to add/<RETURN to remove>: ")
    , a% S" E6 t5 T9 T; F: B8 p0 P9 t
  13387.         )7 s, h4 h" _7 Y
  13388.         (T          nil)
    8 B1 d9 u9 H3 Y* X
  13389.       )
    ! Q: S  b4 n) G0 |  c' N
  13390.     )4 B7 h" n, L& U+ p5 n1 z3 L' _0 H, T
  13391.     (cond
    + ]4 `# N: k+ j% Y* i, v; c: g
  13392.       ((= t2 "Pick") (setq f1 (ssx_fe) t2 nil)) ; get entity
    / d, X  ], W5 n% y
  13393.       ((and f1 (assoc t2 f1))         ; already in the list
    : l7 c6 S! R+ y- r1 {( K% G; B
  13394.         (if (and t3 (/= t3 ""))
      E. `, H% h5 Q6 u& |. X! Z4 L
  13395.           ;; Replace with a new value...            
    ' z8 O& }% s2 x% d: ]( S, ]
  13396.           (setq f1 (subst (cons t2 t3) (assoc t2 f1) f1))
    / k9 Z/ K  ~# o+ s( X) [! \
  13397.           ;; Remove it from filter list...9 k8 L$ L9 n$ b
  13398.           (setq f1 (ssx_re (assoc t2 f1) f1)) ) W- o$ e. F: t* H. @
  13399.         )  
    % H; ?/ n" c# `2 e) T4 r( p5 x
  13400.       ). g4 P  W/ ~0 ~- ^& o. l+ j
  13401.       ((and t3 (/= t3 ""))
    6 A; j5 b- C7 i! P4 ~) |7 q
  13402.         (setq f1 (cons (cons t2 t3) f1))3 q$ Q3 E& [% _: M+ R
  13403.       )3 ]' E# w& L+ b
  13404.       (T nil)
    3 a1 M3 Y$ n" n
  13405.     )
    / [2 {% r1 E' P. o& ^. n; C
  13406.   )7 V& l1 C- L4 ~/ B% z' e' g
  13407.   (if f1 (setq f2 (ssget "x" f1)))6 }3 V! x- ?' v; l8 Q
  13408.   (setq *error* olderr)0 [, A% h  v6 o1 w; {
  13409.   (if (and f1 f2) " g7 i2 J. {. n( E# z, X
  13410.     (progn" @5 U3 A* J8 o- ]& J7 C
  13411.       (princ (strcat "\n" (itoa (sslength f2)) " found. "))
    6 u# s( P7 \+ P) G+ C7 Q9 X
  13412.       f2
    : r) ^+ R) ?* g5 ^# A6 o, P' E
  13413.     )
    " a- W4 k0 v6 j/ E: a
  13414.     (progn (princ "\n0 found.") (prin1))4 S7 q8 Z  N/ x) U
  13415.   )
    3 m& n- q1 L) k  d* g0 e
  13416. )5 n" f7 P5 g: u* A) g
  13417. ;;;  e6 K! |( o7 [' F5 r+ `) P2 P
  13418. ;;; Print the standard color assignments.
    % a' M7 D# C; h+ D& ]
  13419. ;;;" n& S+ N1 @$ ^. {2 B  t
  13420. ;;;
    9 |& K' k: }$ n5 m; [
  13421. (defun ssx_pc ()4 h6 `9 j" b) F5 Z
  13422.   (if textpage (textpage) (textscr))! [' T+ b) J/ y( }9 q" ?3 P' E
  13423.   (princ "\n                                                     ")4 W8 m% B& \+ A- e% W
  13424.   (princ "\n                 Color number   |   Standard meaning ")
    , `! T! H5 ?7 R( A: v& `
  13425.   (princ "\n                ________________|____________________")/ h" R! d$ @0 \; U6 e  M4 \5 ~
  13426.   (princ "\n                                |                    ")
    3 a, w/ z! e  G; Y: [
  13427.   (princ "\n                       0        |      <BYBLOCK>     ")2 Q8 F1 K+ s! u
  13428.   (princ "\n                       1        |      Red           ")' P8 X& r0 I& M+ H/ b
  13429.   (princ "\n                       2        |      Yellow        ")
    ( p% D/ X8 m- H5 H
  13430.   (princ "\n                       3        |      Green         ")* ^+ ^; z8 J4 z0 [- c7 i3 d
  13431.   (princ "\n                       4        |      Cyan          ")$ T( ^6 u0 d' `; v! ?
  13432.   (princ "\n                       5        |      Blue          ")
    % M# z: u, [8 P& p1 K- W
  13433.   (princ "\n                       6        |      Magenta       ")
    % K! S1 P( f. N: H. M
  13434.   (princ "\n                       7        |      White         ")% }0 A2 o5 ^6 S4 Q8 W" Z2 [2 c
  13435.   (princ "\n                    8...255     |      -Varies-      ")) n1 U2 [; w1 N
  13436.   (princ "\n                      256       |      <BYLAYER>     ")0 M+ K0 J3 ^$ R4 E; m) z8 ?5 v
  13437.   (princ "\n                                               \n\n\n")
    7 {* l4 U2 K4 ~2 ~/ x5 ^1 b
  13438. ), E5 N/ r4 @1 @$ g6 j
  13439. ;;;$ ?" x4 d! C$ P1 o* N- I3 r( p+ k
  13440. ;;; C: function definition.  j# A7 Z( Y' P! J+ V" _/ j
  13441. ;;;/ Q2 ~0 {# U  w: K2 L! H
  13442. (defun c:ssx () (ssx)(princ))
      t) v% a- c, j% P# h4 H+ T$ Z. r
  13443. (princ "\n\tType \"ssx\" at a Command: prompt or ")
      i- M3 z! D6 n2 w1 `8 W- q( O
  13444. (princ "\n\t(ssx) at any object selection prompt. ")( P7 G" F. [8 w& x
  13445. (princ)
    - ?$ k8 h" J$ q* j
  13446. - k) B8 `  b/ v
  13447. ;;;--------------------------------------------------------------------------;
    6 \0 J5 T  ?6 i5 U+ A5 M, |0 S3 m
  13448. ;;;--------------------------------------------------------------------------;
    4 a2 I/ [6 g* R4 P! D
  13449. ;;;--------------------------------------------------------------------------;
    # L) f# R9 z1 h% \
  13450. (defun S::STARTUP ()
    1 j( n* C# Q# W- T- ^# Z  |
  13451. (setvar "cmdecho" 0)
    9 D% p3 R1 g* O; M% `8 f
  13452. (setvar "cmdecho" 1)
    6 }3 @0 o+ Y/ I' L/ J
  13453. (setvar "LTSCALE" 10)
    " Q! G+ p" p5 w: t  b+ B8 Y+ h0 Q
  13454. . e! E. F' w' h* z# f) \
  13455. ;(command "_load" "chenKH.fas")
    7 l0 o' j6 k: S/ |
  13456. ;(command "_load" "ctcot.fas")- U$ {, N; ?/ C% o* k  U4 I5 V3 c
  13457. ;(command "_load" "damdoc.fas")- r# t$ M8 |, L: M$ g' K& e6 n
  13458. ;(command "_load" "ghichu.fas")
    * |7 a. f- l) U3 ^/ |: T* K% `9 Z
  13459. ;(command "_load" "hamtutao.lsp")
    + T- X/ q" ~: H
  13460. ;(command "_load" "KHOITAO.fas")( z; Z  c& b/ s8 w0 A4 d
  13461. ;(command "_load" "KHthep.fas")2 b6 H  y$ L* @) h/ ]
  13462. ;(command "_load" "mbmong.dcl")( Z6 A$ m) K3 |  Q3 c# h+ z; }: y1 n2 p
  13463. ;(command "_load" "mbmong.fas")+ C+ g0 ~$ A* z+ _: @5 l4 D; [
  13464. ;(command "_load" "mccot.fas")1 n) _* T6 f* |( l2 {2 Z" z
  13465. ;(command "_load" "mcdam.fas")6 ~$ Z5 ?+ w; E- u* e
  13466. ;(command "_load" "mcmong1.dcl")4 ]% H+ f1 f5 \
  13467. ;(command "_load" "mcmong1.fas")
    2 ]0 |) a- Y+ c( O9 W  Z" Q/ f
  13468. ;(command "_load" "mcmong2.dcl")2 U) `. _9 E9 m' @' s
  13469. ;(command "_load" "mcmong2.fas")  n% A8 a" z3 o# z7 d1 X. u
  13470. ;(command "_load" "mcmong3.dcl")/ D/ E7 q. @0 p) W2 n3 ]2 s
  13471. ;(command "_load" "mcmong3.fas")
    & j" Q+ w9 P) \! W' A( x
  13472. ;(command "_load" "mcsan.fas")( K; C3 R" |% q9 P; L
  13473. ;(command "_load" "thepdai.fas")4 w. ~, d' z) L$ P
  13474. ;(command "_load" "thepdoc.fas")
    % h/ T2 _2 f6 D* }, D" X" ~
  13475. ;(command "_load" "thepmb.fas")
    - A4 S- f0 j2 g- C" h
  13476. ;(command "_load" "thepphbo.fas")
    . G7 C2 c) W, ~& z* D
  13477. (command "_script" "thongso.scr")
    8 P" T9 l3 Q+ O# i! q3 {1 v
  13478. ;(command "_load" "thongso1.dcl")  Y+ X- V0 {5 N7 n5 O/ I6 ~6 b$ S/ C
  13479. ;(command "_load" "thongso1.fas"); r+ w( _. P+ D/ U% r) v  ~
  13480. ;(command "_load" "thongso2.dcl")0 p3 f' p% D' q, z
  13481. ;(command "_load" "thongso2.fas")
    , n1 u8 @# t  G+ j+ n1 ]
  13482. ;(command "_load" "tietdien.fas")& P+ L1 p5 Q# G5 q& n) x. L
  13483. ;(command "_load" "vehan.fas")
    6 i( f0 J2 ~/ P) ^( m
  13484. (command "_load" "phamDuy782006_TKT.lsp")
    / C+ e- S$ D& b3 _4 j+ p% v
  13485. (command "_load" "phamduy782006ganhtd.lsp")$ y1 r2 |8 R3 n
  13486. (command "_load" "phamduy782006ganhtds.lsp")
    ( a& p: ~. z3 R2 N0 z, {! k
  13487. (command "_load" "phamduy782006htd.dcl")$ S7 l) R9 w& d& i2 Z6 ?! k
  13488. (princ)
    4 j* r+ {6 e" m! `
  13489. )
    . R( _  f; H- g7 @) x9 Y

  13490. " T: \7 x9 h  u( _& b
  13491. ;; Silent load.
    9 H( `7 a$ s0 U" o" T* d
  13492. (princ)% D' i5 _7 M; e2 p

  13493. , ?. e7 V0 D. k8 G0 C+ T. z5 |$ Y

  13494. ; f( `1 ?. e+ X: F5 J2 x
  13495. ;; Silent load for the Express Tools.
    * N4 m: O, v2 `
  13496. ;; Altering this line will affect Express Tools functionality
    / Z  n0 H( j4 f- a7 c, u
  13497. (load "acettest.fas" (princ))7 ]$ k+ ^' u* H% k0 r' N
  13498. �32
Sao chép mã

& P. y. @' N: s/ j1 L# b00st Cách Thêm Menu & Lisp Vẽ & Fonts Chữ mở Gõ Chữ Administrator để Gõ% i. i  G! B& Z3 Y( n5 l' p+ J

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

2025-04-21 Plot.jpg

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

2025-04-21 Text Style.jpg

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

2025-04-21 Layer.jpg

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

2025-04-21 AutoCAD Message.jpg

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

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ề: 254)

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ề: 237)

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