AN KHANG - THỊNH VƯỢNG - VẠN SỰ NHƯ Ý!

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

 Quên mật khẩu
 Đăng ký
CẢNH BÁO và TẨY CHAY WEB filethietke ĂN CẮP files (trên DIỄN ĐÀN XD360) rồi xóa logo, xóa tác giả đăng lên web bán với giá cao. Đừng để bị mất tiền oan bởi hành vi ăn cắp của web filethietke bạn nhé!
Xem: 405|Trả lời: 0
In Chủ đề trước Tiếp theo

Bộ AutoLISP Do kts. Trần Ngọc Thắng TỰ BIÊN SOẠN + SƯU TẦM

[Lấy địa chỉ]
Upload
>> Mô tả tóm tắt nội dung file: Bộ AutoLISP chiến đấu Do kts. Trần Ngọc Thắng TỰ BIÊN SOẠN + SƯU TẦM dùng được cho AutoCAD Version Hight : Bổn CỐC CHỦ TUYỆT TÌNH CỐC : Ngưỡng mộ Long Cô Nương phái Cổ MỘ : Chờ Chết Sắp Sẵn Quan Tài Trong Mộ ĐÓ _-_-_ ^ _-_-_ Dại Gì Mà Chuyển Nhỡ Mai Này Tôi Chết Còn Có Cái Mà Dùng . . . Năm Nay Tôi Gặp Tuổi Hạn 49 tuổi . Các Cụ Nói 49 chưa qua 53 đã tới . . . Bó Tay Các Bác Luôn . . . Mà Xem Sách Các Thầy PHÁN TÔI RẰNG tôi thọ chỉ có 68 tuổi là tôi chết . . . còn những 19 năm nữa tôi mới đến số tuổi chết . . . Cũng Lâu Đấy Chứ các Bác ./. Chuyện Mã Lương vẽ giỏi đẹp . . . Được ông Bụt hay ông Tiên tặng cho cây Bút Thần : ông Dặn Mã Lương hãy vẽ Giúp Người Nghèo . . . LỆNH VẼ KHUNG TÊN ~ Tiêu Diệt Lệnh : Lệnh Xé Xác thằng Bé Ra Làm 100 Mảnh : Uống Máu - Ăn Gan : Mới Hả Giận
>> Tác giả: kiến trúc sư . Trần Ngọc Thắng [ đổi đường dẫn đến thư mục chứa LISP ngắn đi nếu dài quá không đọc được ]
>> Loại file: word Ảnh (jpg, png..) Khác  (Nếu file nén thì hãy cho biết loại file gốc trước khi được nén.)
>> Link Files trên web khác (nếu có): https://www.cadviet.com/forum/topic
  1. ********************************************************************************4 j: l7 q9 J9 g3 `9 _
  2. *             ACADLISP FOR AUTOCAD R.14 -> AUTOCAD R.2012                      *
    2 h) Q& b* O" v" m, S
  3. *         Tran Ngoc Thang DHXD-HaNoi41 from years 1999 -> 2015                 *
    & t. Y  x+ t* E0 N. B5 _$ v! v
  4. *                         Suu tam & Soan                                       *2 X; C" d  d' W$ x7 z) c
  5. ********************************************************************************; u9 l9 O: Q7 ~

  6. 2 f8 [$ c1 ^( z
  7. ; Next available MSG number is  104% N: r6 M3 y8 ~- g) b
  8. ; MODULE_ID ACAD2000doc_LSP_
    ! P+ ~' T8 S( Z! B6 o+ B, B
  9. ;;;    ACAD2000DOC.LSP Version 1.0 for AutoCAD 20001 M7 b1 z9 b& O7 W- B1 F2 ~' y
  10. ;;;$ {4 r, R( \' i& P0 r
  11. ;;;    Copyright (C) 1994 - 1999 by Autodesk, Inc.* j: N' R( g+ \7 y1 J
  12. ;;;  {7 R' P+ L6 g; e, B) b
  13. ;;;    Permission to use, copy, modify, and distribute this software/ k' n3 f5 K1 m# c
  14. ;;;    for any purpose and without fee is hereby granted, provided
    3 |, F  O8 \9 B' C* \
  15. ;;;    that the above copyright notice appears in all copies and4 r* J% c  q3 Y9 {1 d
  16. ;;;    that both that copyright notice and the limited warranty and! {* I( H/ N& X  s1 d" q  O6 j
  17. ;;;    restricted rights notice below appear in all supporting
    4 a1 C# t# }$ T0 R7 Q' c
  18. ;;;    documentation.
    ) E" V4 e5 F$ |7 M* H# [. N9 U
  19. ;;;
    - f# i  h$ U8 U2 z- |
  20. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    ! F" L- h+ J* v; P* \
  21. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    0 f& D  H* K5 U. n' ?- h' H
  22. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.; x) l  ~. G/ v& _7 E* n
  23. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE1 w  [3 r+ x% s; s
  24. ;;;    UNINTERRUPTED OR ERROR FREE.- w+ i# d$ s; }7 g  I! {) x: h
  25. ;;;
    - N. a: {0 e- i' c
  26. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to: y9 M8 S* G' j0 j" l
  27. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    1 I9 n% ~- j/ a
  28. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) $ X  s3 X% r- G# b* F2 M
  29. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    3 I8 o* ^% w5 r1 Y0 ^7 M5 ?1 p" q
  30. ;;;
    $ ], z' P, \' S5 b
  31. ;;;.: ^; u; X3 P4 C
  32. ;;;
    0 g# g* x9 j& ~) H/ _2 B0 A% u' r
  33. ;;;    Note:
    6 x$ Q% p& j& t5 U7 B
  34. ;;;            This file is loaded automatically by AutoCAD every time % [! j/ J# s2 h& O" x
  35. ;;;            a drawing is opened.  It establishes an autoloader and9 k& w( ?) P! N. E
  36. ;;;            other utility functions.5 u2 T" v  j* R0 X7 D
  37. ;;;
      {* D7 x( a, B% n3 j+ Z9 F- \
  38. ;;;    Globalization Note:   . p  ~3 |% P5 z, P/ W4 n
  39. ;;;            We do not support autoloading applications by the native
    * P) z& E% D1 t; t" u
  40. ;;;            language command call (e.g. with the leading underscore9 N; k2 r0 R7 m; _  x6 x8 F0 ?
  41. ;;;            mechanism.)
    9 d" A# y% l6 c% Z% s1 d! S
  42. & x& W; `1 C' t* q  [
  43. % ], K' m5 b* t' Q* x2 r: r3 I
  44. ;;;===== Raster Image Support for Clipboard Paste Special =====: j; P0 f8 o3 |* I! V9 ]
  45. ;;: ~6 o" x2 m- K. L
  46. ;; IMAGEFILE5 b! f/ t( E* z" X0 y' U+ x0 j
  47. ;;( Q7 B/ t. e0 H4 _2 |
  48. ;; Allow the IMAGE command to accept an image file name without
    8 \7 s4 d' g. X
  49. ;; presenting the file dialog, even if filedia is on.
    ( W5 A3 _2 x& n
  50. ;; Example: (imagefile "c:/images/house.bmp"). c( j4 ]2 n9 D/ M- p
  51. ;;
    4 b' o1 @3 `: g; I6 q  k
  52. (defun imagefile (filename / filedia-save cmdecho-save)* D* ~) Q2 v9 c8 \' ?  {
  53.   (setq filedia-save (getvar "FILEDIA"))4 }8 G! r- r" C) h1 v- [
  54.   (setq cmdecho-save (getvar "CMDECHO"))' L) _7 C  d. n% X& j1 Y3 }0 ]
  55.   (setvar "FILEDIA" 0)
    . z# k1 s+ i4 S! v3 c8 {+ C
  56.   (setvar "CMDECHO" 0)
    ; V$ ^+ i/ I' i; D# E' Y
  57.   (command "_.-image" "_attach" filename)
    1 @6 X) j0 Y0 P6 l
  58.   (setvar "FILEDIA" filedia-save)7 X4 v* C5 R2 N6 d
  59.   (setvar "CMDECHO" cmdecho-save)2 @8 v, H) ?0 W- a
  60.   (princ)
    $ P/ b! Q7 s/ {
  61. )4 I/ G& S7 I$ o  q/ ]! m- v

  62. 4 Z4 v7 j) p. @9 k' y6 z
  63. (defun c:zx () (command "zoom" ".5x"))$ Q+ n/ k/ ^. c0 Z+ m8 h
  64. (defun c:zz () (command "zoom" "p"))- c( ^4 P* Z0 c8 W
  65. (defun c:za () (command "zoom" "a"))
    & G# S3 \; H3 r3 b
  66. (defun c:zd () (command "zoom" "d"))/ v8 _4 `8 W$ |2 h, h7 R5 f; x
  67. (defun c:ze () (command "zoom" "e"))
    , t! u5 p7 [9 {
  68. (defun c:zr () (command "zoom" "" ""))
    ! K4 y1 Y! O5 M& F5 Q. l
  69. (defun c:vv () (command "ucs" "v"))
    " F1 J' O% h- T2 d$ Y0 l, C
  70. (defun c:co () (ssget) (command "copy" "p" "" "m"))
    + R+ _7 t3 f$ \
  71. (defun c:c () (command "circle"))! U- v+ f/ w* |7 K
  72. (defun c:rt () (command "rotate"))
    & e. `3 {$ B: I) v) N* g- _' X
  73. (defun c:3q () (ssget) (command "_rotate3d" "ANGDIR" "value" pause (princ)))* e* _9 B% ^' r1 o- B1 @
  74. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))
    $ e  y3 m; ~3 w" r* |
  75. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))
    ! g$ Y  k, F. D5 i' l$ c: P
  76. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))- t( a2 [. r5 K% E  Z
  77. (defun c:r5 () (ssget) (command "rotate" "p" "" pause "5")). s& S, W' I" x# r, Y* X2 V( \& L
  78. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))" \" ^9 J2 E7 ?2 e/ W; d
  79. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))
    7 T9 Y4 X# O8 u  ^$ [2 J. `; h0 n
  80. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90")); T9 E# K$ h2 S" v
  81. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))5 q. V, Q+ J; i* X2 L
  82. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))
    # c2 @( g! B% G9 k; E* l& Z
  83. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    8 o; N8 d+ A' Q; O6 X
  84. (defun c:md () (ssget) (command "mirror" "p" "" pause pause "y"))
    ! z0 s' i+ V8 a8 q
  85. (defun c:fd () (command "find" "p" "" )(princ))(princ)* M6 Y- X; A2 @* {

  86. " Z) D6 A$ ~- {+ K
  87. (defun c:romantdim () (command "-style" "ROMANT-DIM" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)4 [3 s& I2 r! o* U% H& [8 Q; t+ E
  88. (defun c:romantext () (command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)
      l% s/ A6 Z& a. f* L
  89. (defun c:vnhelvthuong () (command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1""0""n""n""n"))(princ)4 L, T0 S: P* S+ ~/ O8 y6 I
  90. (defun c:vnhelvhoa () (command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500""1""0""n""n""n"))(princ)
    8 h8 S( g0 ?) ?2 u4 J$ m) w+ k4 A
  91. (defun c:truc () (command "-style" "TRUC" "impact" "0""1""0""n""n""n"))
    # G0 x: w5 ]" i& i2 t6 N4 X0 T
  92. (defun c:chu () (command "-style" "VERDANA" "verdana" "200""1""0""n""n"))
    + B' ]. |6 c* A; _) G8 z% s
  93. (defun c:cot () (command "-style" "COTES" "verdana" """1""0""n""n"))* G6 M7 {' f% m6 [/ F+ W/ Q$ t* f) W

  94. 8 X: F% s: z* B2 E6 _0 i
  95. (defun c:an () (command "-style" ".AVANT" ".vnavant" "200""1""0""n""n"))
    6 t+ v+ W# B( S
  96. (defun c:ah () (command "-style" ".AVANTH" ".vnavanth" "200""1""0""n""n"))& m9 C3 A1 \& b" N+ q
  97. (defun c:ha () (command "-style" ".ARIALH" ".vnarialh" "200""1""0""n""n"))
    1 w$ Y7 ^5 K; P3 I
  98. (defun c:na () (command "-style" ".ARIALNARROWH" ".vnarial narrowh""1200""1""0""n""n"))
    / w3 v8 J  G& X8 j7 W# T& ?
  99. (defun c:vn () (command "-style" ".VNTIME" ".vntime" "200""1""0""n""n"))
    ) k0 [+ n- s) [
  100. (defun c:vh () (command "-style" ".VNTIMEH" ".vntimeh" "200""1""0""n""n"))
    8 K6 x6 }; M" U  W

  101. ! W" Z; k% Q. p1 {) z
  102. (defun c:ps () (command "PSOUT" "CorelDraw-import-Photoshop" "W"))(princ);export the current view of a drawing as an EPS file
    / ^+ E& i' d* @: X- Z1 W6 r
  103. ; r: G$ k: f$ \; S# Y
  104. ;free lisp by cadviet,cd2k44& O5 Z2 y- j' @6 V- a2 a
  105. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=538305 ^% t5 [$ l- ^$ e
  106. (defun c:FTEXT (/ ent tstyle )4 Y/ X; I6 u# X3 w3 z
  107. (command "undo" "be")8 D  `% U# [; [- [! _7 v. V& y
  108. (setq ent (entsel "\n Pick text :"))
    1 L  _! e, u; ~1 K! n8 a4 T
  109. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    7 I$ O6 Q8 h' z+ Z! H5 Q' d. D
  110. (command "STYLE" TSTYLE "romant.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    . Q! }/ N5 W9 t# l2 R9 j9 U
  111. (setvar "TEXTSTYLE" Tstyle)
    ( e; T% ]( a) a% G! F. e8 c- z
  112. (command "undo" "end")& G  c4 Z0 d, w% C+ V: B! U- l
  113. )
    9 K2 @7 V0 T1 Z/ r7 X/ m
  114. ;Cam on cadviet nhieu 27-11-2023 04h15p36s (thanks cadviet)% w/ y/ v: H5 N; J3 D: g9 v  d% p+ q

  115. 1 ?7 h+ K1 e$ p! w* A
  116. ;free lisp by cadviet,cd2k44
    : l0 m3 e% K# p+ L
  117. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830. ^' U" P( ]* ]& B% L& a. g
  118. (defun c:Fvnh (/ ent tstyle )% h  f& v* w; e9 `8 F: E
  119. (command "undo" "be")
    ! u8 D+ H+ Q$ i! ]
  120. (setq ent (entsel "\n Pick text :"))2 T1 K/ i) G4 [
  121. (setq TSTYLE (cdr (assoc 7 (entget (car ent))))): X3 g/ R5 L  M; N, w
  122. (command "STYLE" TSTYLE "vnhelvh.shx,vnh.shx" "0" "1" "0" "N" "N" "n")$ |% \; |& Y* c4 c4 K, j$ e
  123. (setvar "TEXTSTYLE" Tstyle)$ W. C0 [$ i3 V3 k4 s9 ?& f
  124. (command "undo" "end")
    : i, Q# v+ z3 |. Y
  125. )3 ~$ D) }1 ~2 o- R- r9 u* Y; `

  126. 7 m% D4 Q2 H" u) I1 s
  127. ;free lisp by cadviet,cd2k44  M: d( T- X) ~# C
  128. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=538300 h+ S2 w  z7 v; X; K
  129. (defun c:Chbg (/ ent tstyle )0 V8 ^2 {8 `6 \: W3 L
  130. (command "undo" "be")
    ! c0 c& r6 p0 ]) |" G
  131. (setq ent (entsel "\n Pick text :"))+ s0 X+ F7 w# ^% O
  132. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))$ G' e! P. L& Q- M1 R7 n. X
  133. (command "STYLE" TSTYLE "chhbg.shx,vnh.shx" "0" "1" "0" "N" "N" "n")+ ~" r/ U, X& A$ U
  134. (setvar "TEXTSTYLE" Tstyle)+ S1 Z* B8 L  f* Y6 w( F- ~  v' u
  135. (command "undo" "end")
    0 h0 Y4 @/ q1 @! e
  136. )' M: O/ Q1 X- U! x1 J
  137. 1 S8 u7 X: ]  x$ v2 o
  138. ;free lisp by cadviet,cd2k44! d+ ?# F: i5 y; @# ~: a
  139. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=538301 T+ Y8 ~, j0 E) ]1 t
  140. (defun c:Chsm (/ ent tstyle )
    : h% _+ {2 V0 V1 {# F
  141. (command "undo" "be")9 D/ r/ `3 U3 O. d  {9 Q
  142. (setq ent (entsel "\n Pick text :"))
    8 Q1 G" F& h8 }8 S$ ^! Z3 x
  143. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    ; u$ P5 H: ^. E) k+ U
  144. (command "STYLE" TSTYLE "chhsml.shx,vnh.shx" "0" "1" "0" "N" "N" "n"). L9 {% X: v0 q/ ]* O8 |
  145. (setvar "TEXTSTYLE" Tstyle)
    " d* c0 _+ J! Q
  146. (command "undo" "end")! c9 M+ g1 @# s9 w, n+ j
  147. )
    2 d% ], B4 n5 J; [9 T
  148. * O  l0 c5 A  u0 K8 T% ?5 R
  149. ;free lisp by cadviet,cd2k448 `; \4 j, I1 ]8 a" Y
  150. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830. b8 Z5 w* H# ^- K7 w0 ?% \+ I
  151. (defun c:Fttf (/ ent tstyle ), }# Z& L7 r5 B0 N
  152. (command "undo" "be")
    ; h# g( `" w0 R  o
  153. (setq ent (entsel "\n Pick text :"))
    % L0 L' E! X' f2 L! C" l& Z9 F' q
  154. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    4 e! l0 `7 h) v( S% t4 E8 E! O1 y4 y
  155. (command "STYLE" TSTYLE "verdana.ttf" "0" "1" "0" "N" "N" "n")1 Z5 z4 q* Q) ^) L! ]  {2 c
  156. (setvar "TEXTSTYLE" Tstyle)
    8 B1 {% N. C$ b( f& s  V
  157. (command "undo" "end")" U9 @0 f3 t% k0 R3 ?% y
  158. )0 ]+ W; K8 g' N# }) u
  159. , X: \2 e& [5 {( F7 {
  160. ;;; ============================================
    3 q6 B* k* y) ?! U+ p9 ]4 a
  161. ;;;
    ! L. q+ ~  d" G* y0 O! a. x
  162. ;;;   LISP Creater Tao Duong Dan AUTOCAD2000
    3 \7 j+ ]9 v  d3 e# [+ ^5 ]7 D
  163. ;;;
    ! ?3 i% w' \2 P' U) |9 t
  164. ;;; ============================================1 W+ N: ]8 K3 b) a5 z9 {$ O; E
  165. * k# |  k7 v/ ]! U) S: j' G
  166. ;;; ============================================- M! g0 U- j. G3 P
  167. ;;;* h9 K( D; e  n7 L1 h
  168. ;;;          CREATING FROM AUTOCAD2000
    . P" u+ B6 e2 i8 {) w
  169. ;;;
    7 W! U# o+ F# _# D7 ^" \2 y/ h
  170. ;;; ============================================- e' x" V( I* n3 t1 g
  171. ( M$ \% W9 P# R7 I
  172. (setvar "INSUNITS"4)
    * v: _4 c0 W9 h
  173. (setvar "ANGBASE"0)) R) M. F3 w) c& H; T2 D  @
  174. (setvar "ANGDIR"0)
    . U8 C' \) D" C! D4 W& k
  175. (setvar "AUNITS"0)# l! x. s- s3 R9 j- B/ x6 r# q) k
  176. (setvar "AUPREC"8)
      Y. K4 y" h# O' V( J
  177. (setvar "LUNITS"2)7 [( c2 l' X. s4 T6 s" w# t4 w6 M
  178. (setvar "LUPREC"8)5 Z, y! f3 X6 v  N
  179. (setvar "ACADLSPASDOC"1) 4 h9 K7 [* Y, J7 c
  180. (setvar "pickbox"5)5 v8 G( `0 P. ~/ i, K1 Y" p0 w, {
  181. (setvar "blipmode"0)8 f0 L/ O; z, M7 y
  182. (setvar "mirrtext"0)9 q" n) k7 H0 v; z0 F5 @% O8 i
  183. (setvar "cursorsize"100)
    + L3 e, A  z& I5 m2 f
  184. (setvar "ZOOMFACTOR"75)( T+ o; e. `/ y6 i: V
  185. (setvar "LTSCALE" 10)
    / ?( ^, T( i2 c( Y$ l" m/ f) R
  186. (setvar "lwunits"1)
    & ^5 w* G2 f/ o; u% T$ i+ V' R) g
  187. (setvar "DIMBLK" "Closed")
    + o% h9 C7 R, i
  188. (setvar "DIMGAP"0.0693); L7 Z* I* `, T( h
  189. (setvar "DIMASZ"0.20)
    4 r/ P& I$ W3 T4 S$ u: H
  190. (setvar "DIMCEN"0.2), D# ?4 G% c; [4 C
  191. (setvar "DIMDLI"0.1)# i" o6 ~# C8 P. m
  192. (setvar "DIMEXE"0.0693)% X5 T3 T% C( S6 w' d, l9 ?! X8 Q
  193. (setvar "DIMEXO"0.25)
    - j3 ~2 x) h( O- r: o
  194. (setvar "DIMDEC"0)% T5 J1 |) h' g( Y# U' E
  195. (setvar "DIMTIX" 1)
    * _+ R* l& T/ W  p
  196. (setvar "DIMTXT" 0.099)
    0 K) ~7 ?% K* h6 p+ p6 B
  197. (setvar "DIMCLRT" 7)
    2 E. }4 g  V, B' F' ?
  198. (setvar "DIMTVP" 1). X4 d, [* R) `# |4 E# o) D, B4 K2 v: {
  199. (setvar "DIMJUST" 0)' I5 S9 L8 o6 C- c; s9 T* q! w$ ^
  200. (setvar "DIMTIH" 0)# {( ?: a- v! A
  201. (setvar "DIMTOFL" 1)& Z; M$ g, b- ~9 ~) u$ C
  202. (setvar "DIMSCALE" 1111.1111)2 @' O% r% |8 h, M* t, ?

  203.   Z7 g4 |, F5 c& I0 x9 z0 r& [8 h
  204. 1 |6 |1 y. b7 s7 [- I: b( }: s
  205.   L2 t7 s- f' ^
  206. (defun c:zp ()  (command "'.zoom" "p")): I3 ]$ E8 B; ~+ Q1 ?
  207. (defun c:zz ()  (command "'.zoom" "p"))
    $ d0 S5 b- a% M- y+ ~
  208. (defun c:ze ()  (command "'.zoom" "e"))0 N0 G% S+ u9 d0 X2 k  x5 r
  209. (defun c:za ()  (command "'.zoom" "a"))5 T6 |; v" k* O) a
  210. (defun c:zd ()  (command "'.zoom" "d"))
    2 ~7 E9 `7 t' w: F2 D$ u) W
  211. (DEFUN C:ZZZ () (COMMAND "ZOOM" ".25X"))8 |) T: c4 G! D8 q
  212. (DEFUN C:ZX  () (COMMAND "ZOOM" "2X"))
    " G- |( `3 Y2 I( ?0 U+ B6 I
  213. (defun c:de () (command "ddedit")(princ))" \+ C2 M6 o; {' L
  214. (defun c:dda () (command "Dimaligned"))
    ( t& `' l* l* U" H( }1 T. D9 _
  215. (defun c:ddb () (command "Dimabaseline"))
    7 f& }6 ~; D5 Q
  216. (defun c:ddc () (command "Dimcontinue"))
    1 r$ B* \7 y- a( o6 S7 E
  217. (defun c:dde () (command "Dimtedit"))+ G" I7 _& k( {5 k* X" _( ?
  218. (defun c:ddf () (command "Ddattdef"))3 G; `8 S) o$ }1 l( r% j
  219. (defun c:ddi () (command "Dimdiameter"))( H3 j# M& J, V# p, L  ~& \
  220. (defun c:ddl () (command "Dimlinear"))
    7 f' l2 V" A2 u4 b" f' ]* u
  221. (defun c:ddn () (command "Dimangular"))& i8 L) A$ N6 D% K: v" U6 s7 y
  222. (defun c:ddo () (command "Dimordinate"))$ u! Q- Q, e- Y2 ]
  223. (defun c:ddr () (command "Dimradius"))) E* E# W' S% n- Y
  224. (defun c:dds () (command "Dimstyle"))
    7 D2 Z+ r4 X* ^* s# X
  225. " A( ?6 S: }1 }- Z
  226. (defun c:DU () (command "dim1" "up" "select" "exit" pause ))(princ)
    + D( w2 @) I. h
  227. (defun c:DH () (command "Dim1" "home" "select" "exit" pause))(princ). k% ^' X$ V  v( c4 X9 w) _
  228. (defun c:UU () (command "dim1""update""all"))
    & S, u0 T! F* [
  229. (defun c:ded() (command "dim1""tedit")), C- {! N% x# l& h3 N8 }
  230. (defun c:da () (command "dim1""ali"))/ x; F1 Y& K, B* G+ ^
  231. (defun c:dll() (command "dim1""l"))
    + |. A) R  [) `1 V- i! ?
  232. (defun c:dan() (command "dim1""an"))/ F/ F% A! h# \6 E
  233. (defun c:d1 () (command "dim1""ra"))
    & G6 W- }+ @- k0 V& `- [! l1 \
  234. (defun c:n  () (command "dim1""new"))
    - C* W. V  ~, r$ n; w6 _2 i  H; S

  235. 4 s  N4 C' U3 R$ H+ i
  236. (DEFUN C:PE  () (COMMAND "PEDIT"))) v; p0 Y) {5 a) X( [
  237. (DEFUN C:PL  () (COMMAND "PLINE"))
    - `! k  {  T2 a4 e0 C# E2 w! Z
  238. (defun c:dd () (command "dist")(princ))
    + T; O( `% a+ _* B3 Z8 _
  239. (defun c:w () (command "pedit" pause "w" "au")(princ))) |6 t7 l1 {) t' L( X/ `. B" K
  240. (defun c:pg  () (command "polygon" "polygon"))
    2 Y+ c& g2 @+ K
  241. (defun c:el  () (command "ellipse"))9 Y2 R: Y% v& [) @
  242. (defun c:xe  () (command "explode"))* }5 K6 r) `  P: M- X* \* ?6 Z. z' \" V
  243. (defun c:eex  () (command "extrude"))
    " Y! B, s# a& I2 @" U
  244. (defun c:xg  () (command "xline""a"))
    , k: V: e* R8 L
  245. (defun c:xh  () (command "xline""h"))
    4 M- D* G! L# e$ o& s
  246. (defun c:xv  () (command "xline""v"))3 K, N- {8 s) g% ?: }" D6 F9 M
  247. * W" o( D. v( j0 K/ e
  248. (defun c:oc () (command "osnap""cen"))
    + s1 a' l$ E) S" v1 K! K) d
  249. (defun c:od () (command "osnap""nod"))- I5 X# @* x. e
  250. (defun c:oe () (command "osnap""end"))
    . r0 y% V6 S& B0 z. p5 [* ~, x
  251. (defun c:oi () (command "osnap""int"))
    ; ~8 }1 U% d' c- n. I) r
  252. (defun c:or () (command "osnap""per"))
    7 v& S- i( }! J; ~; B; ?
  253. (defun c:on () (command "osnap""none"))
    ' [9 i8 [! n3 h" B" x+ j
  254. (defun c:oq () (command "osnap""qua"))
    0 h3 P. d0 ]0 u+ O) g4 o/ t, u+ @
  255. (defun c:om () (command "osnap""mid"))
    - d2 X$ {! e+ }# R% I, j
  256. (defun c:ot () (command "osnap""tan"))
    . t; u' _' ~) @
  257. (defun c:oin () (command "osnap""ins"))
    : }; Z0 G# o  H0 D* l
  258. (defun c:oa () (command "osnap""nea"))
    # k1 a7 w9 T& o& C3 B: Q3 h6 K
  259. (defun c:ol () (command "osnap" "End,Mid,Cen,Node,Nea,Int,Perp,Qua")(princ))
    , v1 u! {# i- B* @
  260. ;(defun c:du () (command "dim1" "up" "s" "pick" "other")). Q7 ~% o1 s2 r+ I  D8 H! S- y
  261. ;(defun c:nn () (command "new" "y" ))
    5 l) f4 u6 R  i
  262. 2 b& a8 v. J0 X& L) E/ S
  263. (defun c:/ () (command "limits"))0 i- K, {+ K; e) R$ v, W
  264. (defun c:`1 () (command "region"))5 v$ N: s/ S2 F
  265. (defun c:`2 () (command "subtract")); Z; z/ B$ I& Q, {( c4 q
  266. (defun c:`3 () (command "union"))
    ; o) w, a& |- D+ t
  267. (defun c:`4 () (command "intersect"))( q' S3 W4 e+ Z" ]) d. X5 n' o
  268. (defun c:`c () (command "cal"))
    6 J. w6 P, T" {* F+ Z
  269. (defun c:`g () (command "Polygon"))( T9 T' q  a& S
  270. * |0 o. |( N7 {9 b5 @' q
  271. (defun c:lmi() (command "LIMMAX" pause "" "zoom" "all" )(princ))& P8 `5 R# C# e4 c( f: f3 S
  272. (defun c:drt () (command "DRAWORDERCTL" pause "Integer" "" "" )(princ))* V  G, m, E7 q7 @: @: P' p6 A
  273. (defun c:ip () (ssget) (command "print,_plot" ))(princ)
    5 w; z) E3 Q3 C& v' _! m# D" j, W6 ?
  274.   W7 x8 J6 W6 }6 ^7 t; C! l" p
  275. (defun c:ddm () (command "ddlmodes" pause))
    2 ^% v! W+ K3 F# T( S1 Z
  276. # @$ {4 t- F4 g: }
  277. (defun c:sha () (command "shade" pause))
    % T! j  Y' O$ H5 |' z, ]  u
  278. " X0 t, e* y2 L& I
  279. (defun c:sr1 () (command "surftab1" "p" "" pause))- t* O+ J* O0 e! J+ M
  280. (defun c:sr2 () (command "surftab2" "p" "" pause))( }& p7 L( X4 N2 _

  281. ) F+ k3 E% ~2 Y! Z2 C
  282. (defun c:ad () (command "audit""y")), b6 g: n  [5 g3 [  A9 y
  283. (defun c:q () (command "quit"))2 z1 K: v) `1 B) ?8 U  x

  284. 4 Q; _6 B  b4 K! R+ i4 y5 D
  285. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))
    / T3 t/ m  ^9 K( n$ i
  286. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))* t8 J6 n3 l; ]5 |- G) P
  287. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))" Y: M1 U7 N( f: ^1 n
  288. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))
    * {2 U/ c# F( r9 k$ U6 }
  289. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))
    , ]7 F0 E! p: V8 F: n% E$ F
  290. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))
    7 w5 k$ P! \4 R7 I
  291. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90")). r% k8 F( v2 M/ h7 X3 g
  292. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    ! P# a# U2 r1 Q$ I
  293. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180")). Z. Q  a! o# E& g& Q

  294. & h' h& J3 {4 a7 a- I1 W
  295. (defun c:u3 () (command "ucs""3"))7 N: b0 o7 a. B' t( Q1 j
  296. (defun c:ue () (command "ucs""o""end"))
    ) Z  f; e, q$ n- j. }
  297. (defun c:ui () (command "ucs""o""int"))8 `6 ]$ E* I' @  p6 ~8 a% X6 o
  298. (defun c:um () (command "ucs""o""mid"))
      I) T7 T  X3 Y- r, q
  299. (defun c:uc () (command "ucs""o""cen"))
    % f( O+ U* F+ I1 p% J% O* ~# X3 M
  300. (defun c:uq () (command "ucs""o""qua"))
    6 ^3 |1 ~% d4 {+ T
  301. (defun c:3s () (command "ucs""3"))0 g3 X' y* z  U. w$ Y  K7 D
  302. (defun c:sx () (command "ucs""s"))
    8 ]% `: O' O) }9 t! G  E, l  a
  303. (defun c:sf () (command "ucs""o")): d( r! X, ~0 k3 Z
  304. (defun c:sz () (command "ucs""p"))$ }4 k( T$ j! H9 C8 s9 t' o
  305. (defun c:sr () (command "ucs""r"))+ _! ~: \4 {! ^- w) Z, s8 x
  306. (defun c:sw () (command "ucs""w"))5 J. `/ M! f, E7 B: k0 l/ N4 x" d
  307. (defun c:fv () (command "ucs""v"))
    % |7 |. l3 T$ u& `% F3 n1 k
  308. (defun c:ux () (command "ucs""x"))
    " D/ t% D, P, Q* h8 M8 {
  309. (defun c:uux () (command "ucs""x""90"))4 ~4 }& w! N8 H, r. O; x5 H
  310. (defun c:xxu () (command "ucs""x""-90"))
    ! o/ }( T5 Y( s5 \4 i/ s- R
  311. (defun c:uy () (command "ucs""y"))8 M) s( E0 f4 ^. v7 W
  312. (defun c:uuy () (command "ucs""y""90"))
    * w8 A" r5 f8 l$ v
  313. (defun c:yyu () (command "ucs""y""-90"))
    ( m4 r2 \* T; b3 @! V, M* O6 c
  314. (defun c:uz () (command "ucs""z"))
    1 K. ^6 d1 W: i+ V/ F9 o4 W8 v
  315. (defun c:uuz () (command "ucs""z""90"))
    1 G5 i# z; j& a$ i! V7 ]
  316. (defun c:zzu () (command "ucs""z""-90"))! S) y: g6 U7 [; A+ _* k% a
  317. (defun c:uci () (command "ucsicon" "Properties" ))(princ)# L$ ~. h! g: z% c" I: y: d- W
  318. (defun c:ucm () (command "ucsman" ))(princ)
    6 f, S5 ^: s3 n. V9 D+ M
  319. ! a; H! N# Z* Y+ X: y" O+ E. Z2 ^
  320. (defun c:sa () (command "vpoint""_non""-1,-1,1"))
    3 ]6 x( g  r; _5 _+ X* a- }- ]
  321. (defun c:sd () (command "vpoint""_non""1,-1,1"))
    & w( L& R0 R7 @9 ?
  322. (defun c:se () (command "vpoint""_non""1,1,1"))3 D* C4 ?( L+ d8 }& Z$ j
  323. (defun c:sq () (command "vpoint""_non""-1,1,1"))& ]3 P* @5 S( _& _# j
  324. (defun c:vc () (command "plan"""))
    / v. @2 [, E+ T% }) {
  325. (defun c:vd () (command "dview""all"))* K$ o4 n0 o7 r4 K' x( @) `
  326. 0 p1 C3 T/ c1 S1 w5 ]
  327. (defun c:TT0 () (command "tilemode""0"))% @: {3 I8 ]/ |" w# ]( c' Q2 E
  328. (defun c:TT1 () (command "tilemode""1"))
    ( u6 [" C* [3 e; H* t( h) L2 Z

  329.   \6 g( U8 G1 r- L4 y1 Y0 t. s$ Z
  330. (defun c:vt () (command "vpoint""_non""0,0,1"))
    2 L! Z1 `- ?: D8 ~1 Z
  331. (defun c:vb () (command "vpoint""_non""0,0,-1"))
    9 \' b$ \9 w4 k0 M, W6 \% c  k
  332. (defun c:vl () (command "vpoint""_non""-1,0,0"))
    5 }: q9 `' ]/ u
  333. (defun c:vr () (command "vpoint""_non""1,0,0"))
    8 ~( Y& `6 h8 x8 X
  334. (defun c:vf () (command "vpoint""_non""0,-1,0"))
    , N7 r0 N( C- e" U: M+ n! C+ ~1 Z
  335. (defun c:vk () (command "vpoint""_non""0,1,0"))
    5 e  Q* t/ r, F7 H$ d

  336. * N8 I* k' `& H7 C8 D# b9 ?" \
  337. (DEFUN C:MM  () (COMMAND "MIRROR"))* F) P5 Q! N" B" A; A
  338. (DEFUN C:MP  () (COMMAND "MOVE" "P"))
    2 Z1 ~/ h5 u/ C; H2 Z0 h

  339. # Z' F! \+ T; {, W5 i
  340. (defun c:mee (/ a)& O3 [5 x& k& t
  341.   (setq a (ssget))(command "move"a"""end"pause"end"))0 {6 C6 u4 [( N
  342. (defun c:mc (/ a)
    * J! Q5 B+ g( u
  343.   (setq a (ssget))(command "move"a"""cen"pause"cen"))  S1 \7 |4 c& t8 M2 ]8 ^) M
  344. (defun c:cc (/ a)
      X, Y+ `7 i' I# S, D" R
  345.   (setq a (ssget))(command "copy"a"""m"))8 {5 l* X3 w- k
  346. (defun c:ce (/ a)
    " [" p/ R3 B: E
  347.   (setq a (ssget))(command "copy"a"""m""end"pause"end"))
    4 I/ y: E  r9 |, `
  348. (defun c:cn (/ a)% `! R0 m: x$ h/ ^0 s
  349.   (setq a (ssget))(command "copy"a"""m""cen"pause"cen"))
    * G* i# B. V* J, I& p
  350. (defun c:tl ()(command "trim""l"""))
    3 P9 i4 E$ B8 y# O" A
  351. (defun c:tf (/ a)8 m/ F0 p- W! |# K/ i5 a& X
  352. (setq a (ssget))(command "trim"a"""f"))
    - }3 ^  s. \7 Z/ `9 @) S' a
  353. (defun c:el ()(command "extend""l"""))
    / G3 w8 }% Q4 ]1 ]5 n' x7 {
  354. (defun c:ef (/ a)- f; p# n* W# k1 @- G' g) C+ U
  355.   (setq a (ssget))(command "extend"a"""f"))
    . u! i2 K) [: v9 u: c; @, ^
  356. 8 E% C/ g; V8 ^$ J: n3 q

  357. - `) F) t& Z0 p$ }: z/ r
  358. (DEFUN C:110   ()(princ "\nChon doi tuong can offset ra 110.......") (COMMAND "offset" "110")), [( X9 M2 [1 n9 V3 Q! _
  359. (DEFUN C:220   ()(princ "\nChon doi tuong can offset ra 220.......")(COMMAND "offset" "220"))* x4 k- Z* `. ~: g" F; S, T- P2 \
  360. (DEFUN C:330   ()(princ "\nChon doi tuong can offset ra 330.......")(COMMAND "offset" "330")). p( ]9 [4 r+ I' C: H$ n
  361. (DEFUN C:400   ()(princ "\nChon doi tuong can offset ra 400.......")(COMMAND "offset" "400")); }/ R8 ~/ R( e$ `; u  K
  362. (DEFUN C:55   ()(princ "\nChon doi tuong can offset ra 55.......") (COMMAND "offset" "55"))
    $ L! [+ f- Z) G3 Z
  363. (DEFUN C:600   ()(princ "\nChon doi tuong can offset ra 600.......") (COMMAND "offset" "600"))
    ) u5 d# e  ?' r; J4 d: O  A
  364. (DEFUN C:700   ()(princ "\nChon doi tuong can offset ra 700.......") (COMMAND "offset" "700"))
    7 f+ G- o/ T- D& s
  365. (DEFUN C:800   ()(princ "\nChon doi tuong can offset ra 800.......") (COMMAND "offset" "800"))* n3 A+ p5 ]0 e" N' u
  366. (DEFUN C:900   ()(princ "\nChon doi tuong can offset ra 900.......") (COMMAND "offset" "900"))
    . ^; K% w, |, y9 A! Z- s
  367. (DEFUN C:1200   ()(princ "\nChon doi tuong can offset ra 1200.......") (COMMAND "offset" "1200"))
    ; d% z( [  ~7 y& A+ J
  368. (DEFUN C:1500   ()(princ "\nChon doi tuong can offset ra 1500.......") (COMMAND "offset" "1500"))/ b3 B0 j3 C# z
  369. (DEFUN C:1800   ()(princ "\nChon doi tuong can offset ra 1800.......") (COMMAND "offset" "1800"))8 p+ g/ ~8 s* \3 o
  370. (DEFUN C:2400   ()(princ "\nChon doi tuong can offset ra 2400.......") (COMMAND "offset" "2400"))
    , F! S4 n4 K$ Z- v* E0 w/ P$ E, F
  371. (DEFUN C:3000   ()(princ "\nChon doi tuong can offset ra 3000.......") (COMMAND "offset" "3000"))
    5 _! O( n: {9 ]0 v/ M
  372. (DEFUN C:3600   ()(princ "\nChon doi tuong can offset ra 3600.......") (COMMAND "offset" "3600"))
    ; G7 k8 h! S+ u8 `8 @
  373. (DEFUN C:4200   ()(princ "\nChon doi tuong can offset ra 4200.......") (COMMAND "offset" "4200"))
    ' x& ]. {( i: B$ L+ f7 H2 ^
  374. (DEFUN C:5000   ()(princ "\nChon doi tuong can offset ra 5000.......") (COMMAND "offset" "5000")); V8 w: q  J$ ?) N, R
  375. - N$ M1 ~2 b2 O7 h) b* f: G
  376. (defun c:mla () (command "-mledit""av"))) B/ Y4 m# @9 o- v: i
  377. (defun c:mlc () (command "-mledit""mc"))
    * b. S0 T7 J7 V: z( X0 }
  378. (defun c:mld () (command "-mledit""dv"))/ p* E5 G2 k/ m) d+ ~
  379. (defun c:mle () (command "mline""end"pause"end"))
    ' i$ j* c/ _- b" Y  Q, |9 x$ K3 }' m
  380. (defun c:mli () (command "-mledit""ca""int"pause"int"))
    ; ]' ?! e: K' m; U9 |  G$ o
  381. (defun c:mlj () (command "-mledit""cj"))# ]& E& B2 i2 g3 r
  382. (defun c:mlt () (command "-mledit""mt"))7 i1 t/ }7 b, C: W) n
  383. (defun c:mlk () (command "-mledit""ca""end"pause"end"))
    ( l2 u4 Y" M$ _# l. Y
  384. (defun c:mlw () (command "-mledit""wa"))
    5 s3 U& D, i; S3 I% \$ m% r) {6 \: {

  385. & U8 w. _7 Z, B& u" C& G
  386. (DEFUN C:DCA () (COMMAND "DVIEW" "all" "" "CA")); a( `+ O7 J( k6 r" I
  387. (DEFUN C:DPA () (COMMAND "DVIEW" "all" "" "PA"))
    6 p6 O/ s, N, G- J5 @) w: I
  388. (DEFUN C:DPO () (COMMAND "DVIEW" "all" "" "PO"))
    + S1 U! H" |9 e& U3 }
  389. (DEFUN C:DDD () (COMMAND "DVIEW" "all" "" "D"))
    & _- P3 X9 B3 B9 o1 S
  390. (DEFUN C:DZ  () (COMMAND "DVIEW" "all" "" "Z"))$ h" X9 l# |* i! t
  391. 7 a* g" ]7 j$ @0 G* [
  392. (defun c:p0 () (command "pline""""w""0""0"))
    , o: v0 d. o8 x8 ^6 d& h
  393. (defun c:ot  () (command "offset""t"))
    $ k& T* p+ t' o
  394. (defun c:t  () (command "mtext"pause"j""bl""h"pause))( O/ c  H1 p! n; X! c4 {) J
  395. (defun c:uo () (command "ucs""ob"pause))
    5 Q" S. d( w( Q& V1 S
  396. (defun c:f0 () (command "fillet""r""0"))
    # K: |! w" k4 X) l
  397. (defun c:fr () (command "fillet""r"))3 r2 ]' Y# M5 ?  f

  398. 1 V7 S# G: N! ?( H
  399. ;CHAMFER' Z: l, m  H2 ^( s0 \' i* m& V2 ]
  400. (defun c:cf () (command "chamfer"))2 Y" Z. M- z3 B4 M2 u3 Z  P" l
  401. (defun c:cfd () (command "chamfer" "d"))
    : A7 S2 b6 J6 U7 q2 t
  402. (defun c:cf0 () (command "chamfer" "d" "0" ""))+ r& |  L) d) b
  403. 3 K# ?2 Z# L8 u& H
  404. ;FILLET
    * q- {3 D2 Y8 j5 B8 |% t
  405. (defun c:f () (command "fillet"))
    : W- l: ]) K5 J7 H+ _( T
  406. (defun c:fr () (command "fillet" "r"))
    * ]3 h3 t: n  Y
  407. (defun c:f0 () (command "fillet" "r" "0"))
    . {5 o9 Q& D- ^* K1 H

  408. & y  L; z2 v: H
  409. (defun c:OO  () (command "oops"))  [# O% m* \* o- d7 E
  410. (defun c:dln  () (command "dimlinear"))
    6 V$ }$ l, M3 G. y
  411. (defun c:dan  () (command "dimaligned"))) ~3 R) o1 x- t) G# t7 g) e1 n* _
  412. (defun c:ddc  () (command "dimcontinue"))
    5 n& ]  y3 |; g
  413. * C8 Z6 E( {3 `
  414. (defun c:sc () (command "scale" "auto"))
    ; A7 Y0 m5 g5 Y" Z2 }$ v/ y
  415. (DEFUN C:XO  () (COMMAND "snapang"))2 d" P% e- ]" y: i" \) Y* C# N
  416. (defun c:cc (/ a)4 C9 ^% y  @( x+ a# A' x4 _
  417.   (setq a (ssget))(command "copy"a"""m"))
    , m2 [( S# e, H1 x' n* S/ l$ _

  418. ; q. V" C8 m1 e1 w  B
  419. (defun c:PJ (/ a)
    6 t' s2 n& {2 j" P0 {
  420.   (setq a (ssget))(command "pedit"a"""j""all""y"))
    ( F* H4 W$ F2 ~- I$ A3 Y& X' E
  421. (defun c:JJ (/ a)
    1 w6 U) v$ E  J
  422.   (setq a (ssget))(command "pedit"a"""j""y"))
    & v+ b7 n, u2 l: R! L( A0 x
  423. (defun c:TN (/ a)
    ! Y' i; k0 n( j2 R) t
  424.   (setq a (ssget))(command "change"a"""p""T"))( U, e% J6 x  G& R' }' ~9 I+ p
  425. ! r- q% f3 u, e5 i6 M
  426. ) C. X3 c+ S2 b3 M, D9 O5 n$ {
  427. ;=======================Tran Ngoc Thang - Tu nam 2000 - Hoc nam cuoi KTS . DHXD=========================! }8 E1 Z6 A' j6 A9 L$ N4 W7 A
  428. & e& _& ^2 x' l5 u4 K" l
  429. (defun C:IB ()(setvar"cmdecho"1)
    , M# R) z+ {9 }+ {+ F) V6 j  E
  430.   (setq pt(cadr(entsel"\nSelect Block:")))( w6 J$ a) }' o/ {! Q2 E. W' B* ]# V
  431.   (setq e1(ssget pt))
    / y4 H/ Y% M8 i7 G
  432.   (setq e2 (entget (ssname e1 0)))0 H  K; q. U9 g) |9 a2 C
  433.   (setq blname (cdr(assoc 2 e2)))4 L# {- k* D0 O" \! O/ g
  434.   (setq oer *error* *error* err2)(command ".insert" blname))% n0 ]: Y9 O, o6 n
  435. , _; |$ Z( ?2 _1 N
  436. (defun c:II ()5 R4 K) o. p! L! v3 w7 _; W+ j8 P3 `
  437.     (setvar "cmdecho" 0)
    3 ^7 T) o; L7 o/ Q$ K
  438.     (setq olderr *error* *error* myerror)
    ! q' m7 t- w6 \9 S1 u' N, b+ T; ?
  439.     (prompt "\nSelect objects: ")
    ( G- k3 t; C5 v( Z
  440.     (command "select" "au" pause)
    % h! O( J. j4 B4 J
  441.     (setq sstxt (ssget "p")
    ( Z$ F" T# I6 f6 D, L8 {' T
  442.           sslen (sslength sstxt)
    2 C0 T( Y" g8 z$ K6 P
  443.           ctr 0) S- K! R+ u1 E# w, @
  444.     ): P) h7 U7 K  W. y( l' ]! f2 V
  445.     (command ".undo" "mark")
    6 ^6 h7 ^& `2 C' Y; w
  446.     (while (< ctr sslen)
    0 T: M' [  w$ ]8 {
  447.            (setq listxt (entget (ssname sstxt ctr))* ~( E* s( D$ z2 o2 V0 Z! O. w
  448.                  txttxt (cdr (assoc 1 listxt))
    1 [- |2 {% @1 Y5 K
  449.                  enttxt (cdr (assoc 0 listxt))
    / Q3 s4 V4 k  g
  450.            )( ?7 ?, q1 H0 _0 |0 A
  451.            (if (= enttxt "TEXT")" `  C  ?7 v8 i/ ^
  452.                (progn* T  B$ S. i6 m! a8 ^
  453.                    (setq testxt (substr txttxt 1 3))
    $ k  B7 Q) ^  d% J* Y( u4 u. ?2 F
  454.                    (if (or (= testxt "%%C") (= testxt "%%C"))
    - R3 y# \8 D" h. ^4 s1 I/ A
  455.                        (setq newtxt (substr txttxt 4))' W$ w5 F/ @) w( j. q4 \4 |. j
  456.                        (setq newtxt (strcat "%%C" txttxt))
    2 m4 F% N: v) h/ r% N" O
  457.                    )
    $ [* J9 L6 {* y* Q$ T8 l# Y+ Q
  458.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))5 E, C8 a4 ^: G# d: t; L
  459.                    (entmod listxt)
    3 G8 d( O2 o2 o$ V+ Y
  460.                 ); @4 |7 T, w7 V$ Z
  461.             )
    ' _2 w. D# r' [
  462.             (setq ctr (1+ ctr))  W% t2 s6 u" B4 E, h
  463.     )/ P2 b0 u- X9 _! l+ A1 [0 E* |1 A
  464.     (setq *error* olderr)
    ) \9 b6 ^$ M; B
  465.     (setvar "cmdecho" 1)  n$ N0 L* `9 Y4 d* {+ [
  466.     (princ): O/ C" m* {' a- p  C% r
  467. )$ k0 n$ ~, Y' v0 G7 |

  468. ' S/ D! }% v& V$ z$ n& c: z% c% [1 I
  469. (defun c:DG (); ^  Y7 c' L% u
  470.     (setvar "cmdecho" 0)
    ( H% F; B4 c7 d" G: l) o8 Z7 ^3 ?4 K/ R
  471.     (setq olderr *error* *error* myerror)
    + M) v3 @2 _& k% ]
  472.     (prompt "\nSelect objects: ")
      W( X" d' c8 {+ u6 \
  473.     (command "select" "au" pause)
    ( U' U% a  G' H$ H* y
  474.     (setq sstxt (ssget "p")
    * j+ T) H; T2 O; W( H5 w
  475.           sslen (sslength sstxt)
    2 X' {& i4 g4 _1 V5 i
  476.           ctr 0
    5 D( _5 s1 ~! g4 S( e
  477.     )- I! e$ R4 H$ S' U# o
  478.     (command ".undo" "mark")
    ! X! a, [7 t* M" f" F* Y& E) E3 B
  479.     (while (< ctr sslen)2 d* s" ]% W% |3 h) P' o( N  p- e, @
  480.            (setq listxt (entget (ssname sstxt ctr))% z/ ]# I& c  s
  481.                  txttxt (cdr (assoc 1 listxt))& ]' a$ |2 m, H: b. B. M/ i
  482.                  enttxt (cdr (assoc 0 listxt))/ b8 o6 h0 @4 A* |. j3 p( A: N
  483.            )* u( Z" i8 ?7 y6 P+ ^# V- G* j
  484.            (if (= enttxt "TEXT")
    * i: M5 Z7 i5 ?$ E- M( [5 C$ M
  485.                (progn% p/ E) N9 o, h% r" f1 |
  486.                    (setq testxt (substr txttxt 1 3))7 V$ B' u% @; V( l
  487.                    (if (or (= testxt "%%d") (= testxt "%%d"))3 K1 r6 k( C- l( P, ~( b7 l
  488.                        (setq newtxt (substr txttxt 4))
    ! m; |2 P! T/ |
  489.                        (setq newtxt (strcat txttxt "%%dC" ))
    2 E. b" |2 e! e4 O2 T0 r
  490.                    ): E% p2 I9 [* l  Q& F9 `; A
  491.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))% L2 O  F9 O( X5 [
  492.                    (entmod listxt)$ n4 M+ w7 ^- t6 {
  493.                 )$ P5 H$ ]) ^. h, _. r+ i7 s
  494.             )
    7 Y; p. m* z/ u# c+ h4 U& [. G
  495.             (setq ctr (1+ ctr)), X  l; q  v& r1 x6 d
  496.     )
    2 `* X! Q2 |6 |" V
  497.     (setq *error* olderr)
    & ?- Q$ S& W, s5 k9 t$ t- k
  498.     (setvar "cmdecho" 1)6 f6 W/ y$ i5 f/ j$ P4 E
  499.     (princ)
    ' U+ z8 `. e! Q$ W& g1 R4 |
  500. )
    1 p1 ]6 v) N3 t" k" Z% Z

  501. 5 C2 h# L( H  c7 f) a
  502. (defun c:PI ()
    1 l  a  Q; w8 `* q3 |( f# e# H) l6 x; a! |
  503.     (setvar "cmdecho" 0)
    & U) p0 v3 ~/ U9 [) A
  504.     (setq olderr *error* *error* myerror)
    ' k# k5 T+ l$ k5 ?6 N6 p
  505.     (prompt "\nSelect objects: ")) w+ y' E- k) @4 d
  506.     (command "select" "au" pause)# V0 [; F' d, ?4 u6 ?
  507.     (setq sstxt (ssget "p")
    5 j( ~/ f3 A+ R0 n* N; N
  508.           sslen (sslength sstxt)
    8 A/ N. |2 @% ]/ ?% P) G/ B/ I
  509.           ctr 0
    3 S7 y/ U6 ^& }
  510.     )7 f/ ^  G0 T5 V4 d
  511.     (command ".undo" "mark")
    5 L0 e& W- s* u. \
  512.     (while (< ctr sslen)
    " y: Q' x6 V. d7 g: `1 |" J
  513.            (setq listxt (entget (ssname sstxt ctr))
    7 O! v$ L0 b+ F3 J) |9 Q: k
  514.                  txttxt (cdr (assoc 1 listxt)); I' c8 s6 i) s0 x3 A0 L
  515.                  enttxt (cdr (assoc 0 listxt))
    5 l: h9 p2 O0 a. b0 ~- [
  516.            )' ?3 L+ ?3 |" H$ C% ^0 x
  517.            (if (= enttxt "TEXT")) S* O. c1 |* g/ y: Z5 I
  518.                (progn
    + ?" T$ B, q. ?) H, G, X" ~
  519.                    (setq testxt (substr txttxt 1 3))0 @; v+ g# G5 A0 M6 l" F
  520.                    (if (or (= testxt "%%p") (= testxt "%%p"))6 s7 O/ I- k( p" I+ L! \  O
  521.                        (setq newtxt (substr txttxt 4)): Q  ~' N; u! P/ g% [
  522.                        (setq newtxt (strcat "%%p" txttxt))) A- s! y" U- O# |$ Y! I
  523.                    )
    : S. @+ B: e. Q% E6 p
  524.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    + J4 E! l1 R1 ~; c' p3 \
  525.                    (entmod listxt)
    ( ^% z. d" K1 Z/ x' m3 u* d
  526.                 )9 I% |$ ~) F& v
  527.             )8 h) t+ [2 n7 s
  528.             (setq ctr (1+ ctr))2 d: Y' x3 M# T9 o) \
  529.     )
    , g; J4 P4 `& C. j
  530.     (setq *error* olderr)& q- C5 n8 [9 k' ]# b
  531.     (setvar "cmdecho" 1)+ n7 D  r( k- Y% f
  532.     (princ)7 m& C; O6 F) L$ Y/ \& |
  533. )
    4 |8 q/ S8 D0 C5 x. l4 W* F4 H
  534. 6 e" w3 m* t9 Z
  535. (Defun c:CB (/ a)3 E" `1 ~+ \( ]1 M, j5 i' d
  536.    (setq olderr *error* *error* myerror)7 `1 g6 j. u( s: x; q! s, C# _
  537.    (setq ocmd (getvar "cmdecho"))
    ! O: {: k$ [  M/ V( N7 X0 ?
  538.    (setq oblp (getvar "blipmode"))& x% I. w' M, d
  539.    (setvar "cmdecho" 0)5 K3 F0 N$ z- f2 m7 V+ Q+ K* c
  540.    (setq a (ssget))" Y' B% p' l/ h) |
  541.    (command "CHPROP" a "" "C" "bylayer" "")
    3 Y+ M" s( C! x
  542.    (setvar "cmdecho" ocmd). a' K" ?: [& w+ ]. |  U1 z5 Q. z5 e
  543.    (setvar "blipmode" oblp)# h  m( J5 C. }! f2 _) {( ?5 q
  544.    (setq *error* olderr)1 P; S. p" W6 T9 t! |& K6 W3 j$ x
  545.    (princ), ~% N. ^6 `7 k# A" `' E/ v1 l
  546. )2 F8 `( x1 `. D% }( y

  547. + Q; |- p* N$ b% N) R* r+ \; A
  548. (defun c:LCC (/ co43 obj23 la23)
    & s6 H6 P( ^  z6 R7 {" y
  549.    (setvar "cmdecho" 0)
    : _( t: P$ g7 A9 |2 @" S" f
  550.    (setq co43 (getstring "\nNew color : "))
    - o' }. D/ J' i' t
  551.    (setq obj23 (car (entsel "\nPick object on desired layer: ")))$ |5 p$ r; P) Q' [
  552.    (if obj23 (progn9 F% O+ _9 y7 \7 z7 Y
  553.              (setq obj23 (entget obj23))
    $ o) j+ r7 r, P6 W; b" }, U) t# @
  554.              (setq la23 (cdr (assoc 8 obj23)))/ q. u4 F6 f  N( I, m6 O2 p
  555.              (command "layer" "c" co43 la23 "")
    ( W" R$ a$ F, `7 e5 T. O
  556.           )
    & D0 z+ b# p0 N1 A& V7 o
  557.     )
    7 n3 D3 ]; z- i& b
  558.    (prompt (strcat  "\nLayer has changed..." la23))
    3 |2 b% W0 e# F" b+ q
  559.    (setvar "cmdecho" 1)
    - R- A0 b' l% e2 S9 D8 Q$ |9 C
  560.    (princ), M$ h6 A5 o. [0 e" d  b# c
  561. )  ' N& W/ n+ @3 W1 U8 z, W# ~
  562. 2 Y& N# l+ d2 L+ K
  563. (Defun c:RP (/ a)
    6 q1 |3 @& W% L: F) ?
  564.    (setq olderr *error* *error* myerror)
    / i$ l1 y- x5 O0 a
  565.    (setq ocmd (getvar "cmdecho"))
    5 c2 ]) g( e9 v: L7 X! l, K7 \
  566.    (setq oblp (getvar "blipmode"))" \" ]# ]3 Y5 A+ s, R/ o! e
  567.    (setvar "cmdecho" 0)+ z8 H2 F3 l% R0 [3 }
  568.    (prompt (strcat "\nUSE: Delete object(s) belonging to"5 y" j) p; e; n# ?& d2 \
  569.                    " the layer of the entity picked...!"))
    ' o3 ^5 D) @- ?# f- T
  570.    (setq a (entsel "\nPick the entity with the desired layer to delete: "))
    , |& e. x; Y* V# C" K/ f
  571.    (if (/= a nil)
    7 a& E3 ?7 q' I9 x$ l
  572.       (progn (setq a (cdr (assoc 8 (entget (car a )))))
    + B9 r; c0 L$ S6 u5 Z9 J
  573.       (command "Erase" (ssget "x" (cons (cons 8 (eval a)) tempword)) "")); v% C' B7 m6 z3 {- \2 H
  574.       (prompt "\nNo entity selected!"))2 S) R4 h# U9 @* X  y9 k
  575.    (setvar "cmdecho" ocmd)
    ; Z6 s' v: W, Y- x9 T+ G
  576.    (setvar "blipmode" oblp)
    0 I5 ~7 @; H" X* t' s- y; w6 n
  577.    (setq *error* olderr)3 b6 B/ C! P" q3 C8 |& m; T! m
  578.    (princ), U$ _; d9 N+ M3 R
  579. )
    ! @, O4 R: V: X
  580. ; Y  @6 `7 ^; w! [
  581. (DEFUN C:WL(/ SSET NET SSL M)0 r. b* t* {7 K' |  y7 Y) \+ y1 @- x& Q
  582.    (PRINC "\nSelect lines :")
    $ l, G' h# B+ k; o/ C4 F+ L
  583.    (SETQ SSET (SSGET))( i) Y% h* j* g% Z5 P) Y" l6 }# Y9 u
  584.    (IF (/= NIL SSET) (PROGN2 [: v7 T. R% @* o+ B' q
  585.    (SETQ SSL (SSLENGTH SSET))
    * u/ f, a4 D  Y9 `0 z: r6 d9 [" G
  586.    (INITGET 4)& o7 n; u$ ~) n# o* ~; o( x
  587.    (SETQ NET (GETREAL "New width : "))
    3 ^- A$ R3 m* M! K$ l0 ~$ f
  588.    (IF (/= NIL NET)
    , ^4 {' h& s* z; ]6 V% {! S% C
  589.     (WHILE (> SSL 0)
    + K# p* W$ i! X. x. M% |
  590.       (SETQ M (SSNAME SSET (SETQ SSL (- SSL 1)) ))
    - A- Y' R. P2 Y' e, D7 L# l
  591.       (IF (= (CDR (ASSOC '0 (ENTGET M))) "LINE")
    ( B. E# p: M6 D
  592.           (COMMAND "PEDIT" M "Y" "W" NET "") ' L, a$ c8 M5 x+ K& p
  593.       )
    ( J4 Q  A7 ]% Z& U1 Z# k
  594.     )
    1 p* R2 s6 p3 [* f5 T6 \$ d
  595.    )))+ k9 V* J# A- i& ^! ~! y! E9 H( v  d
  596.    (PRINC)/ @7 f9 ~) x" |' _9 Q9 u- \
  597. )" A& a' F+ T9 @/ h. n/ ^

  598.   p1 F/ a- c, A; t& c. X
  599. (defun C:MML ()& N% m# w$ B+ Z# ?6 A& i5 B+ i
  600.   (princ "\nSelect objects to move to another Layer.")
    ( ~( h% ~6 e1 Y0 o
  601.   (setq ss (ssget))
    ) P0 T/ f7 ?5 n# A8 C* G7 `
  602.   (SETQ UL1(GETSTRING "\nLayer to move entities to : ")). h* C4 K0 J* H+ Q
  603.   (setq counter 0)
    3 m0 H& t$ B" Y: y! m. s% t; E+ n
  604.   (prompt "Moving to layer.....")(princ ul1)" g( j) e' [! V6 Z+ Z  c* J
  605.   (setq e (ssname ss counter))
    0 k* M9 g; t$ Q+ R
  606.   (setq l (cdr (assoc 8 (entget e))))
    ! q  b3 k/ x& b- X: c! b( Z4 P
  607.   (setq S (ssget "X" (list (cons 8 l))))
    7 o4 A+ h7 p/ f( T2 a% T# e
  608.   (command "CHANGE" ss "" "P" "LA" UL1 ""). d! H, x7 k( h, V& U
  609.   (setq counter (+ counter 1))
    7 x) Y2 P; m4 m/ o
  610. (princ)
    , @7 L5 p4 p/ ^" H3 W% x6 H
  611. ) * k# A$ u/ W2 s0 m) n' d7 x4 i
  612. " n: L0 c. K$ Q: l8 ?1 S; ]
  613. ;;; ================================ GHI CHU ============================3 n% m$ f# a5 l% x9 f; u
  614. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========' p1 H3 g9 S; O, I' G5 d+ u" F+ ]
  615. ;;; =======================Thuong Dung Font Romant.vnh===================9 |# R/ K8 J+ H0 q' P4 ^
  616. ! F* {$ q0 O; \4 k
  617. (defun c:RS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)
    " i8 [- I7 ~0 X
  618.   (setq oer *error* *error* err2)
    , `9 z( \, R) `8 q/ h. M2 l0 u
  619.   (PROMPT "\n(UNICODE-Verdana)(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. (M)aster Bedroom. ")
    " ~0 e7 n, ~& j* r' B4 r* w
  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) K9 H5 S) M, l5 x) u# V
  621.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nha`  Bê´p"))! I0 v4 |* z2 P% m# V
  622.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Pho`ng Vê? Sinh"))4 C; ^& e. z- z* n+ ]3 M* F
  623.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Pho`ng  Ho?p"))- a+ w: U0 ?! q7 {, c: p9 c
  624.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Pho`ng La`m Viê?c"))) y1 B9 C0 k9 V5 Y2 I" r) Q6 D
  625.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Pho`ng Ngu?"))
      y0 A" D7 u# b0 w& p
  626.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Pho`ng Bê´p + An"))
    - m0 e* r2 y% z( F' m0 o9 M
  627.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nha`  Kho"))
    0 V9 i6 H) Q9 e4 ]1 S. K5 \
  628.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Pho`ng Ðê? Ðô`"))2 |: H) u# r: K  N3 H
  629. 6 y( @$ g5 `" ]; ]
  630.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp")); r7 A: W' c$ c  e& \; y
  631.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))
    . o9 v. }: a8 z+ Y& P4 I. k
  632.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))
    * g; `  G, ]- M+ x# v
  633.   (IF(OR(= cpt "OW")(= cpt "ow"))(SETQ CPT ' "Phßng Lµm ViÖc"))& x' k* w8 W- B9 o# R7 ?
  634.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))1 O. S* g: Q0 @
  635.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))' N5 m3 @: g/ \) l( N7 w/ ~3 n' a
  636.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))1 E- B' X' _  i# p, D( h
  637.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))
    / R  `* x: k5 n3 k" h9 e/ Q& H  U

  638. 4 b0 t; P5 r! l  f& a3 b4 a; o
  639.   (IF(OR(= Cpt "oK")(= cpt "ok"))(SETQ CPT '"NHA/F BE/M/SP"))3 k7 K" M+ [* ^! {7 {
  640.   (IF(OR(= cpt "oB")(= cpt "ob"))(SETQ CPT '"PHO/F/NG TA/W/SM"))
    $ d) \) B) z& k% O
  641.   (IF(OR(= cpt "oC")(= cpt "oc"))(SETQ CPT '"PHO/FNG HO/JP"))
    " |* ~4 X, o8 e( @+ R
  642.   (IF(OR(= cpt "oww")(= cpt "oww"))(SETQ CPT '"P.LA/FM VI/E/M/JC"))1 g7 R- F# X( r' N  ^# ]+ m
  643.   (IF(OR(= cpt "oM")(= cpt "om"))(SETQ CPT '"PHO/FNG NGU/R"))
    4 C. E  n( L$ y/ [7 C1 [
  644.   (IF(OR(= cpt "oD")(= cpt "od"))(SETQ CPT '"PHO/FNG A/WN"))
    / k" t' ?  j0 \
  645.   (IF(OR(= cpt "oS")(= cpt "os"))(SETQ CPT '"NHA/F KHO"))$ {* S1 t2 i: S+ a" r1 |& E
  646.   (IF(OR(= cpt "oL")(= cpt "ol"))(SETQ CPT '"PHO/FNG /DO/M/F"))* U* C$ w9 W* v
  647. (setq pta (getpoint
    . u* |8 ^  f( m; r# h' }1 q5 V- q
  648.     "\nPick first corner. : "))( M9 Z- _; |# ^5 E4 W% c) ^
  649.   (setq ptb (getcorner pta( C, I$ Q' K; ?
  650.     "\nPick second corner. : "))' w, l/ j3 `% i3 }% Z9 M: W) z5 {1 r/ D
  651.   (setq ptc (list (car ptb)(cadr pta)))3 T; D' U6 d8 Z( B6 X
  652.   (setq ptd (list (car pta)(cadr ptb)))
    0 {2 Z2 ?" g+ \* f% T+ I
  653.   (setq ang (angle pta ptb))$ O9 u0 A! u0 o. b
  654.   (setq d1 (/(distance pta ptb) 2))
    & ]9 p4 `# u* y& c
  655.   (setq cp (polar pta (- ang (dtr 0)) d1))/ A2 @# \( q$ _) Q; O: ]1 G
  656.   (setq X (distance pta ptc))) R5 f' m. P, }: s! q9 s
  657.   (setq Y (distance pta ptd)). `+ E# t, ?: I4 ]& e9 o. f; b$ p! p
  658.   (setq X1 (rtos x 2 1))
    7 \1 e$ |; P# G6 |- A, e& \
  659.   (setq Y1 (rtos y 2 1))
    7 t9 j) F  U' O' k  r: B
  660.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))8 O, M! g& |  \) G, D1 h4 l
  661.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))
    7 @' R- V) v( C- c3 N7 k
  662.   (defun dtr (angg)8 a2 u9 O  d. {+ B% i
  663.   (* pi (/ angg 180.0)))
    9 y4 Z! r9 a/ v# n: z" z

  664. ( K2 U4 e. u: S
  665. (defun c:WS (/ pta ptb rmsz pl1)
    1 b: A$ y4 G: P
  666.   (setq oer *error* *error* err2)
    0 s, K% Z6 R5 F
  667.   (PROMPT "\n (RomanT.TXT)floorp(L)an.(E)levation.(S)ection.(M)planFoundation.(C)Found.(K).(P).")
    0 Z% H8 B+ W/ F' X" T0 G5 d
  668.   (SETQ Cpt(GETSTRING "\n (VnHELVH.Vnh)(LL)floorplan.(EE)elevation.(SS)section.(BM)planFoundation.(CM)foundation.(KC)Structure.(PP)perspective."))/ w9 U, S* z* D8 W
  669. 3 \, O: q! e/ _; q/ l# [
  670.   (IF(OR(= Cpt "LL")(= cpt "ll"))(SETQ CPT ' "MÆt B»ng TÇng 1 : TØ LÖ - 1:100"))9 x" H& U( Q6 ^. d8 A( F' ^5 ]
  671.   (IF(OR(= cpt "EE")(= cpt "ee"))(SETQ CPT ' "MÆt §øng Trôc ?-? : TØ LÖ - 1:100"))4 B/ ?3 F3 u0 `$ q
  672.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "MÆt C¾t A-A : TØ LÖ - 1:100"))' a& @5 {$ u& O" N4 l
  673.   (IF(OR(= cpt "BM")(= cpt "bm"))(SETQ CPT ' "MÆt B»ng Mãng : TØ LÖ - 1 : 100"))% s; i3 E2 `. E5 V' v
  674.   (IF(OR(= cpt "CM")(= cpt "cm"))(SETQ CPT ' "MÆt C¾t Mãng : TØ LÖ - 1 : 100"))) F/ P7 D3 J. k8 \1 M6 F* E
  675.   (IF(OR(= cpt "KC")(= cpt "kc"))(SETQ CPT ' "KÕt CÊu Khung Däc Nhµ : TØ LÖ - 1 : 100"))
    ) n$ n& m4 B7 ^5 x* Y: R% l! A# f- I
  676.   (IF(OR(= cpt "PP")(= cpt "pp"))(SETQ CPT ' "Phèi C¶nh Mét Gãc Nh×n")). o! C7 k: r/ D; t/ G" M
  677. $ e# F0 ?! `& `) H$ B; \
  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"))
    # g4 S& m! r) V+ @+ }
  679.   (IF(OR(= cpt "E")(= cpt "e"))(SETQ CPT '"MA/W/JT /D/}/SNG TRU/JC ?-? : TI/R LE/M/J - 1:100"))
      o3 \+ b+ k" g/ X( p
  680.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT '"MA/W/JT CA/W/ST A-A TI/R : LE/M/J - 1:100"))& m7 V7 D3 ^$ X- f) [) b- h
  681.   (IF(OR(= Cpt "M")(= cpt "m"))(SETQ CPT '"MA/W/JT BA/W/FNG MO/SNG : TI/R LE/M/J - 1:100"))5 a/ T3 h7 f9 D4 w, n
  682.   (IF(OR(= Cpt "C")(= cpt "c"))(SETQ CPT '"MA/W/JT CA/W/ST MO/SNG : TI/R LE/M/J - 1:100"))- M2 P1 A2 G2 j7 _/ v/ o/ {  L
  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"))
    & P% ^' _2 Q2 G3 V
  684.   (IF(OR(= cpt "P")(= cpt "p"))(SETQ CPT '"PHO/M/SI CA/R/NH MO/M/JT GO/SC NHI/FN"))
    8 [0 V% F! N, }( i9 F1 g$ M5 g
  685. (setq pta (getpoint5 {) Q4 o" E! J& |  f& ~% w
  686.     "\nPick first corner. : "))- C% h" T' S' D- t
  687.   (setq ptb (getcorner pta! ^$ I  @  e; d" K
  688.     "\nPick second corner. : "))6 y, S' [* N7 ]0 i6 Z1 W
  689.   (setq ptc (list (car ptb)(cadr pta)))
    % y# e! z: ]8 v1 h5 U3 m: ]6 v, [
  690.   (setq ptd (list (car pta)(cadr ptb)))& A" ]4 q. _& b. K5 C
  691.   (setq ang (angle pta ptb))
    ' p8 a  n, d- }8 ~( Q0 c' w
  692.   (setq d1 (/(distance pta ptb) 2))
    . D% a% |7 Y% {) d3 x$ n4 V- H
  693.   (setq cp (polar pta (- ang (dtr 0)) d1))/ A0 ~8 g/ Q7 |8 _" C
  694.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))  v: Q5 a; ^; _( r" X# P6 L3 B% R
  695.   (defun dtr (angg)7 x! o" p* y5 }1 O& x
  696.   (* pi (/ angg 180.0)))7 d4 L" r- ~; H. \2 `( e! V. x. j

  697. ) E- c) P6 S( b  J+ Z. _/ b( R
  698. ;;; ================================ GHI CHU ============================
    ! ?: Z+ U7 V/ U3 N4 Q3 ~' D
  699. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    * g; o+ Y( q! i' s
  700. ;;; =======================Thuong Dung Font Romant.vnh===================5 n. s1 S2 [4 U, {+ _7 W- E

  701. 2 x2 f. Q5 z/ x7 Z
  702. (defun c:RRS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)) D9 Z; i: f& F# j. |9 R+ ?" _
  703.   (setq oer *error* *error* err2)
    8 \- a$ ?4 l+ V& O% E
  704.   (PROMPT "\n(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. ")9 D; T. n7 @% B, B8 C! X
  705.   (SETQ Cpt(GETSTRING "\n(M)aster Bedroom. (DD). (SS). (LL). (CC). (OO). (KK). (BB). (MM). "))4 }- ^1 k* M: z
  706.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nhà B?p"))- ^$ F) Y3 Z4 ~7 ?$ }$ D$ I6 q
  707.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Phòng T?m"))
    % B. ^4 O* h0 s! _5 Y: \
  708.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Nhà H?p")), v$ a; |. H" C# B) o# Z
  709.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Phòng Làm Vi?c"))1 o: O; {$ U1 l1 _( i& P
  710.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Phòng Ng?"))
    % [- ?! j+ ^6 m1 f. J$ N5 q
  711.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Phòng B?p-An"))3 x6 i. `/ P) B- `) ~
  712.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nhà Kho"))) U! O2 p. }+ q4 J
  713.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Phòng d? Ð?"))
    ) k% T) w# l, i4 P: y9 N
  714.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))
    - Q" t  R' \  E* Q$ g; k9 i
  715.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))
    % M( D( X+ v3 u( f, e
  716.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))3 y! e) w7 E( `2 j0 f
  717.   (IF(OR(= cpt "OO")(= cpt "oo"))(SETQ CPT ' "Phßng Lµm ViÖc"))- s7 D7 \9 R( n2 T
  718.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))
    7 |) K5 g9 {4 b: W9 T  y; ?6 }
  719.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))
    7 l& Y) |! @6 O8 J( b
  720.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))
    - y  R# A, u* `$ j* \0 e
  721.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))
    6 L/ ^* w* z1 s9 Q9 X) I
  722. (setq pta (getpoint
    4 [3 g) t' S* y; ^: S- |% x$ Y
  723.     "\nPick first corner. : "))) ]" T) H6 ^# _5 V: h
  724.   (setq ptb (getcorner pta
    + I& N' s! M8 Z8 G/ |3 t' F
  725.     "\nPick second corner. : "))/ n8 Z* l# e6 E+ {% u
  726.   (setq ptc (list (car ptb)(cadr pta)))
    3 w1 L6 M0 l% `; ~! M' G- |; m7 c
  727.   (setq ptd (list (car pta)(cadr ptb)))
    " r5 L2 W$ v! M' t6 X
  728.   (setq ang (angle pta ptb))
    $ O6 `0 \* ]+ ^3 ^; H$ t" l
  729.   (setq d1 (/(distance pta ptb) 2))
    $ V! n5 W! X: w& p
  730.   (setq cp (polar pta (- ang (dtr 0)) d1))7 {- v$ V  V! |) Z6 k' e
  731.   (setq X (distance pta ptc))
    ; g+ ~2 x1 Q3 z% g0 U
  732.   (setq Y (distance pta ptd)), I. N2 t* F2 k8 K" \2 k" J
  733.   (setq X1 (rtos x 2 1))
    # W0 L& n$ k- ?
  734.   (setq Y1 (rtos y 2 1))
    . M! c! y, t5 E; _7 x2 K" n
  735.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))
    % G9 C1 j, z4 \1 I  Y' k6 h& S9 v# Q
  736.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))
    & J  o& K6 Q! T- q1 w- @1 ?
  737.   (defun dtr (angg)* X! K) `% a% X' t# b2 W" T0 G2 l
  738.   (* pi (/ angg 180.0)))4 |* l, L# |4 h

  739. 2 \( w, H" F1 l0 U3 N
  740. ;;; ================================ GHI CHU ============================) ^, `" M5 l0 g9 z
  741. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    5 Q$ l! H/ `5 R; ^# k* ]
  742. ;;; =======================Thuong Dung Font Romant.vnh===================% z3 ]/ L$ t& B6 A7 w; g, h
  743. 3 |' g. k0 A, [; L& r. [
  744. (defun c:GS (/ a b c d)
    ' Z6 \) ]9 I4 A' j' L
  745.   (graphscr)( z) x$ q0 B. b" x/ b
  746.   (prompt "\nSelect text to set style....")( X' ?* q- q' @% H! r- Q
  747.   (setq a (entsel))6 K; i1 F# O" E* T
  748.   (setq b (entget (car a)))
    : O6 W0 V) o1 w1 n
  749.   (setq c (cdr (assoc 7 b)))
    . L% }; e- I, p. Z8 l; E+ Q
  750.   (setq d (cdr (assoc 40 b)))
      \  k" h/ ^6 {; @* j9 v
  751.   (command "style" c "" d "" "" "" ""))
    * A2 d, W9 i2 d8 D: O
  752.   (princ "\nType GS to set text style.")
    " O7 H# L: K, U0 Q0 R& O8 F

  753. : R3 b! W) k2 v' ]# Z: e
  754. (defun c:RC (/ olderr ocmd oblp pt1 pt2 pt3 pt4 l w)( R4 v  e2 \6 @, o" A6 P
  755.   (setq olderr *error* *error* myerror)
    . m  @* a5 v# \: e9 c
  756.   (setq ocmd (getvar "cmdecho"))
    * A" B! k, P. a- \9 q1 [
  757.   (setq oblp (getvar "blipmode"))8 h6 j* y, _4 ^# j; `$ H: m" E5 s
  758.   (setvar "cmdecho" 0)
    $ Z" s2 ?' t0 Z) S0 l
  759.   (initget 1)                         ;3D point can't be null! O# |/ h4 \" @1 }- C
  760.   (Setq pt1 (getpoint (strcat "\nCorner of rectangle or square: "))): z, a  Z( N9 f+ n
  761.   (setvar "ORTHOMODE" 1)1 M; ?# ^2 D  K1 n2 @# @4 o9 S
  762.   (initget 7)                         ;Length can't be 0, neg, or null
    ) r- ?' t" v# L# K4 C
  763.   (Setq l (getdist pt1 "\nLength: "))
    ) n% s5 \6 p+ [( F# l. ]
  764.   (Setq pt2 (list (+ (car pt1) l) (cadr pt1) (caddr pt1)))2 P; I7 \0 U8 a/ I' f' W. j0 d
  765.   (grdraw pt1 pt2 2)
    0 m) G: t) n+ g) X% S8 Y
  766.   (initget 7 "Square")                ;Width can't be 0, neg, or null
    : A! J6 v- O" _! ?
  767.   (setq w (getdist pt1 "\nSquare/<Width>: "))
    % `( J6 K  G* o" J
  768.   (if (= w "Square")
    2 V- _, E5 Z2 @& L
  769.       (setq w l)5 I' G& E) s" ~* y  V
  770.   )
    + s$ L3 }1 L2 R/ U$ U
  771.   (setq pt3 (list (car pt2) (+ (cadr pt2) w) (caddr pt2))). L' ^' B! M, L  d* x0 \; Y9 f( `0 |* b
  772.   (setq pt4 (list (car pt1) (+ (cadr pt1) w) (caddr pt1)))
    , m- P9 G3 l* n
  773.   (grdraw pt2 pt3 2)$ f! x' G5 }$ U& U; v; @
  774.   (grdraw pt3 pt4 2); D/ D) g) s& V& D9 g7 \& I# A  ]+ A
  775.   (grdraw pt4 pt1 2)  m$ i1 ^1 j  c) l. {
  776.   (setvar "ORTHOMODE" 0): ?( m# \% N5 g  X
  777.   (command "pline"  pt1 pt2 pt3 pt4 "close")
    2 M2 A& {2 F5 y- `) Z* X
  778.   (setvar "cmdecho" ocmd)) Z  T# k+ U! h) |' c
  779.   (setvar "blipmode" oblp)* Q- N1 q+ ^* R1 i% }8 _8 W
  780.   (setq *error* olderr)               ; Restore old *error* handler
    9 ~8 I1 B$ Z8 s; g/ F
  781.   (princ)
    $ d) L$ b* B' X7 {6 t
  782. )
    ' Q5 w) C  J4 W( {4 P. n
  783. ' M3 }$ D& u) w9 e* i
  784. (defun c:SG (/ ent pt1 pt2 ang)
    6 z( d* q1 B$ J5 q* f& l
  785.   (setq cmd (getvar "cmdecho"))
    % Y+ Z; w' f7 d% _; [( f4 O
  786.   (setvar "cmdecho" 1)
    4 z/ |4 ], x6 A6 L8 D
  787.   (prompt (strcat"\nSnap angle will be set to angle of line"))
    1 v- h( X9 ?. M# ?) z5 |7 L( K5 m$ O
  788.   (setq ent (entget (car (entsel))))3 {1 N9 o' R* {+ @
  789.   (setq pt1 (cdr (assoc 10 ent)))
    5 Q7 D; g% t  X) \: D2 x" v$ R! X
  790.   (setq pt2 (cdr (assoc 11 ent)))- \  e& L9 X1 @. k) j  D. Q
  791.   (setq ang (angle pt1 pt2))5 U5 f' H+ h* \8 f7 r  F. H) Z
  792.   (setq ang (/ (* ang 180.0) pi))
    9 x# X9 L4 e; t/ ]) Z
  793.   (setvar "cmdecho" 0)- b* H! m) d+ j3 i2 R+ o, m; P
  794.     (command "setvar" "snapang" ang)
    0 D" A  E3 j- R
  795.     (setvar "cmdecho" cmd)
    ; Y( L6 \2 X) D, w2 ~
  796. )* w+ p' F( O4 J9 }) c- b; G

  797. . p, Q2 g$ p$ V% ~
  798. (defun C:TG (); c8 ]2 g6 [% d, H) l
  799.   (initget "Increase New")& I1 e; _* F; {2 \
  800.   (setq ans (getkword "Increase/<New>: "))2 B1 K2 _6 @* N0 F. I3 A. e) c  I
  801.   (modang)4 U' P; a. |$ Y1 ~. f
  802. )
    , q/ s- P- G* p; ^5 T0 H
  803. (defun modang (/ ang ss ca e na ssl)
    & l* y% D; C9 u- A4 V+ I2 `* C% |
  804. (if (= ans "Increase")
      P6 U0 s( s, E! a7 O+ }# j% W1 i
  805.      (princ "\nIncrease angle for text by: ")2 z- V' d/ B! a3 l0 |( Q& E
  806.      (princ "\nNew angle for text: "). p- H1 Z$ G3 h3 o
  807. )8 ]; d8 F$ l3 y' E% y- A
  808. (setq ang (getreal)): `" |& C; a2 V* @3 v9 i; B
  809. (setq ang (* (/ ang 180) pi))
    + {* ~! h) q5 O$ q! c) Z* F
  810. (setq ss (ssget))
    % g& w; X' A  g
  811. (setq ca 0 ssl (sslength ss))
    4 m' y: w- ]* w# D" ]6 ]% ?
  812. (while (< ca ssl); [  x% I8 D$ J3 |- ?+ S: C: J
  813.   (if (= "TEXT" (cdr (assoc 0 (setq e (entget (ssname ss ca)))))), x; |: O4 v/ u7 I7 w0 l
  814.    (progn
    " f1 t; ], k7 H2 e! M0 C3 e
  815.     (if (= ans "Increase")# d# I3 M+ L+ L4 v
  816.         (setq na (cons 50 (+ (cdr (assoc 50 e)) ang)))* t* q! q4 b; O& N) E6 ~' N- \. z
  817.         (setq na (cons 50 ang))
    9 \/ M2 W5 e+ w. h
  818.     )2 A8 W+ c- x8 w, N* F1 o9 T6 E. t
  819.     (setq e (subst na (assoc 50 e) e))
    $ M# f# Y; K* V4 k+ X
  820.     (entmod e)  D! Z# \; M4 D
  821.   (setq ca (1+ ca))0 r* b- k" X. X* r: Z+ D6 h# b; |
  822. )' B# z1 c( L# f, X( k, b" a$ }
  823. )" \. T4 n9 d- s: G, {
  824. ), X$ l8 W$ F7 s; y: S1 H$ {
  825. (terpri)
    ) a4 O' u/ }' P
  826. )
    % V! y# {) w% e! c& R
  827. 6 F* ~- l6 h) _0 H1 ~9 [
  828. 1 s% X( z7 ?4 d1 `9 m
  829. (defun c:WL ()
    3 e1 C0 M, Z. K/ B2 e( {) g% \
  830.   (setvar "cmdecho" 0)/ @# i% ]  q6 K- m) r4 n1 I/ p8 \* H
  831.   (setq a 1)6 v9 S; Z* v$ W1 A2 U
  832.   (prompt "\nSelect Polylines to change: ")
    % C. K0 w, w# q6 D! E
  833.   (while (/= a nil)3 P( y% J' g5 Q9 @
  834.     (progn
    3 v8 U( B' a7 n0 p0 X
  835.     (setq a (entsel))
    $ T& w& O6 T" P3 N# o  b1 v- R
  836.     (if (/= a nil)
    % I; F0 z3 B) x  m/ d; c& E9 }7 u
  837.         (progn' M+ f3 |$ _# b
  838.           (setq b (entget (car a)))7 z- z; a% O) Z5 ]6 x
  839.           (setq c (cdr (assoc 40 b)))
    ; S  ^( K' q# {# a/ Z/ l
  840.           (princ c)$ N! b, }  T$ z
  841.           (command "pedit"a"w""lw""")/ M3 P5 W7 J; _3 w
  842.         ))))
    5 ~0 M4 s$ V7 S3 R7 R
  843.   (princ)
    3 l7 m" r! H. ~! V
  844. )
    7 B  ^1 L. n* K0 ^( y( x
  845. / q: Q8 E3 Z  X4 U0 u  B
  846. ;;; ================================ TEXT FIT ============================" i' s) y7 B2 F  F6 _
  847. " f" l6 {$ A; `. I% u7 W
  848. (Defun c:FT ( )
    + a; w) A; ^- j$ k
  849.   (defun setsnapang (arg /) (setvar "snapang" (angtof (angtos (cdr (assoc 50 arg)) 0 8) 0 ))  )
    7 X9 h  A, d* e* D( \9 e
  850.   (Defun LL-xyz (arg) (CAR (TextBox arg))  )
    3 x) s( l! y! r, Y* T, a+ p
  851.   (Defun UR-x (arg) (CAADR (TextBox arg))  )0 P0 A8 V' ]7 e: b
  852.   (Defun LL-y (arg)     (CADAR (TextBox arg))  )- O# T: C, a  E7 Y% ]8 N8 l6 o& A
  853.   (Defun LR-xy (arg)     (List (UR-x arg) (LL-y arg))  )
    & k* k1 ^  }/ Q
  854.    (Setq ename (CAR (EntSel "\nSelect Text to stretch/shrink:"   )  )
      C& S  g% |% N, T: E3 g2 z$ N
  855.       Textent (If ename (EntGet ename))   )   
    * C* _& \( c# @. F  q3 H+ ^. {
  856.    (If (= (CDR (Assoc 0 textent)) "TEXT")  u+ @, P6 y" ?
  857.       (Progn (initget 0 "Start")/ M: c7 ^1 `3 _+ \/ K9 [& P
  858.          (Setq  NewEnd  (Distance  (LR-xy Textent) (LL-xyz Textent) ) )3 Z9 i- U4 s# w( k2 `7 X" l
  859.          (setsnapang Textent)                 ;set snap along text entity; W  D/ V1 ]/ p' w
  860.          (setvar "ORTHOMODE" 1)                   ;drag along the text
      q) f4 v/ F" i+ B* c2 V
  861.          (setq
    ) Q0 m. U1 h& a# ~) v
  862. TMP (getpoint (cdr (assoc 10 Textent)) "\nStarting Point/<Pick new ending point>: ") )7 T0 n0 }& B% W
  863.          (setvar "snapang" 0)
    - Z8 T- s* Z1 ?7 W; x+ {( E, {
  864.          (cond7 Z$ ]7 }! n! l
  865.            ((= (type TMP) 'STR) ;;new starting point to be selected4 |# y* l" o- E0 {! f9 n
  866.                (setq Start (getpoint "\nPick new starting point: "))
    2 Z% w2 M* e; h2 U/ H
  867.                (if Start  (progn
    + ^5 Z3 G& {( G- a) F3 F0 R
  868.                   (command "_UCS" "_E" (cdr (assoc -1 textent)))8 q. P% `0 H# v
  869.                   (setvar "ORTHOMODE" 1)
    ) I( X0 d6 s# o; U( ~  G
  870.                   (setq NewPt
    - b. L, w5 B% W# l9 V0 Z
  871.                         (if Start
    ( O! ?. \+ L, X2 ^$ q# ~% I
  872.           (getpoint (trans Start 0 1) " ending point: ") nil ) )0 v7 V9 \$ C$ D( v" f: c
  873.                   (if NewPt (setq NewPt (trans NewPt 1 0)))
    6 g7 P+ O1 q. E/ T& ]. s) A0 v
  874.                   (setvar "ORTHOMODE" 0)0 V/ E& E$ a: p( X5 f( r- x* T
  875.                   (command "_UCS" "_W") ) ) )
    : Y! x' S' }& o
  876.            ((not (null TMP))    ;;new ending point selected9 i4 Z& n) n" b3 v/ I/ o9 E# p- K
  877.                (setq Start (cdr (assoc 10 Textent)) NewPt TMP)  ): o; n+ y3 T: t8 o% D9 }
  878.            (t  (setq Start nil NewPt nil) ) )
    % Y) Q9 N) E2 M+ x' [+ u
  879.          (if (and Start NewPt) (progn9 T, N9 ~; i, E0 R4 s( O; j( V
  880.            (setq Val (Assoc 41 Textent) ;;current width factor) A# R; |" b* i: R3 b
  881.                  Val (if Val (cdr Val) 1.0)  LTC_%       . v* |) [1 c1 V; I& J
  882.           (* (/ (Distance Start NewPt) NewEnd ) Val )
    ! G- ?, B# D9 V
  883.                  textent (Subst (cons 41 LTC_%)8 ^- `1 A2 s6 M8 f/ y  q
  884.            (assoc 41 textent) textent)" b. U8 l: E9 i
  885.   textent (subst (cons 10 Start) (assoc 10 textent) textent)
    % ?+ n* E( B7 b" Z8 R
  886.   textent (subst (cons 11 NewPt) (assoc 11 textent) textent) )
    , Q! t; [- N4 [4 _* F
  887.    (EntMod textent) (EntUpd (cdr (assoc -1 textent))))))) (Princ)). ^/ X: n" E+ }9 D7 g! g5 ?
  888. : }5 O$ s- C: r+ F
  889. ;=====================================================================
    9 J! v5 r1 l4 `4 }6 x+ n# c1 J' Z
  890. ;=========================COPY + ROTATE ==============================. t7 r# S; W' V
  891. ;=====================================================================' |+ m9 I% p. @1 ?' j# ^: J  b( B
  892. 6 p0 y% |9 m4 x) O
  893. (defun c:CR(/ olderr cm loop ss1 ss2 bp mult lent ss2 lp1 lp2)
    3 T$ B3 t5 h7 P  `
  894.   (setq olderr *error*) L0 K7 D% r9 V! Z+ r& C
  895.         *error* croerr)- ~8 i% V# F/ ^! B% a
  896.   (setq cm (getvar "cmdecho"))* t- N" T4 Z- r6 c) @, B$ ~4 R
  897.   (setvar "cmdecho" 0)! U  V2 R) G6 j1 c1 y- `/ c
  898.   (setq loop t)5 g6 k. W7 z3 x
  899.   (while (not (setq ss1 (ssget))))
    3 W4 A+ H- z3 V. k7 u) I& u: j
  900.   (initget 1 "Multiple")' h  P3 a2 _& }* C8 a1 W
  901.   (setq bp (getpoint "\nBase point or displacement>/Multiple: ")). J5 u  Y( r' y2 \" ^
  902.   (if (= bp "Multiple")
    6 q" ~" w: v" p* g- r( u0 P
  903.     (progn  A3 D9 d6 U$ l% Q9 g/ U( a; n
  904.       (setq bp (getpoint "\nBase point: "))8 r4 I. `, y6 b( \* H" h
  905.       (setq mult t)
    7 D' L" Y- g# D
  906.     )4 F5 \' R; s' }0 e# I1 q% b
  907.   )! d. N3 `' Z3 m: r$ }+ Y
  908.   (while loop
    8 G' {! w/ F4 [# X0 D# V6 v
  909.     (setq loop mult)- y/ ~+ o" N) {0 ^7 j0 m
  910.     (setq lent (lastent))/ ?+ c! \# {+ B  y
  911.     (command ".copy" ss1 "" bp bp)
    + i5 @  O2 X$ h& F$ E
  912.     (setq ss2 (lss lent)), b8 [/ _, t; z0 d, p% l/ L
  913.     (setq lp1 (getvar "lastpoint"))+ G0 b7 M! Q4 L- b! _/ |" f
  914.     (prompt "\nSecond point of displacement: ")+ `' x4 ]2 S$ V6 [, y* v
  915.     (command ".move" ss2 "" bp pause)
    6 h( |7 y% a, a7 U( {, Z& P" q8 h5 j
  916.     (setq lp2 (getvar "lastpoint"))% C+ [# ~3 x& u% Y1 X0 W; H
  917.     (redss ss1): i9 s0 |- f( U9 E4 J7 c3 J+ V
  918.     (if (and (not mult)
    $ Y/ Q( ~8 z/ |5 L, H
  919.              (= (distance lp1 lp2) 0)/ Z: f0 h/ P/ J: u" C; G
  920.         )
    , Q: w8 R" O8 _
  921.       (setq lp2 (getpoint "\nRotation Point: "))
    2 l5 F1 G$ m; ~6 J/ |3 e3 J5 a
  922.     )  L) ?' V1 E- G4 H$ Q! h! X
  923.     (if mult) l. K2 Q7 M5 d2 G; @, a+ `
  924.       (prompt "\nRotation angle ")2 e- r4 C: @* `* }5 |
  925.       (prompt "\nReference/<Rotation angle>: ")
    $ o6 w+ o# M) Z  C2 u4 N9 _
  926.     )8 U" J8 [/ _# t7 O+ B
  927.     (command ".rotate" ss2 "" lp2 pause)/ @( d7 l! m7 ]+ R, \. {- a
  928.   )8 N" z/ z3 T* O/ _$ [% }/ U& }
  929.   (setvar "CMDECHO" cm)
    ( U2 y5 R7 l) [. z% y' V
  930.   (setq *error* olderr)
    7 X( V+ E% t( Y5 B
  931.   (princ)9 p. E* L7 W) p6 D
  932. )9 O0 I3 B# _5 v: \/ k/ [. q% b
  933. (princ)
    . M% r( n; O. Y- F
  934. (defun croerr (s)        % ^7 c& G% S* L5 y- ]$ h+ i- z
  935.   (if (/= s "Function cancelled")
    3 i8 g" p9 {! A! c5 k
  936.     (princ (strcat "\nError: " s))! U: x4 y0 [& W/ `. e
  937.   ) ( o; ]4 y$ b2 [, H0 E/ s0 r
  938.   (setq S nil)+ B4 `! G! Y+ ?& l8 K3 S- {
  939.   (setvar "CMDECHO" cm)
    / [8 U' }% D5 v& Z7 a
  940.   (setq *error* olderr)
    : I  y$ T. Z' \* D: K
  941.   (princ)
    9 [7 p" ~. p" n$ ?
  942. )0 N+ ^" \3 w" l5 h. D# O2 O& P
  943. (defun lastent (/ a b)
    3 g  d$ @! }( v: h) ]: h
  944.   (if (setq a (entlast))
    4 Y' f" r2 B8 F& p8 o: ^2 B
  945.     (while (setq b (entnext a))
    $ ~. t' I  v# P
  946.       (setq a b)
    1 Q- M6 _% q% ~2 |
  947.     )( S; b( s& Z8 c4 l( w' n9 l& H
  948.   )
    * Y. b( r. t! B2 s! P( I
  949.   a. K* }/ k4 w4 n6 @% M. D3 R
  950. )
    4 Q3 F2 {# z( P# z  _* f
  951. (defun redss (ss / en i)
    1 l" R9 P6 v& |6 j0 K& ^
  952.   (setq i 0)9 N2 M3 e4 ?) c( X. l- M, A
  953.   (while (setq en (ssname ss i))
    ; h- c) [6 t- Z# M& @, q
  954.     (redraw en 1)
    * n* ?- B' `! C8 M
  955.     (setq i (1+ i))% R! g$ F: z. X$ g
  956.   ); Q1 V5 T1 ~$ Y1 s
  957. ), V8 o$ Z2 n( V* Q: Z  l
  958. (defun lss (en / sels ed)  k. y& g$ U4 h8 Z6 j7 h
  959.   (setq sels (ssadd))) @# y* U8 s  g* X- `! E
  960.   (while (/= en nil)" T4 ^6 p6 |* V
  961.     (if (setq en (entnext en)) (setq ed (entget en)))6 x) T* f+ U7 I, P; \1 w4 I$ B
  962.     (if (/= en nil) (setq sels (ssadd en sels)))
    & ~8 X$ [" V- A6 M# Q
  963.     (if (or (= (cdr (assoc 0 ed)) "Polyline")
    ! z( x8 n5 {0 A
  964.             (= (cdr (assoc 0 ed)) "Insert")4 u  S6 l) e, A
  965.         )
    % O+ |4 A* y! x8 c! k# U' [" Z
  966.       (while (/= (cdr (assoc 0 (entget (setq en (entnext en))))) "Seqend"))7 G% \6 ^) V! }/ c% }% ]2 S# M6 C
  967.     ); c3 q4 b  a' R  f3 c# O. m" z
  968.   )
    0 L) T3 l& k+ c# Z
  969.   sels
    9 _# D/ ^) A- k
  970. )
    # {: n# d( E+ i2 B& {$ s& M4 u! e
  971. ' [. M. [, s! |( ]
  972. ;;;; ================== CAC FUNCTIONS DUNG TRONG ACAD.LSP ==================4 R4 u. W0 h# n1 J; [
  973. ( L0 H/ d# _  ~
  974. (defun c:00 ()(princ "\nChon doi tuong net Defpoints")(ssget)(command "change" "p" "" "p" "la" "Defpoints" ""))
    9 L- \# X" o# P* m
  975. (defun c:0 ()(princ "\nChon doi tuong net 0")(ssget)(command "change" "p" "" "p" "la" "0" ""))& S8 ]: j- G/ ?: d+ v$ F: i- Z! y
  976. (defun c:1 ()(princ "\nChon doi tuong net COT")(ssget)(command "change" "p" "" "p" "la" "COT" ""))% {5 z' U( n" o* i& K! a
  977. (defun c:11 ()(princ "\nChon doi tuong net DIM")(ssget)(command "change" "p" "" "p" "la" "DIM" ""))
    ' g, p5 I, z& F1 u0 q
  978. (defun c:22 ()(princ "\nChon doi tuong net MANH")(ssget)(command "change" "p" "" "p" "la" "MANH" ""))
    , q; i* h5 v8 D6 v  w2 l: x
  979. (defun c:33 ()(princ "\nChon doi tuong net NETMANH")(ssget)(command "change" "p" "" "p" "la" "NETMANH" ""))
    - X; i8 M% I: d3 w& I+ U
  980. (defun c:2 ()(princ "\nChon doi tuong net NETDUT")(ssget)(command "change" "p" "" "p" "la" "NETDUT" ""))* W: X" H0 F9 W: u. I% }/ _
  981. (defun c:3 ()(princ "\nChon doi tuong net NOITHAT")(ssget)(command "change" "p" "" "p" "la" "NOITHAT" ""))% N+ |! L3 Q4 i2 o; [
  982. (defun c:4 ()(princ "\nChon doi tuong net TUONG")(ssget)(command "change" "p" "" "p" "la" "TUONG" ""))1 y/ H0 x" L3 B  ^' k6 a' {8 W  z5 W
  983. (defun c:44 ()(princ "\nChon doi tuong net KHUNGTEN")(ssget)(command "change" "p" "" "p" "la" "KHUNGTEN" ""))
    : y; A+ E- S/ S* z0 s7 P# o
  984. (defun c:5 ()(princ "\nChon doi tuong net TIMTUONG")(ssget)(command "change" "p" "" "p" "la" "TIMTUONG" ""))* x- ^0 c0 u" a5 `: [
  985. (defun c:6 ()(princ "\nChon doi tuong net CUA")(ssget)(command "change" "p" "" "p" "la" "CUA" ""))
    8 H4 U7 k' ?3 p7 k1 q1 S
  986. (defun c:7 ()(princ "\nChon doi tuong net THAY")(ssget)(command "change" "p" "" "p" "la" "THAY" ""))/ ^& Y& G5 r! y2 ~
  987. (defun c:77 ()(princ "\nChon doi tuong net NETTHAY")(ssget)(command "change" "p" "" "p" "la" "NETTHAY" ""))
    : L* N8 k1 O7 O4 R* r& g
  988. (defun c:8 ()(princ "\nChon doi tuong net HATCH")(ssget)(command "change" "p" "" "p" "la" "HATCH" ""))0 U, ?3 P" g1 X! ^
  989. (defun c:9 ()(princ "\nChon doi tuong net TEXT")(ssget)(command "change" "p" "" "p" "la" "TEXT" ""))( p, J+ |5 r* l- ]4 [2 `7 s* u
  990. (defun c:99 ()(princ "\nChon doi tuong net CUAMATDUNG")(ssget)(command "change" "p" "" "p" "la" "CUAMATDUNG" "p" "C" "bylayer" ""))
    * |# I- w5 \$ U) R8 n: J9 D
  991. (defun c:td ()(princ "\nChon doi tuong net THEPDOC")(ssget)(command "change" "p" "" "p" "la" "THEPDOC" ""))* ]; ?1 t5 j: O5 i2 ^* K/ E7 B
  992. (defun c:ddt ()(princ "\nChon doi tuong net THEPDAI")(ssget)(command "change" "p" "" "p" "la" "THEPDAI" ""))
    * l* Z5 g! C% p$ _( H( Z

  993. 8 Z# Y" x. X9 r4 G# ~/ o0 q
  994. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============
    & \" ~! i8 w1 T8 t
  995. ( q4 s. @; K3 h( \8 S4 n3 M
  996. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============, U7 P! @. d4 V& O' ~% K

  997. & t1 @1 E2 l, }( [
  998. (alert "Using the NetXuatAnh-[ 5940.00 x 4200.00 <pixels> ] command!")
    $ O6 U3 I% F4 e
  999. (princ "\nEnter (DEFUN C:netxuatanh () to get to real LAYER command.\n") (command "NETXUATANH")$ C1 W0 Z( H. b* ^- y% n5 q, E

  1000. ) Z4 K; w  s0 b) I5 R
  1001. ;=============== DAT LAYER NET de xuat anh JPG [W x H] [5940.00 x 4200.00] ===DRAW===1 G8 W; ^: [3 L! O+ N3 U8 e: K

  1002. : K: I' P( l, a7 g& N/ @  V5 `' B
  1003. ;(DEFUN C:netxuatanh ()' R% h7 i. x" A0 c1 U% c1 l
  1004.                  (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.6" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""0 \" P- y" s9 d  s
  1005.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1.58" ""$ M9 S/ ?) q6 b+ X7 x
  1006.                                            "M" "MANH" "C" "9" "" "Lw" "0.5" ""
    ( T0 N$ V9 x/ E1 e; A! P: D: v
  1007.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    ) W( e7 N( P& U* e% O# c
  1008.                                        "M" "DIM" "C" "1" "" "Lw" "0.6" ""% }! \# I5 Y7 f4 C
  1009.                                        "M" "THAY" "C" "7" "" "Lw" "0.7" ""
    2 Q. {5 g* I1 e6 C
  1010.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.5" """ {; j$ ]6 R" L2 y
  1011.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""
    * n) q+ n* E0 ^6 m  [
  1012.                                        "M" "COT" "C" "2" "" "Lw" "2" ""
    0 o0 N& s. w! Z- k1 V% {
  1013.                                        "M" "Defpoints" "C" "7" ""
    * T( F4 o% l5 r
  1014.                                        "M" "0" "C" "3" "" "Lw" "0.5" "") G3 M; [7 ]& H# b/ v' _4 u0 b
  1015. ;                                       "M" "1" "C" "1" "" "Lw" "0.5" ""0 |/ K1 F& ~' j( F3 _. L, j! y3 v( `
  1016. ;                                       "M" "2" "C" "31" "" "Lw" "0.5" ""
    & S3 i3 z; b$ e7 o
  1017. ;                                       "M" "3" "C" "8" "" "Lw" "0.35" ""
    5 M; |# r% |2 V) R% A
  1018. ;                                       "M" "4" "C" "4" "" "Lw" "0.8" ""
    - {. f" b! c) \$ D, Y! w
  1019. ;                                       "M" "6" "C" "6" "" "Lw" "0.35" ""
    8 A' ?7 M9 Y+ A, x9 }& B
  1020. ;                                       "M" "7" "C" "7" "" "Lw" "0.4" ""
    7 ]* N% R+ b) z
  1021. ;                                       "M" "8" "C" "8" "" "Lw" "0.35" ""
      m1 _: @) [" {8 G/ l( m
  1022.                                        "M" "DAY-DIEN" "C" "3" "" "Lw" "0.5" ""
    4 C4 a! r7 w1 N2 J+ U
  1023.                                        "M" "DUONGBAO" "C" "7" "" "Lw" "1" ""; C6 L, P; q7 f8 \
  1024.                                        "M" "KE" "C" "8" "" "Lw" "0.3" ""9 P2 u1 B# @/ m8 b" g
  1025.                                        "M" "KT" "C" "9" "" "Lw" "0.35" ""' p0 D" u: M# [
  1026.                                        "M" "NETTHAY" "C" "255" "" "Lw" "0.7" ""
    8 h1 m& d; t% n4 t1 I7 D
  1027.                                        "M" "NETMANH" "C" "43" "" "Lw" "0.5" ""' h" c$ O8 O' z. F
  1028.                                        "M" "TBD" "C" "2" "" "Lw" "0.8" ""
    * b4 h0 J9 C" s( D5 e* \
  1029.                                        "M" "TEXTTXT" "C" "7" "" "Lw" "0.4" ""* f% S- F8 L- l; A+ R
  1030.                                        "M" "TEXTVN" "C" "132" "" "Lw" "0.4" ""9 G+ S& p+ U8 H9 y: v5 l
  1031.                                        "M" "THEPDAI" "C" "3" "" "Lw" "0.7" ""
    ) Q; Y/ \8 J4 t! i7 e6 O8 ^
  1032.                                        "M" "THEPDOC" "C" "2" "" "Lw" "1.58" ""9 B. [' h0 V' \3 \! h
  1033.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""
    " Z& P1 C7 a* r6 w7 S3 r& F
  1034.                                        "M" "CUAMATDUNG" "C" "6" "" "Lw" "0.5" ""- {9 b9 w/ v$ B1 Z0 O" P8 e
  1035. ! P8 k1 @: c! [# Q; v5 W
  1036. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] ===NUOC===+ I' t1 j6 E: u. ~3 V& N1 g

  1037. . K* H, Z- Y1 H
  1038.                                        "M" "10-VAN_KHOA" "C" "10" "" "Lw" "0.5" "") e' C. z- N3 _$ N
  1039.                                        "M" "4-WateR_IN" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE1" ""
    , a, M0 G  g1 H; X: W: x5 c
  1040.                                        "M" "4-WateR_OUT" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE2" ""( `1 {/ N! u" y! w/ m! e, }
  1041. ;                                       "M" "250" "C" "250" "" "Lw" "0.35" ""5 K" O* r: Q& v$ I/ N' s5 Z( E
  1042.                                        "M" "KHUNGTEN" "C" "4" "" "Lw" "1" ""
      Z+ Z0 {6 U6 A. N; V
  1043.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.5" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" "" )
    8 N" `: H7 q2 W; h, c" ~) J0 J

  1044. . Q* M7 A2 u3 u( ?! s9 M
  1045. ;=============== DAT LAYER TEXT de xuat anh JPG [DIM] [TEXT] [GHI CHU]======1 E& r, S* F: c! a3 n
  1046. ;===================================30|04|2024==============================
    & Z3 o+ |- y3 h/ s# `7 W

  1047. ) @8 ]- W# s) c
  1048.                      (Command "-style" "Vni-VietNam" "vn_vni,vns.shx" "0" "1" "0" "n" "n" "n" )
    1 X7 K; @6 Y0 X6 N8 E( Z, ]
  1049.                      (Command "-style" "Vni-ROMANS-TEXT" "vni-romans,vns.shx" "200" "1" "0" "n" "n" "n" )
    - K3 O3 ~9 }2 j9 K! v- x' W
  1050.                      (Command "-style" "COTES" "verdana" "" "1" "0" "n" "n" ): f0 g8 f6 t6 _! R+ u
  1051.                      (Command "-style" "TRUC" "impact" "0" "1" "0" "n" "n" "n" )) C1 U# x! ]' I1 B" W$ x
  1052.                      (Command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500" "1""0" "n" "n" "n" )
    ( [9 J  R' p% ]+ I  Q8 i' H
  1053.                      (Command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1" "0" "n" "n" "n" )
    8 E$ n  g" p5 y2 S
  1054.                      (Command "-style" "STANDARD" "Verdana" "200" "1" "0" "n" "n" "n" )
    " D: o6 u$ ]( z  i+ W' h
  1055.                      (Command "-style" "VERDANA" "verdana" "200" "1" "0" "n" "n" )
    ' {$ G5 B" ]8 z* m
  1056.                      (Command "-style" "ROMANT-DIM" "romant,vnh.shx" "0" "1" "0" "n" "n" "n" )' d3 G) |: o& N) r, K  E4 t- E
  1057.                      (Command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200" "1" "0" "n" "n" "n" )(princ): q2 t3 l% d1 G# m* e4 X4 l

  1058. # X9 o0 |  ~: L( Y
  1059. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=8 H5 S% z: d  A" n9 r6 |3 G
  1060. ;===================================17|10|2024===================================
    ! C+ c8 x* T# ~5 T
  1061. 1 @8 D! j. V8 U3 y
  1062.                      (Command "DIMTXSTY" "ROMANT-DIM" )
    3 c; Y' y% D2 i3 C: |; Y% y
  1063.                      (Command "DIMBLK" "" "Closed" )4 `2 l  r$ v* s9 T8 q

  1064.   S! x5 }0 M' }  {1 J* y
  1065. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=5 {$ m* t: Z# o9 g' j8 i+ W3 J
  1066. ;===================================17|10|2024===================================& e1 X4 ^: n# d1 P/ U

  1067.   x2 p9 H2 H, P; r3 u$ J5 Y
  1068. ;(Command "-units" "2" "8" "1" "8" "" "N")
    ! ^) X6 b: i0 G  f/ ]
  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)' @; e5 h  t% K

  1070. ) _8 U. E( C: K! u+ [* I
  1071. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    - z7 O8 ?7 d3 O1 O
  1072. ;===================================17|10|2024===================================0 H: L% z# h4 {% m9 ?& z

  1073. . [! W. o" u6 |+ r& S  e7 h# [
  1074. ;======== KET THUC - DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =====4 {6 f" G5 M- n! W& a: o

  1075. 0 O& p  L# g# `. X4 X, L5 d. L
  1076. ;======================== DAT NET IN & TI LE BAN VE =============================: I2 `! ^+ U# p( s# x4 x
  1077. 3 s8 G  i. L" u( T& T9 N4 B3 z
  1078. ;=================LENH VE KHUNG TEN - Tieu Diet Lenh==================
    # t) |! g. S. |3 k/ h  Y
  1079. ;=============== DAT KHO GIAY BAN VE - KIEU KHUNG TEN ================
    5 }: Z  _0 d: g
  1080. ;=============================11|07|2025==============================7 K& z+ L4 ~2 T8 T' x
  1081. ;Ti Le Ban Ve - 1 : 100
    / U* b8 H' Y# d: g
  1082. (Defun c:kta4 ()# ]& V7 Z5 n- a. X2 \
  1083.     (setq mv_sc 100);Ti le  ban ve2 |/ t' I  ^5 c  r
  1084.       (setq x4  297)
    ; E- x+ g" N1 q' K* w7 ~: @8 s! E
  1085.       (setq y4  210)
    ; Q2 t( Z( u& }8 C0 o" B+ P
  1086.   (setq x4 (* mv_sc x4) . D, s0 Z* X  E7 K: L; P. W
  1087.         y4 (* mv_sc y4)  )) v$ N1 ~2 y, w4 ?; o" V. q
  1088.   (command  
      q( n" l& x% ^6 c* S9 f! |
  1089.     "LIMITS" "0,0" (list x4 y4)
      M% J5 f0 q& O
  1090.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"' ], j7 `/ R$ S- t8 Y& o$ P& q9 j
  1091. ;Khung CHU NHAT Chinh    ' n( O1 n/ h$ x8 @7 T- p( V
  1092.     "RECTANG" "500,500" "@28700,20000"' N: _( f$ M! I  W
  1093.     "RECTANG" "700,700" "@28300,19600"+ h6 W3 G  D! y
  1094. ;Khung Ten Chung
    / J- ~1 J7 y' A8 C) E. m8 a" }
  1095.     "RECTANG" "700,700" "@8000,1250"
    " U# E3 s, k4 J7 m
  1096.     "RECTANG" "700,700" "@17300,2500"
    2 w% }  m* \5 J! y# @: g
  1097. ;Ten Ban Ve9 V6 B+ A( {4 @1 T; z; C2 P1 v
  1098.     "RECTANG" "18000,700" "@11000,1250"7 X$ F: U9 k5 B
  1099.     "RECTANG" "18000,700" "@11000,2500"* O" D- T+ Q% G
  1100. ;Khung Ti Le + Ngay Thang Nam
    * r6 f6 H- D+ _# H0 ~
  1101.     "RECTANG" "22500,700" "@2000,2500"( d- [) @- W# o
  1102. ;Khung CHU TRI9 y  R# w% e1 W) l5 R9 o! i
  1103.     "RECTANG" "8700,700" "@3800,2500"- a4 d, i' S) V+ g% a# g
  1104. "ZOOM" "_a"  ))
    & d+ ]- ^$ Z. v% e
  1105. ;=====================================================================/ P  [8 D. Y' \% Z% n+ o3 g
  1106. ;Ti Le Ban Ve - 1 : 100
    ( I) s* L, c' |
  1107. (Defun c:kt4a ()2 S! f: ~& r, `* z3 g7 `' \, f
  1108.     (setq mv_sc 100);Ti le  ban ve
    $ }7 G: M& u( s; }/ J
  1109.       (setq x4  297); }: T, r/ e( P! I) u! L
  1110.       (setq y4  210)
    2 R: z1 B' T; I
  1111.   (setq x4 (* mv_sc x4) ! r! L8 N4 s- s" U$ g/ _+ c; N. {
  1112.         y4 (* mv_sc y4)  )
    2 O: {5 ~: E9 J; l+ D2 e
  1113.   (command  
    5 s& x, S( W$ E( V- B6 Q2 y
  1114.     "LIMITS" "0,0" (list x4 y4), E% n1 H9 F% k+ _0 f! R
  1115.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    ! I2 V, w; A) `; |# _' E
  1116. ;Khung CHU NHAT Chinh  3 k; \' q- M' A4 g# j' z: |+ t4 c$ \
  1117.     "RECTANG" "2000,500" "@27200,20000"
    " h. \6 P, N. Z$ h% t1 ]8 q1 v, d
  1118.     "RECTANG" "2200,700" "@26800,19600"
    2 Y9 ?# t' E2 o6 M0 z9 d
  1119. ;Khung Ten Chung8 r' f6 J! G4 z6 v$ J
  1120.     "RECTANG" "2200,700" "@6500,1250"4 q9 X3 {5 o. N$ [5 ~2 B, D
  1121.     "RECTANG" "2200,700" "@15800,2500"
    5 e8 `2 s8 _  ~+ y  f' r) u# M( Z
  1122. ;Ten Ban Ve
    ( U' z- m2 ]3 @- i( Y$ e
  1123.     "RECTANG" "18000,700" "@11000,1250"2 u9 l+ `# h. o0 T) o
  1124.     "RECTANG" "18000,700" "@11000,2500". W/ ]4 V: W5 `
  1125. ;Khung Ti Le + Ngay Thang Nam
      M8 C! C1 o' l( h9 `
  1126.     "RECTANG" "22500,700" "@2000,2500"
    * ]/ E) q, V  q# Y' j; s
  1127. ;Khung CHU TRI# t2 @/ Z( Y9 h3 M! @0 Y0 _
  1128.     "RECTANG" "8700,700" "@3800,2500") x# m# W# m6 T& ~3 ~7 U
  1129.     "ZOOM" "_a"  ))" |& F; y/ ~2 _, A! Z! t7 Y& {/ e1 g

  1130. 0 n/ ?- [. j5 K0 a/ Z
  1131. ;;; ============================GHI CHU Khung Ten========================
    8 R% Y. R* _" _6 ~6 [. M: K
  1132. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========4 T  V+ l" H( T& O
  1133. ;;; =======================Thuong Dung Font Romant.vnh===================' l( k! b* m: q) ?3 o" _. p, O2 \: E

  1134. ) m* r: r: h* `0 E% v* E" c
  1135. (defun c:GhiChu (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)
    + d2 v  p3 b0 R- A
  1136.   (setq oer *error* *error* err2)/ X, Q( @% [. Q+ B
  1137.   (PROMPT "\nChuTri. ThietKe. KiemTra. TiLe. Ngay. HangMuc. QuyMo. KieuNha. CongTrinh. KyHieu. TenBanVe. Kts. TranNgocThang. ")2 j! J1 Y9 y# F( `. e/ q( c
  1138.   (SETQ Cpt(GETSTRING "\n(CT). (TK). (KT). (TL). (Ng). (HM). (QM). (KN). (CTr). (KH). (TBV). (Kts). (TnT). "))
    ( x" R% A1 X/ y* h
  1139.   (IF(OR(= Cpt "QM")(= cpt "qm"))(SETQ CPT ' "Hå S¬ ThiÕt KÕ Nhµ D©n Dông quy M« :"))5 B- }$ P( V' e% B
  1140.   (IF(OR(= cpt "KN")(= cpt "kn"))(SETQ CPT ' "2 TÇng 1 Tum Thang"))
    3 J& L8 ]3 i7 R' h  {8 u
  1141.   (IF(OR(= cpt "CT")(= cpt "ct"))(SETQ CPT ' "Chñ Tr× :"))- j8 y6 @- C+ o8 U$ P
  1142.   (IF(OR(= cpt "HM")(= cpt "hm"))(SETQ CPT ' "H¹ng Môc :"))
    9 n3 i4 j# d0 `4 r9 ?6 {
  1143.   (IF(OR(= cpt "CTr")(= cpt "ctr"))(SETQ CPT ' "Nhµ ë Gia §×nh - Nhµ LiÒn KÒ"))! T! C0 J- _3 s+ l9 a& a" L1 X
  1144.   (IF(OR(= cpt "TK")(= cpt "tk"))(SETQ CPT ' "ThiÕt KÕ :"))
    6 a9 k8 q4 C: D1 y: q
  1145.   (IF(OR(= cpt "KT")(= cpt "kt"))(SETQ CPT ' "KiÓm Tra :"))
    % a1 I1 Q4 J4 U0 {4 N' a
  1146.   (IF(OR(= cpt "TL")(= cpt "tl"))(SETQ CPT ' "TØ LÖ :"))8 o6 B3 ~5 @( O1 G' ]1 t& ^
  1147.   (IF(OR(= cpt "KH")(= cpt "kh"))(SETQ CPT ' "Ký HiÖu :"))/ f; ^/ e( V% R! N
  1148.   (IF(OR(= cpt "TBV")(= cpt "tbv"))(SETQ CPT ' "Tªn B¶n VÏ :"))2 d( |# V! M: F* P3 j% Z) W1 C% ]
  1149.   (IF(OR(= cpt "Ng")(= cpt "ng"))(SETQ CPT ' "Ngµy :"))! [9 D; i9 J8 u  n
  1150.   (IF(OR(= cpt "Kts")(= cpt "kts"))(SETQ CPT ' "Kts. TrÇn Ngäc Th¾ng"))
    7 j6 |: U, u) s/ B4 ~2 O
  1151.   (IF(OR(= cpt "TnT")(= cpt "tnt"))(SETQ CPT ' "TrÇn Ngäc Th¾ng"))0 j: f" l/ t1 B4 `9 M2 }
  1152. (setq pta (getpoint" ~7 ]- y. ]$ Q' A- B' d0 ?8 B
  1153.     "\nPick first corner. : "))' D3 r# G5 u/ J& N( ?3 T3 x
  1154.   (setq ptb (getcorner pta
    6 K) F1 B- L# U) g- y# F
  1155.     "\nPick second corner. : "))
    ) i5 ]* H) ?7 |$ L: [* Y) m
  1156.   (setq ptc (list (car ptb)(cadr pta))): O$ H$ n7 q/ I- F) ^/ e
  1157.   (setq ptd (list (car pta)(cadr ptb)))
    . f* v" s  q# X* o* X
  1158.   (setq ang (angle pta ptb)); X7 g. X/ m9 ~4 Y8 b5 T- e- M
  1159.   (setq d1 (/(distance pta ptb) 2))
    . Y) V' l3 G! _' l1 E
  1160.   (setq cp (polar pta (- ang (dtr 0)) d1))+ M( e3 T% y; G' z' i. L; z% i/ p
  1161.   (setq X (distance pta ptc))
    . I5 {6 h$ S) c
  1162.   (setq Y (distance pta ptd)), [: b5 S1 H  f, _- ~
  1163.   (setq X1 (rtos x 2 1))$ P/ Q3 {' i2 ?+ T# |$ _
  1164.   (setq Y1 (rtos y 2 1))* j3 h% d8 n  I! U
  1165.   (setq rmsz (strcat "(" X1 " x " Y1 ")")). ]7 ?6 g* l6 l* A+ @: `5 _: T4 F# g
  1166.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz)): \0 ^. b+ L9 a4 G% h
  1167.   (defun dtr (angg)
    3 {/ S$ t1 i( `+ e' Z; l
  1168.   (* pi (/ angg 180.0)))
    : K( h8 e9 A  F9 N
  1169.   z9 R0 J* [9 x; R5 J
  1170. ;=====================================================================# v2 U. s0 t4 @0 F3 K* n  k
  1171. ;==========================DAT KHO GIAY BAN VE - KIEU 1========================' r# p' J; ^) u  o1 w) |: S
  1172. ;=====================================================================% ?4 e4 U* ]/ w& D' M5 f
  1173. 0 d+ A; B) C7 F1 F- n7 U4 r4 k( y
  1174. (Defun c:a6 ()
    ) v8 ?9 `0 K8 r+ F% ~* i
  1175.         (setq mv_sc 100);Ti le  ban ve3 W) o; m' w4 l3 X
  1176.       (setq x4  74.25)
    & w7 o. I6 ?( ?6 W- t, y
  1177.       (setq y4  52.5)* i% V0 p$ S: l. z) k% C$ k% q
  1178.   (setq x4 (* mv_sc x4)
    : I  L* c: F6 f, r; W( O
  1179.         y4 (* mv_sc y4)  )
    , H3 [+ F1 O! Z( J
  1180.   (command  " ?; X4 P; i& o
  1181.     "LIMITS" "0,0" (list x4 y4)
    " B1 p/ Q8 P! U" R
  1182.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"- I1 B9 j7 a4 Y
  1183.     "RECTANG" "125,125" "@7175,5000"* c5 J- y/ `$ W) O
  1184.     "RECTANG" "175,175" "@7075,4900"
    . n9 }- c9 J2 n7 C& G) N9 e
  1185.     "ZOOM" "_a"  ))
    , U, C8 K$ J1 @6 I8 T
  1186. ;=====================================================================
      D% e* i* a7 S: \% K
  1187. (Defun c:a5 ()0 f: |0 K9 J" `
  1188.         (setq mv_sc 100);Ti le  ban ve
    ' `+ ~6 M6 b2 E0 t" u. A
  1189.       (setq x4  147.5)
    5 E8 t5 u  ^9 L; p* H5 C$ {: v
  1190.       (setq y4  104)6 \# ?" R% B+ {
  1191.   (setq x4 (* mv_sc x4) # B7 q4 G" e$ G+ h
  1192.         y4 (* mv_sc y4)  )/ i6 O# S: g. u, s3 N
  1193.   (command  1 T8 x! `1 P+ t: u2 z4 _3 c* L( f
  1194.     "LIMITS" "0,0" (list x4 y4)
    7 X4 k9 C$ k$ c  r) p8 V. w/ x
  1195.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"  w+ b5 z% D5 P; ?) T, A8 v
  1196.     "RECTANG" "250,250" "@14350,10000"  V+ f! u3 f: t% F
  1197.     "RECTANG" "350,350" "@14150,9800"( J' ^% b- g3 n2 r4 ^! k  M6 D
  1198.     "ZOOM" "_a"  ))5 I$ ^$ v# G. n+ P  n% Z
  1199. ;=====================================================================
    ; U/ P! \1 b: O. f2 O
  1200. (Defun c:a4 (); ]- J% `1 p, L7 V' [
  1201.         (setq mv_sc 100);Ti le  ban ve) L( }. F' \+ B: l( l! y9 a( I8 r
  1202.       (setq x4  297)
    0 @) u! y5 C% {2 l' f
  1203.       (setq y4  210)! c' q; K$ z8 ~% }
  1204.   (setq x4 (* mv_sc x4)
    2 R; e" ?1 [* \* ]% _
  1205.         y4 (* mv_sc y4)  )! ^9 d& v5 f/ a  |% F
  1206.   (command  
    # p8 ?3 p+ T; c8 r( s
  1207.     "LIMITS" "0,0" (list x4 y4)! F9 r) @1 U- D; V% d
  1208.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    / g3 c/ a# J" n8 `; b# _1 Z
  1209.     "RECTANG" "500,500" "@28700,20000"
    $ I3 N/ w  t: ]/ `7 `% a; {/ q! s
  1210.     "RECTANG" "700,700" "@28300,19600"8 Y- I' I! X& F
  1211.     "ZOOM" "_a"  ))' U: O: a2 v2 ]' R
  1212. ;=====================================================================
    % B9 K" d, O8 U( R
  1213. (Defun c:a3 ()) P8 W, d% u) E+ `7 ~7 T! C/ w
  1214.         (setq mv_sc 100)* s' g0 O$ n6 m7 d1 v6 T
  1215.       (setq x3  420)( s! i$ g( `3 I0 Z6 w
  1216.       (setq y3  297)
    * N4 X. n* p6 Y: A9 o4 W" A% c, e
  1217.   (setq x3 (* mv_sc x3) ( s6 t2 P+ ~5 e3 g3 b! j% `: `
  1218.         y3 (* mv_sc y3)  )1 L7 `8 D9 Q, ^4 n3 ^8 q
  1219.   (command  * b3 b# r! e0 E
  1220.     "LIMITS" "0,0" (list x3 y3); L& B1 H( J9 l  d& G4 g
  1221.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    0 Y! Y& g0 a* g$ L" E3 D& ^
  1222.     "RECTANG" "707.14285714,707.14285714" "@40590,28285.71428571"
    ! j1 M+ l% a4 Y9 q
  1223.     "RECTANG" "990,990" "@40024.28571429,27720"
    / C& N3 Q5 V: \/ T5 D
  1224.     "ZOOM" "_a"  ))
    8 |( a! E0 q: j, `: E0 K( Q
  1225. ;=====================================================================& I4 l! C3 d- k% E
  1226. (Defun c:a2 (): }( k% \+ _, f! {- x: D* _  ~! V
  1227.         (setq mv_sc 100). F# _1 d8 {1 K9 D, A
  1228.       (setq x2  594)
    , U/ A! ~+ H: t
  1229.       (setq y2  420); R6 g# n3 l; n8 |/ V
  1230.   (setq x2 (* mv_sc x2)
    ' Y2 h2 P8 q$ s4 x3 Z
  1231.         y2 (* mv_sc y2)  )9 y; c: `1 a5 m/ v* w( ~
  1232.   (command  ' e! Z2 n# X5 x
  1233.     "LIMITS" "0,0" (list x2 y2)- }. z& m6 W  W3 j" y! M
  1234.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"
    ( c' ~, q2 @3 l4 D
  1235.     "RECTANG" "1000,1000" "@57400,40000"
    " Y3 o; K, R+ ~, F
  1236.     "RECTANG" "1400,1400" "@56600,39200"
    8 _3 j5 m. F) K" ^" B( C
  1237.     "ZOOM" "_a"  ))6 i8 Z7 W' W! k3 I2 p! l
  1238. ;=====================================================================% y% r# P! {8 v' w6 k0 d+ b7 |4 ]
  1239. (Defun c:a1 ()
    / |3 V* ]. a2 |$ c& f6 F3 A# v
  1240.         (setq mv_sc 100)
    0 w9 b# H, u* K# z& p+ z
  1241.       (setq x1  840)
    % M- S# a+ ]6 E; F. c
  1242.       (setq y1  594)
    3 |. Q1 ~0 t8 c# n. J/ r7 d3 F
  1243.   (setq x1 (* mv_sc x1)
    + t7 z2 ]/ g2 l% ~$ N* r  c
  1244.         y1 (* mv_sc y1)  )
    : |. N  h1 t" h/ J& U7 x- o$ B
  1245.   (command  
    $ O: ]8 c! ^: G& \. D
  1246.     "LIMITS" "0,0" (list x1 y1). S3 S8 r! Y5 w$ c! v! b4 P
  1247.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"( v+ Z8 E$ c, T: [
  1248.     "RECTANG" "1414.28571429,1414.28571429" "@81180,56571.42857143") A+ [+ t& U" O0 L3 `$ w
  1249.     "RECTANG" "1980,1980" "@80048.57142857,55440"7 R, V) N/ J4 x7 j$ v5 ~3 A
  1250.     "ZOOM" "_a"  ))
    * @& i# P& k% r  F
  1251. ;=====================================================================
    - \4 h- @" Q5 G4 z3 V8 S' c) }
  1252. (Defun c:a0 ()
    . P# l1 E' d0 p! O
  1253.         (setq mv_sc 100)
    2 u  S$ i" j! y# ?1 h" K! b
  1254.       (setq x0  1188)
    3 O" b$ z/ Y4 X$ Z, z! J  P
  1255.       (setq y0  840)2 v! n; o+ U  j. ~: r' U6 |
  1256.   (setq x0 (* mv_sc x0)
    9 Q3 c0 X, T$ |) M# |" Q
  1257.         y0 (* mv_sc y0)  )) Y  I. m; ~% H: F5 K* T) z1 c
  1258.   (command  
    ( R' g2 U, v' o& Z' X; o
  1259.     "LIMITS" "0,0" (list x0 y0)% t& w0 ^! \. C* r; d( V, L
  1260.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"( j, L3 n4 Y3 O+ _/ P
  1261.     "RECTANG" "2000,2000" "@114800,80000"& R" ?9 S& i/ _* e3 t
  1262.     "RECTANG" "2800,2800" "@113200,78400"' @% L2 D& J# C" i# n
  1263.     "ZOOM" "_a"  )); m3 [1 W% P+ }/ O1 Y3 U8 ~1 g: {
  1264. . n+ v; U! ]$ }( E
  1265. ;=====================================================================* |$ J/ y9 L( u! U8 }/ }' p* ^
  1266. ;=========================DAT KHO GIAY BAN VE - KIEU 2=========================# S3 _. K7 H  S6 H! z/ W0 h! ?
  1267. ;=====================================================================
    . R$ T" S0 m5 i! T
  1268. ' ?, Z% r" w4 ]1 Z! U% ~) Y# i
  1269. (Defun c:6a ()
      Y' o; T0 ], {+ J" e: k7 m
  1270.         (setq mv_sc 100);Ti le  ban ve
    8 h2 H8 M3 u/ M& i+ H0 W/ F
  1271.       (setq x4  74.25)9 p  I) h; p: T: u
  1272.       (setq y4  52.5), ?0 c5 d3 R. ]  F& ~& x* W7 s
  1273.   (setq x4 (* mv_sc x4)
    . ^! M, e( a2 O8 V* q) P' c
  1274.         y4 (* mv_sc y4)  )
    ' E" }0 ~5 }0 g- N
  1275.   (command  
    6 e0 U9 e* ]6 A6 b' H7 K1 ~  b
  1276.     "LIMITS" "0,0" (list x4 y4)
    2 c5 ^9 H/ D( j7 y. \2 a9 Q
  1277.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"+ H  l9 j9 h' z( ?6 t4 o8 c
  1278.     "RECTANG" "505,125" "@6800,5000"
    / r1 B' ]2 N! d4 z9 M) y
  1279.     "RECTANG" "555,175" "@6700,4900"
    # o% }9 A" i5 Q1 q2 E% d+ ]
  1280.     "ZOOM" "_a"  ))
    ! X2 y5 u' d  f
  1281. ;=====================================================================
    8 [; `+ r  i* |6 ^" x- x. d
  1282. (Defun c:5a (); h) ?; h5 v1 l/ I1 z( O" J# a
  1283.         (setq mv_sc 100);Ti le  ban ve
    1 q  Y6 y1 H, Y
  1284.       (setq x4  148.5)
    2 o  L$ K: e- ~
  1285.       (setq y4  105)
    5 f% J2 Q( n- {- S- v# d3 |1 l
  1286.   (setq x4 (* mv_sc x4)
      ?3 Z& H& H# `6 M' W
  1287.         y4 (* mv_sc y4)  )
    . P8 O$ O* D( S" P% V  A
  1288.   (command  ' l6 Y( X& J* }) a/ X) i0 u& E3 S* A
  1289.     "LIMITS" "0,0" (list x4 y4)2 z9 x+ u% w+ n) r& K, }
  1290.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    4 T6 C, {; ^7 u3 ?" o7 `
  1291.     "RECTANG" "1000,250" "@13600,10000"
    ) T! U, w8 x/ D, I
  1292.     "RECTANG" "1100,350" "@13400,9800"
    & p3 l1 Z/ b" s) A( M( N: D( l) w
  1293.     "ZOOM" "_a"  ))
    1 I' Q3 _9 \; j+ {
  1294. ;=====================================================================
    3 P; x! Y0 L) }, X+ n
  1295. (Defun c:4a ()1 X9 y& a$ ^; R) h6 h# f
  1296.         (setq mv_sc 100);Ti le  ban ve( o1 L7 z' M1 M7 U9 Z7 ^! ^
  1297.       (setq x4  297)5 ]" L' Z: r6 D
  1298.       (setq y4  210)' u3 A' {- _! S; y9 d5 [1 t  N8 M+ m
  1299.   (setq x4 (* mv_sc x4) 6 W4 }  w* m  F. B6 `
  1300.         y4 (* mv_sc y4)  )
    7 a9 w4 x/ V( s; B5 d; P8 A  C
  1301.   (command  
    . w3 h9 g) `) d" g" X
  1302.     "LIMITS" "0,0" (list x4 y4)
      H/ n& x0 O; U$ {
  1303.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"- S2 L' |- g0 X3 O" h. O3 l& H. r
  1304.     "RECTANG" "2000,500" "@27200,20000"
    ! ~1 G4 w/ O% S5 f
  1305.     "RECTANG" "2200,700" "@26800,19600"! w" C+ n+ b/ ]7 K
  1306.     "ZOOM" "_a"  ))
    8 r7 |$ y$ Y3 w
  1307. ;=====================================================================
    5 E6 X7 n7 d( g+ e: m
  1308. (Defun c:3a ()
    + O  Q  r4 `! Z* M- r; A& H- ?
  1309.         (setq mv_sc 100)
    / Y& T6 s/ o+ L9 N8 n/ n
  1310.       (setq x3  420.0428571429)+ a1 {, c$ |/ D1 a; }; D
  1311.       (setq y3  297)- h0 n2 w1 K2 l7 r  W
  1312.   (setq x3 (* mv_sc x3) $ u' s7 b/ I5 r
  1313.         y3 (* mv_sc y3)  )
    ; C) M9 c5 I% m+ X
  1314.   (command  2 J" U( I: S( [+ `0 v& ?
  1315.     "LIMITS" "0,0" (list x3 y3)
    $ n: O6 k, D9 r
  1316.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    5 W& ~4 ^! U4 ?1 C! \$ h$ q% @9 J
  1317.     "RECTANG" "2828.57142857,707.14285714" "@38468.57142857,28285.71428571"- u& H" v+ Q* E6 m; d
  1318.     "RECTANG" "3111.42857142,989.99999999" "@37902.85714287,27720.00000001"& ~7 y7 _8 P, M1 A8 v: L& J
  1319.     "ZOOM" "_a"  ))+ Z3 w1 O' \8 K/ j1 z, Y3 P: P3 K
  1320. ;=====================================================================
    # E; ~" N* O1 B
  1321. (Defun c:2a ()' k/ u6 Y  W- |, s! Y$ B, G2 d- S
  1322.         (setq mv_sc 100)
    . R, b- l/ e, Z& i
  1323.       (setq x2  594)7 p% D( `7 y1 X( N1 b, s) Z$ g2 x
  1324.       (setq y2  420)
    - i, H: s1 E9 z: a- K
  1325.   (setq x2 (* mv_sc x2) " N) h# w# U2 V# J
  1326.         y2 (* mv_sc y2)  ): m. t( c* F3 S' Q5 x* s) d) @
  1327.   (command  
    # I0 a( u) j' ?+ Y' l# z
  1328.     "LIMITS" "0,0" (list x2 y2)* Z* i6 Y* H$ W) Z
  1329.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"! X# s4 {2 n6 ~) M7 i' Z' a
  1330.     "RECTANG" "4000,1000" "@54400,40000"
    0 j' b7 f/ u- m. \% C
  1331.     "RECTANG" "4400,1400" "@53600,39200"
    / D# e5 [4 I( z7 T7 q( M* Y* K
  1332.     "ZOOM" "_a"  ))0 b0 `# n1 @) f# ?( Q
  1333. ;=====================================================================
    : p) [* p7 ^% v4 N; u$ l! ?' B0 `0 c
  1334. (Defun c:1a ()
    9 f2 Z) b3 p4 y  q7 r) l& J
  1335.         (setq mv_sc 100)
    3 f+ k/ Q: c1 T
  1336.       (setq x1  840.0857142857)* T" f1 p, q5 H) T
  1337.       (setq y1  594)
    * }: Z# o- o2 `2 A5 F
  1338.   (setq x1 (* mv_sc x1)
    ) [; m, {8 x* r7 S3 P( Z# t
  1339.         y1 (* mv_sc y1)  )$ y3 K! O+ c9 T# u, h/ _) r
  1340.   (command  
    0 r6 l5 b) {: X# d; |. {' t
  1341.     "LIMITS" "0,0" (list x1 y1)
    ) K) ]3 w2 j* Z' X
  1342.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"7 ^1 F0 R* _# I! W
  1343.     "RECTANG" "5657.14285714,1414.28571429" "@76937.14285714,56571.428571436"; s# U& Z& w4 O. b; m/ D0 M
  1344.     "RECTANG" "6222.85714286,1980.00000001" "@75805.71428570,55440", G; l) Z  q6 ^1 Z
  1345.     "ZOOM" "_a"  ))
    1 U. T+ p% e+ L* {+ ?; T. {: Q: Z$ C/ \
  1346. ;=====================================================================6 R  T5 D. L: q+ l5 ?
  1347. (Defun c:0a (). l6 K+ W$ ?1 V1 h
  1348.         (setq mv_sc 100)
    % f$ o* K" [  L6 E9 e* r! x4 ~
  1349.       (setq x0  1188)" f( N0 R% _2 q' \5 \9 H# X- D: I
  1350.       (setq y0  840). S) }- L' N- C  X4 u
  1351.   (setq x0 (* mv_sc x0) 7 O/ l4 N' T& T% P+ c( {3 c
  1352.         y0 (* mv_sc y0)  )& `  A4 a1 K5 |
  1353.   (command  9 U1 [" j6 H4 u' {
  1354.     "LIMITS" "0,0" (list x0 y0)( U: E4 i# G9 G1 K" i9 {
  1355.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"% N; {, i1 v! k4 H* u) i$ o
  1356.     "RECTANG" "8000,2000" "@108800,80000"
    1 H% S6 c& [7 z9 m! {4 m! p
  1357.     "RECTANG" "8800,2800" "@107200,78400"8 A8 Z/ o3 I/ V8 \' J* z4 X# p
  1358.     "ZOOM" "_a"  ))- t& Q- M! p- p
  1359. 5 Y- \4 b/ @! `, _- q! f3 \
  1360. ;=====================================================================
    - Y- D) v" d7 b9 w- I
  1361. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================. }( n6 h* w& }; U$ z( `6 D8 h
  1362. ;=====================================================================
    & ~, t' D4 d- U  H% p1 k! t9 ?
  1363. (defun c:khogiay (/ oldlst a b c d e f g h kho TL)* c8 d/ P# X7 Z( {# t# {
  1364. (command "undo" "be")
    0 @2 e; @/ J% J; C: v5 ^& R3 ^8 z
  1365. (setq oldlst (mapcar 'getvar (list "CMDECHO" "OSMODE" "cecolor")))1 }" g; l/ s7 O+ B! n
  1366. (setvar "CMDECHO" 0)
    & ?- r$ D# ~6 M; b' Y8 B& ~
  1367.     (setq a (getpoint "\n chon diem chen :"))
    8 A1 s, H; J4 u8 `# ]
  1368. (if (not TL) (setq TL 1.00))  j# C/ o$ j& F7 i$ \2 y2 y2 l
  1369. (setq TL1 (getDIST (strcat "\nScale <" (rtos TL 2 2) ">:")))+ V$ E$ n4 L9 I; e& F
  1370. (if TL1 (setq TL TL1))2 K4 ?+ g4 e" w, @- k2 |; v$ H
  1371. (setvar "osmode" 0)1 U& `5 M4 L6 I) ^
  1372. (if (not (tblsearch "layer" "Defpoints")) (Command "layer" "N" "Defpoints" "")), L9 y& D. [! w. o1 f
  1373. (initget "0 1 2 3 4")! Z9 [, r( J6 x& w" g  O
  1374.        (setq kho (getkword "\Kho A0 _ Kho A1 _ Kho A2 _ Kho A3 _ Kho A4 [0/1/2/3/4]? <0>:"))
    7 N9 Z& u; k% H% _7 E1 f$ B8 E
  1375. (if (= kho "0")* _: ?0 l. m8 y1 z, T+ h
  1376.      (progn
    % ]  f" w) f! `% c9 X7 J! v
  1377.              (setq b (polar a 0 (* TL 1189)))
    $ I$ a' }- N0 z. ^4 E2 Z
  1378.                      (setq c (polar b (/ pi 2) (* TL 841)))
    : D* {; c5 W/ b4 W
  1379.                      (setq d (polar a (/ pi 2) (* TL 841)))$ {* p/ F# x; M6 w) G; p1 R
  1380.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))
    $ }: V/ |. k1 R8 j9 h2 T0 ]
  1381.                      (setq f (polar e 0 (- (* TL 1189) (* TL 24))))' D0 I7 Q& M  L
  1382.                      (setq g (polar f (/ pi 2) (- (* TL 841) (* TL 24))))7 X7 |' [" e$ u: Y1 X
  1383.                      (setq h (polar e (/ pi 2) (- (* TL 841) (* TL 24))))& {! Q: x  D) ~& ]) g
  1384.   (command "Pline" e f g h "c")            
    + M) a1 I4 d. F4 K) A- x
  1385. (command "change" "last" "" "properties" "layer" "0" "")
    - D2 f& X1 a  `( J8 O7 h
  1386. (setvar "cecolor" "4")/ S5 G4 \% H6 S4 r3 i
  1387.   (command "Pline" a b c d "c")
    , u% u( H1 H) g5 f: t% W
  1388. (command "change" "last" "" "properties" "layer" "defpoints" "")))   
    4 K! V5 T2 B: u' y% b/ W: a" H
  1389. (if (= kho "1")
      W: l3 n1 c* @: S# h
  1390.      (progn; M& n6 F# _2 ^9 o% M
  1391.              (setq b (polar a 0 (* TL 841)))
    2 p5 _3 S) x1 p
  1392.                      (setq c (polar b (/ pi 2) (* TL 594)))' U! l( Y4 v$ K3 j+ x! G
  1393.                      (setq d (polar a (/ pi 2) (* TL 594)))+ P( K$ o& C' O) P/ k2 Z
  1394.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))1 g1 m* M$ h0 E  b) @& ^" t
  1395.                      (setq f (polar e 0 (- (* TL 841) (* TL 24))))
    . \. _* `  U# Q
  1396.                      (setq g (polar f (/ pi 2) (- (* TL 594) (* TL 24))))$ k0 \5 K7 D3 H6 `  w" j' I3 [, V
  1397.                      (setq h (polar e (/ pi 2) (- (* TL 594) (* TL 24))))
    7 d% |0 U/ }/ A+ P7 S5 ?
  1398.   (command "Pline" e f g h "c")            
    " H# X7 u# Z; F$ d; g$ E
  1399. (command "change" "last" "" "properties" "layer" "0" "")& l2 [. o; I3 C' Q' X
  1400. (setvar "cecolor" "4")3 i. u* s, r. S# a) t. m
  1401.   (command "Pline" a b c d "c")# `; d+ E$ Z" @- ^
  1402. (command "change" "last" "" "properties" "layer" "defpoints" "")))$ N1 S+ p0 D% H% I1 S( n  z
  1403. (if (= kho "2")
    2 |8 l5 N" b. q
  1404.      (progn+ w0 O* s' S7 s
  1405.              (setq b (polar a 0 (* TL 594)))
    1 x! v( s/ R, v) i. K; X
  1406.                      (setq c (polar b (/ pi 2) (* TL 420)))
    & v5 N' M: \2 i7 G5 m# y
  1407.                      (setq d (polar a (/ pi 2) (* TL 420)))
    1 V6 R6 e+ O5 p+ a3 Q( A
  1408.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))
    3 c/ \/ ?: E' b# g- N& Y
  1409.                      (setq f (polar e 0 (- (* TL 594) (* TL 20))))
    4 S6 o3 s& x+ Q" q& g. a
  1410.                      (setq g (polar f (/ pi 2) (- (* TL 420) (* TL 20))))
      K3 m7 ^9 A; j& [2 `7 t
  1411.                      (setq h (polar e (/ pi 2) (- (* TL 420) (* TL 20))))! M* a; z. H  H, |7 g6 [# q
  1412.   (command "Pline" e f g h "c")            
    . B5 _0 A/ |* u
  1413. (command "change" "last" "" "properties" "layer" "0" "")
    ! p) b. A0 U- r. p0 K+ ~5 w
  1414. (setvar "cecolor" "4")
      ~& i6 u# T5 b9 E' s
  1415.   (command "Pline" a b c d "c")
    ) r" p9 G2 I: C3 O6 B/ {: L4 T7 U2 A
  1416. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    6 e+ L2 h" s! O1 p" t3 y1 z
  1417. (if (= kho "3")
    " k& ?* E8 ^" {% w# b+ W. K
  1418.      (progn
    0 h6 H1 J0 h9 R, B- V$ I
  1419.              (setq b (polar a 0 (* tl 420))), b" b# Q+ |$ @0 q* o
  1420.                      (setq c (polar b (/ pi 2) (* TL 297)))
    3 h2 n; D: Y# ?/ k& a
  1421.                      (setq d (polar a (/ pi 2) (* TL 297)))8 O! _2 S/ d5 [  T, D
  1422.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))
    4 c' K# ?% c  K9 }& Q( h  g6 s
  1423.                      (setq f (polar e 0 (- (* TL 420) (* TL 20))))
    " }* E3 }+ V. Z) F  w* ^4 F
  1424.                      (setq g (polar f (/ pi 2) (- (* TL 297) (* TL 20))))
    . z9 P# V3 O" I+ a
  1425.                      (setq h (polar e (/ pi 2) (- (* TL 297) (* TL 20))))3 _" ], u$ G. w9 S
  1426. (command "Pline" e f g h "c")( T, J2 p6 r& i' a  B
  1427.   (command "change" "last" "" "properties" "layer" "0" ""), U" D. a' f( z& j( [4 c
  1428. (setvar "cecolor" "4")) H$ t' w& ^  a
  1429. (command "Pline" a b c d "c")
      f, Q5 k3 ]. X) q/ }
  1430.   (command "change" "last" "" "properties" "layer" "defpoints" "")))7 i$ W; Q; a  }3 S9 _: r3 C2 Y
  1431. (if (= kho "4")6 h, c7 A) }7 l9 G# @! h+ Q
  1432.      (progn$ o4 ]! v/ y" E) h4 q- M! L( @
  1433.              (setq b (polar a 0 (* TL 297)))
    ' N# W0 U" j( Q5 Y. R0 @: {
  1434.               (setq c (polar b (/ pi 2) (* TL 210)))
    " D& v# \$ R7 \' Y
  1435.                      (setq d (polar a (/ pi 2) (* TL 210)))1 ^: d+ ~0 E# C8 o7 L
  1436.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 81)))))
    2 Y& a, u- N2 \7 Z% k
  1437.                      (setq f (polar e 0 (- (* TL 297) (* TL 18)))), k5 ?% H5 J3 H, J
  1438.                      (setq g (polar f (/ pi 2) (- (* TL 210) (* TL 18))))3 Q/ ]% F3 g5 B" l6 q8 |7 o
  1439.                      (setq h (polar e (/ pi 2) (- (* TL 210) (* TL 18))))2 }- Y8 a1 ]% M
  1440.   (command "Pline" e f g h "c")            , ]7 z2 {' h" K+ c$ ?9 S2 A
  1441. (command "change" "last" "" "properties" "layer" "0" "")6 b$ T3 U6 w) P' v1 u' O9 V
  1442. (setvar "cecolor" "4")! Y6 g5 \4 U5 {5 y* B
  1443.   (command "Pline" a b c d "c")
    ) T5 a4 _8 q6 J3 ?
  1444. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    ) ~' r  F9 W. y/ F& m' _
  1445. (mapcar 'setvar (list "CMDECHO" "OSMODE" "cecolor") oldlst)
    + e; D7 Q8 i5 r: C6 j; ~- C
  1446. (command "undo" "e"), S1 }( C1 {: Q5 ~
  1447. (princ))+ g8 y, S& D1 r* G
  1448. ;=====================================================================4 d- \( ]$ a! u. z3 z) s& M! L5 A: F
  1449. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================
    % B8 ^9 N8 f! i; {. L+ {
  1450. ;=====================================================================8 f" K5 D9 H! M  r& M  w* z
  1451.   s( p" T* ~& h/ ^: ~
  1452. ;=====================================================================
    5 V: I& `9 A& a: o
  1453. ;===================DAT Ti Le Theo KHO GIAY BAN VE====================% L7 [8 E- Z  I+ T
  1454. ;=====================================================================
    5 U  F8 e4 B- N5 Y: O
  1455. 9 G( I, C4 O. N& U$ `; x' a; E
  1456. (DEFUN C:SA6 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.1" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""
    ) C9 A' j, x# W, {. {. q; W
  1457.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.3" ""
    2 a! `5 h1 u; l/ I% K2 V
  1458.                                            "M" "MANH" "C" "9" "" "Lw" "0.1" "": N6 n$ b& i( h* j; {
  1459.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""
    0 i  B( b- L/ d- d
  1460.                                        "M" "DIM" "C" "1" "" "Lw" "0.12" ""
    * o* d4 l' O3 ^8 \+ X" R% e* f
  1461.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""
    % S& X4 b) V: {( ~% a) ~$ s
  1462.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.12" ""3 i  l! Z% N* S0 h; m* _
  1463.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""
    ! I6 d4 ?7 k7 e/ q
  1464.                                        "M" "COT" "C" "1" "" "Lw" "0.3" "") V1 g' e: V* C+ A6 t( X$ E
  1465.                                        "M" "Defpoints" "C" "7" ""/ M/ F  M3 l/ d! r
  1466.                                        "M" "0" "C" "3" "" "Lw" "0.12" ""! [2 H- s9 X+ ~' k4 T
  1467.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""
    0 B" n8 u0 h+ r/ @
  1468.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    ) [2 ~, d: G9 h* O7 F
  1469.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.1" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "3" ""))& E+ C6 }2 M! V" r# M( `( g
  1470. (DEFUN C:SA5 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.12" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "10" ""
    : R! u9 x) S1 C+ H( Z
  1471.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.4" ""
    4 i  @5 H% J8 V/ l$ f
  1472.                                            "M" "MANH" "C" "9" "" "Lw" "0.12" "", M1 Y. S1 A9 A: e/ F$ `0 C
  1473.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""
    : w: u2 _/ v3 o3 U# w
  1474.                                        "M" "DIM" "C" "1" "" "Lw" "0.2" ""
    * s2 C. S1 m2 O( h
  1475.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""
    3 c! }; y9 D. G6 i" U' U6 n5 x4 t7 }% P
  1476.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.2" ""
    2 K% S: v2 T! m4 X6 G8 B' i$ y
  1477.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""
    1 I, x2 A  i, ~: \2 K. y  v; i4 T
  1478.                                        "M" "COT" "C" "1" "" "Lw" "0.4" ""$ @2 |  t+ _/ T  w
  1479.                                        "M" "Defpoints" "C" "7" ""
    ' d8 n, i; z0 a" @$ }$ {
  1480.                                        "M" "0" "C" "3" "" "Lw" "0.2" ""& u  r- s0 T2 A  o- l5 k
  1481.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""( I3 y; r5 Z2 Z* R$ F
  1482.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""' H  P1 P( c& L& b! G: i
  1483.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.15" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "5" ""))
    : X. `' s( s  G# l
  1484. (DEFUN C:SA4 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.2" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "20" ""
    ; s- d8 r7 ]7 r& L
  1485.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.6" ""8 P( X4 H- }' |. t
  1486.                                            "M" "MANH" "C" "9" "" "Lw" "0.2" ""
    7 `& b: N, j; g3 a( w+ H
  1487.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""+ R  O# R$ O1 o
  1488.                                        "M" "DIM" "C" "1" "" "Lw" "0.25" ""
    : F  h- H6 E+ S8 v$ D7 K8 [3 O6 H
  1489.                                        "M" "THAY" "C" "7" "" "Lw" "0.35" ""
    3 v5 f8 R+ }6 V  [' Z
  1490.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""
    . ^, _- [) T* b: ]7 m) t0 F; m1 _
  1491.                                        "M" "HATCH" "C" "5" "" "Lw" "0.15" ""
    7 \, c2 P. L* Z1 q( \2 D3 B7 a
  1492.                                        "M" "COT" "C" "1" "" "Lw" "0.6" ""5 |* O& N4 X8 w' {
  1493.                                        "M" "Defpoints" "C" "7" ""
    , J, u8 U7 q) O( Z( G( h9 a8 q
  1494.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""
    1 P8 d- A7 a2 @0 ~/ \
  1495.                                        "M" "CUA" "C" "6" "" "Lw" "0.25" ""
    9 q2 _/ ^8 H3 w! Z& ]2 r
  1496.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.25" ""
    5 |+ E& y" q6 l# q
  1497.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.2" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" ""))8 W2 S( v7 }2 N# U. L
  1498.         6 _& h; |8 g7 F( g0 W) s
  1499. (DEFUN C:SA3 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "30" ""
    " c. a4 _; _- e; Z7 `8 K) U
  1500.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""0 E" N9 S4 R# l( d3 V
  1501.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    6 v0 n; C6 G3 f1 f6 m! K7 B
  1502.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""
    . `; v9 L% |& P  Y/ R& N0 {
  1503.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""' @' T, c3 u# D1 \4 a
  1504.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""0 t9 g7 C, q, L5 p
  1505.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""' ~9 c. O3 u+ L2 D# z! ]% v
  1506.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    9 i4 w4 \0 z8 U* Z* U
  1507.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""0 K! y/ c9 v4 }4 r/ z: I
  1508.                                        "M" "Defpoints" "C" "7" ""
    . [2 @7 `6 q  y& A
  1509.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""
    2 ^$ t' r; X/ Z% {) ^( d
  1510.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""& F1 J; T) U) Z: J1 N0 ?' p
  1511.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""7 y) a2 J: J) z5 s7 i! T1 O
  1512.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "20" ""))(PRINC)6 S; B- g! y, D  I! z8 F- P
  1513. 8 @' ~, i- v0 p. |
  1514. (DEFUN C:SA2 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "45" ""
    4 M8 O! X! S" l8 {
  1515.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""3 A+ ~! r0 Y" w
  1516.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    # p; P) k) Z8 Y" Z1 }2 ]- W9 t
  1517.                                        "M" "TEXT" "C" "7" "" "Lw" "0.25" ""
    5 E( N% p7 g- O* v) ?! }$ h0 V1 x
  1518.                                        "M" "DIM" "C" "1" "" "Lw" "0.3" ""8 ~2 i0 S* ]& ?1 ^1 U2 {: i
  1519.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""
    : Y2 C6 `; ]# _7 K; c$ e' |
  1520.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.3" """ Z2 f' H3 A) u" \
  1521.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    % j+ s1 c8 k* o6 S* n
  1522.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""0 k7 f6 ?/ _; A: g! Z8 ^) X2 ]
  1523.                                        "M" "Defpoints" "C" "7" ""6 U  h; H6 Z! D
  1524.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    . t- A3 N$ t4 p
  1525.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""
    2 g) ]9 M1 o! v/ U) q3 {' {
  1526.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""
    8 E2 n/ z, T2 A" W+ o2 n. I
  1527.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "30" ""))
    , C4 a0 K7 q* t; ]$ @& m$ D
  1528. 1 e; R' ^, }  p8 D
  1529. (DEFUN C:SA1 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.4" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "60" ""9 o2 S  P5 |! U) O  d' H
  1530.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.85" ""
    # V' N/ h$ D' H) g+ m
  1531.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""
    3 C* e" c( j2 \  w2 y& f1 t
  1532.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""/ X. B* }6 Q5 |" @
  1533.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""$ ^( n' n% d" |& \% M6 Z( D" Y
  1534.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" "", v5 p: u1 |1 `  B
  1535.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.35" ""
    ( h' T5 ?' j' i5 x+ t; E) ~
  1536.                                        "M" "HATCH" "C" "5" "" "Lw" "0.25" ""
    ; G9 p; L' u3 b9 ^6 Y. k! X7 l
  1537.                                        "M" "COT" "C" "1" "" "Lw" "0.85" ""
    2 f3 j8 S( K! |1 e, G$ t* ?% |
  1538.                                        "M" "Defpoints" "C" "7" ""
    . I4 O7 o% ?! @0 M
  1539.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    ; r7 W& b9 ]% U6 q8 y
  1540.                                        "M" "CUA" "C" "6" "" "Lw" "0.4" ""
    0 `, N9 G% S6 Y1 F2 C
  1541.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.35" ""
    2 ~4 {7 E. z8 b. T" ^8 Y7 F0 a* y# W! Y
  1542.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.3" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "40" ""))
    5 G7 @8 o) Z( t0 ~# z
  1543.         7 R) d7 M* S- A( ?6 Q
  1544. (DEFUN C:SA0 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.5" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "85" ""& b! m, W0 f) n7 O! D. U2 ]
  1545.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1" "", p6 m5 t9 t+ s" u, o7 f/ v7 w: v
  1546.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""
    2 [0 O9 l1 M: Q. Z& h5 K
  1547.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""- W* x/ s; y0 J  r0 p: r
  1548.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""1 B4 p0 A+ v" M+ H
  1549.                                        "M" "THAY" "C" "7" "" "Lw" "0.5" ""
    % T3 @# ]. y% J, ~2 d
  1550.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.4" "", W2 u: z0 K" N4 |, ~
  1551.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""1 H0 m' \! F* Q
  1552.                                        "M" "COT" "C" "1" "" "Lw" "0.1" ""
    ! `/ \3 I* J6 U+ O* \
  1553.                                        "M" "Defpoints" "C" "7" ""1 b! `/ `/ j8 o" b
  1554.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""
    0 W7 O( v1 l' [' f& Q- `3 [
  1555.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""
    * L  Q! D) N* i: i
  1556.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.4" ""
    / k. ?5 {% t* l3 H* u( }
  1557.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.35" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "55" ""))
    ( c* j( F% F; I5 O! }
  1558. (DEFUN C:O   () (COMMAND "OFFSET"))- Y5 D0 B" `) \- w9 A3 o' f* ?
  1559. (defun c:s1 () (command "surftab1"))
    5 p" p2 l$ p7 T8 u$ s
  1560. (defun c:s2 () (command "surftab2"))- J# P8 ^+ U+ D$ z
  1561. (defun c:ep () (command "explode"))4 O) R& C  k' F0 Z2 G9 n) f
  1562. (DEFUN C:QS () (COMMAND "AUDIT" "Y" "purge" "all" "*" "N" "QSAVE"))2 @4 I+ A" }* `0 {" r" \
  1563. (DEFUN C:QV   () (COMMAND "QSAVE"))
    % H% H" c, m3 h( p" Y
  1564. (DEFUN C:S    () (COMMAND "STRETCH" "C"))
    6 v9 m6 U! Q+ ]6 Y* C+ e$ i6 \
  1565. 3 f4 o8 k9 y# j3 t7 R
  1566. ;************************** CAT DIM **************************
    2 t- \9 \& ]4 c( g4 f& E

  1567. " V+ C# e- F2 g& P) T, i
  1568. (DEFUN C:DC (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I' A2 x' V4 q: c$ T. o
  1569.                 PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)+ q) O; {5 W2 g' ^% k. q
  1570. (SETQ CMD (GETVAR "CMDECHO"))
    9 y0 T) u% d! t* |2 X* E
  1571. (SETQ OSM (GETVAR "OSMODE")), l# ~$ o( r1 {$ l
  1572. (SETQ OLDERR *error*6 T/ v" G; Z& C6 [. [% B) H2 O
  1573.       *error* myerror)
    * ~; J: k2 @; t; w3 R/ \9 T# |
  1574. (PRINC "Please select dimension object!")5 e& L, G, `7 D6 q. G$ _! W3 m+ I
  1575. (SETQ SS (SSGET))
    # ?! J: h/ U4 z" R/ a
  1576. (SETVAR "CMDECHO" 0)
    1 E- J) [$ `; d+ f, j8 Z
  1577. (SETQ PT (GETPOINT "Point to trim or extend:"))  ^% N: B; t# M# K# p. \/ U" b& l
  1578. (SETQ PT (TRANS PT 1 0))
    0 p2 M7 T0 }3 c& u$ g' [. S( g
  1579. (COMMAND "UCS" "W")4 k0 {: ~: }+ T5 N( J
  1580. (SETQ LTH (SSLENGTH SS))  o* ~; l* k5 `0 P% d" a
  1581. (SETQ DEM 0)
    ; \+ M4 _0 M7 o9 E* i" s
  1582. (WHILE (< DEM LTH)  e+ r! z5 R$ l, n
  1583.     (PROGN
    ! h% F9 C8 U( e* ~- Q
  1584.         (SETQ DS (ENTGET (SSNAME SS DEM)))9 P9 |) k& {3 J. D, \( N
  1585.         (SETQ KDL (CDR (ASSOC 0 DS)))
    4 i8 I& o' s$ Q
  1586.         (IF (= "DIMENSION" KDL)+ G  V5 V! X& A8 L; j, N" J
  1587.            (PROGN
    7 T& U" K- f% l  j8 r' L' c1 k2 Q
  1588.                 (SETQ PT10 (CDR (ASSOC 10 DS)))9 H; I" k  x; `
  1589.                 (SETQ PT11 (CDR (ASSOC 11 DS))), t9 E2 L' W! v6 Q9 R' N
  1590.                 (SETQ PT13 (CDR (ASSOC 13 DS)))
    ' h1 G- Y4 _! Q; U
  1591.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    3 ]$ i7 A# P* Z! Q$ O3 c
  1592.                 (SETQ N70 (CDR (ASSOC 70 DS)))
    ) n: W, m; k: B2 Z, ]9 I1 a! T
  1593.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161)): A2 }8 f6 R0 L, a
  1594.                    (PROGN
    6 T) m8 W1 O  r3 }# B8 l; Q
  1595.                         (SETQ GOCY (ANGLE PT10 PT14))
    # o# Q; ^3 Y8 L1 X
  1596.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    & l8 ~7 u" E, V
  1597.                    )' Q0 o$ P+ n3 y$ \9 H, J
  1598.                 )
    . a* u# r- t, S/ Q% z
  1599.                 (SETVAR "OSMODE" 0)5 C; o9 g( w, W! J, e. e
  1600.                 (SETQ PTI (POLAR PT GOCX 2))- M2 C4 W* _7 O5 ~$ b/ G
  1601.                 (SETQ PT13I (POLAR PT13 GOCY 2))/ A5 y- F7 c5 l5 {( z
  1602.                 (SETQ PT14I (POLAR PT14 GOCY 2))# C- h/ \1 [6 d, J: F
  1603.                 (SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
    9 _4 m" [! c( p3 k
  1604.                 (SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))7 {0 H$ C, u5 w5 p6 c! F; O! S, v
  1605.                 (SETQ O13 (ASSOC 13 DS))
    ! ?, V, w6 C2 g; q# T4 j; }
  1606.                 (SETQ O14 (ASSOC 14 DS))2 @: h5 b0 O7 {1 `( t* H( }
  1607.                 (SETQ N13 (CONS 13 PT13N))
    & S% h8 N: O/ O/ `% q1 u
  1608.                 (SETQ N14 (CONS 14 PT14N))
    0 S1 f) ~* e9 _. H/ O7 D9 R
  1609.                 (SETQ DS (SUBST N13 O13 DS))
    0 O8 {- A6 z7 W/ T8 f. ]+ D
  1610.                 (SETQ DS (SUBST N14 O14 DS))
    3 ?9 m% Q7 v8 a6 P% F% I
  1611.                 (ENTMOD DS)
    4 i2 R  p  u/ S3 `+ x
  1612.            )
    1 G& I( p( Z; X' j
  1613.         )  G" R$ I3 m  ?
  1614.         (SETQ DEM (+ DEM 1))
    $ c1 L! v* Y0 T, ?+ |% C0 I6 ^
  1615.     )
    * h% R: j/ L, U$ N( Q, `3 A
  1616. )) B' j  J8 I- o- V% s
  1617. (COMMAND "UCS" "P")& u3 k' Q( M( H5 n9 A% Q
  1618. (SETVAR "CMDECHO" CMD)
    % `+ F/ V2 I3 `" @
  1619. (SETVAR "OSMODE" OSM)  L- l$ ^" m+ @% H; }
  1620. (setq *error* OLDERR)               ; Restore old *error* handler
    , |# m( Q0 v4 G% s
  1621. (PRINC)
    & g  Z) t- o/ {4 |: c1 B
  1622. )
    3 N/ h/ }  X* j) X

  1623. ' D, d3 }( J7 k$ v
  1624. (DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI% B. ]* U6 H+ F9 e" f
  1625.                 PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
    9 g/ `0 F+ E3 t& R; k3 N
  1626. (SETQ CMD (GETVAR "CMDECHO"))
    % _( f  [' u1 j6 \
  1627. (SETQ OSM (GETVAR "OSMODE"))" n( f, F- y4 a% r6 g; U
  1628. (SETQ OLDERR *error*
    & D+ q7 E- N% X/ I: W+ p/ }7 V
  1629.       *error* myerror)
    ( p4 I; f, P6 Y5 `0 l- _0 |
  1630. (PRINC "Please select dimension object!")
    & C. w5 p5 p5 ~0 z; B
  1631. (SETQ SS (SSGET))
    5 C2 y% }/ K8 Z$ v3 v; [, X7 F! L: L
  1632. (SETVAR "CMDECHO" 0)
    ) b& o$ f% b1 p( A0 ^! z
  1633. (SETQ PT (GETPOINT "Point to trim or extend:"))
    . g/ M; P& A/ y
  1634. (SETQ PT (TRANS PT 1 0))
    & p8 L( ]! z2 n# P) [* u6 t& {
  1635. (COMMAND "UCS" "W")
    * S, q' r9 `6 v% p7 i! A. r8 H/ X
  1636. (SETQ LTH (SSLENGTH SS))- ]0 @, T% Q) I0 V5 u! s9 d- m: u8 V' r
  1637. (SETQ DEM 0)
    . [2 P- Z: U9 p- J
  1638. (WHILE (< DEM LTH)
    2 ^3 K# V& q2 G( i5 ?/ X
  1639.     (PROGN
    2 l6 n8 w" P- W; y- U" h
  1640.         (SETQ DS (ENTGET (SSNAME SS DEM)))) G/ N3 T  I9 ]/ E- G* e' H  J
  1641.         (SETQ KDL (CDR (ASSOC 0 DS))), I6 ^, ~/ {2 V, m: U: l
  1642.         (IF (= "DIMENSION" KDL)  U" a* f& @" H3 J* V: B
  1643.            (PROGN, y0 F" R+ r* @
  1644.                 (SETQ PT13 (CDR (ASSOC 13 DS)))+ A6 I$ \8 d% B2 T, H0 X$ K
  1645.                 (SETQ PT14 (CDR (ASSOC 14 DS)))2 S& g1 F% @2 F- U
  1646.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    & [, ], G4 i/ Z4 W
  1647.                 (SETQ PT11 (CDR (ASSOC 11 DS)))
    6 M# v$ S3 O8 D# @/ @; ~
  1648.                 (SETQ N70 (CDR (ASSOC 70 DS)))
    ' T& W  D: X6 B- d/ o% N
  1649.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
    : D% e/ ?# }# ^. N* X( x; X- q
  1650.                    (PROGN
    & o$ t' U6 H# g, n( i" m$ G
  1651.                         (SETQ GOCY (ANGLE PT10 PT14))
    3 u$ X8 N( N- m! ]2 r
  1652.                         (SETQ GOCX (+ GOCY (/ PI 2))): R4 f; }  y9 X" {
  1653.                    )# f( h1 F. k8 k/ \' _6 B
  1654.                 ): a# ?( `# J# f' d. P
  1655.                 (SETVAR "OSMODE" 0)+ n7 H; w; `6 z
  1656.                 (SETQ PTI (POLAR PT GOCX 2))
    " v; W7 W/ H3 h; G
  1657.                 (SETQ PT10I (POLAR PT10 GOCY 2))+ P- q6 g$ }/ F. H  I% I9 T
  1658.                 (SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
    ! u. H  f6 @- Y' ^9 @1 x
  1659.                 (SETQ KC (DISTANCE PT10 PT10N))) ]) \6 U9 A, {# U  i( D8 B# p* A
  1660.                 (SETQ O10 (ASSOC 10 DS))
    * V  E( I; w, N& {& q4 h
  1661.                 (SETQ N10 (CONS 10 PT10N))4 H/ W0 l8 L2 ~% C/ D# k& m6 z" b
  1662.                 (SETQ DS (SUBST N10 O10 DS))
    $ H# X% f6 |. U
  1663.                 (SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC)): Z% G! T2 n; f# D
  1664.                 (SETQ O11 (ASSOC 11 DS))3 x/ y# w- F6 ?  G: N
  1665.                 (SETQ N11 (CONS 11 PT11N))
    8 F% F9 |% L  c5 L9 ~4 t
  1666.                 (SETQ DS (SUBST N11 O11 DS)), s$ z- G( n5 w- m
  1667.                 (ENTMOD DS)& K  \2 r) b3 h3 y9 Y5 |
  1668.            )
    4 `3 q7 ]) P# Z1 d$ @
  1669.         ). k* I" p- f" i2 {4 @8 ]6 L
  1670.         (SETQ DEM (+ DEM 1))
    7 D% S- j8 [8 `: u
  1671.     )
      T+ ?) o3 G) H7 N) u( X
  1672. )
    ' i7 U, M4 W. j, v
  1673. (COMMAND "UCS" "P")
    % d- ]# [% v3 Z: `" F
  1674. (SETVAR "CMDECHO" CMD)
    + L8 F/ R0 C* A: G* U
  1675. (SETVAR "OSMODE" OSM)
    ' m. y/ _. _( U. W
  1676. (setq *error* OLDERR)
    3 a2 }& d! b. j/ O
  1677. (PRINC)
    : Q, k" P5 H# F/ f! j
  1678. )
    9 z/ v1 l/ n# W
  1679. : O2 h, _3 ~# z& l3 R
  1680. ;;; ================ BAT - TAT CHE DO GACH CHAN TEXT (TU) =================
    $ Z4 }/ r( [; O+ p7 H) J
  1681. , Z# e* O; u+ R, T' V- ^, F0 r: p0 e- ]  Z
  1682. (defun c:tu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can gach chan ")
    2 i: S0 O& w) f% W0 y
  1683.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")4 [6 ]9 d- e$ l1 R0 `# r) a# C
  1684.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    7 R# K* X. V% A
  1685.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))4 C; L0 c7 t5 P+ a* W
  1686.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%u")1 q8 ~: `" e  k! }
  1687.         (= testxt "%%U"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%u" txttxt)))
    ) \. o0 c% J9 E. l
  1688.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))
    9 T( V' F2 c; i  m1 B/ Y4 i
  1689.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    2 l  r, \# s( i, E, e) y& E
  1690. / R0 D. b7 c0 |+ w7 ^2 i; b
  1691. ;;; ================ CHEN COT (TUU) =================
    # `% ^" O  C5 k

  1692. ; o+ H! v6 o: X- p
  1693. (defun c:tuu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen cot ")
      D; V3 }+ i# g7 Q- x6 L7 S
  1694.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p"): d/ ~2 O7 d- _6 l. v
  1695.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    % F8 ~8 B% m' P# O
  1696.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    9 W1 j( a' ~3 h7 q$ `; x/ Q3 k' H
  1697.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%p 0,000")
    3 m; n: H7 S) N7 a; U$ z
  1698.         (= testxt "%%P 0,000"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%P 0,000" txttxt)))
    + z3 M3 G& K2 }+ ]6 T/ A
  1699.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))
    / w+ T, T0 k# D. `/ _1 [/ E+ R
  1700.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))+ i  f; o' l/ d; U

  1701. , g* D9 ?# t: i3 |2 P( P
  1702. ;;; ================ CHEN KY HIEU THEP (TP) =================  [5 ?0 U! y8 {0 Q; g( Q. O

  1703. & D* H* F6 }9 k
  1704. (defun c:tp ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen ky hieu thep ")
    7 Q4 `2 L* H. v; I. o/ c% M) `  i
  1705.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")4 a* e/ K3 X3 w4 N/ K- o$ o8 i
  1706.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    / ?7 W2 A$ [% b; n
  1707.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    + t4 b) u5 Y/ s9 y
  1708.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%c")
    9 {/ `7 `! ^6 n9 T
  1709.         (= testxt "%%C"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%c" txttxt)))! X9 x5 {/ n0 W4 C! L( W
  1710.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))# k8 F( M6 b3 f" R6 C  R
  1711.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    ! S7 _& W' l% x+ e6 [
  1712. 4 U/ F" M0 c) A
  1713. ;=========================== TAM TUONG (TAM) =================================
      ?1 _: {* [3 ?' x- D
  1714. 2 u" Y: Z5 p8 m: F
  1715. (defun c:tam(/ data_m)* \/ m  F0 B2 f9 x
  1716.             (defun import_data(/ i)(setq data_m (ssget))(if (= nil distan_m) (setq distan_m 110.0))
    $ d! y- B" Z1 D
  1717.             (princ "Distance (")(princ distan_m)(princ "):")(setq i (getreal ))(if (not (= nil i))
    6 S7 s6 p- U; W
  1718.         (setq distan_m i)))(defun process(/ ent check)(defun p_check()(setq check 0)
    . Q( ^, T. l- F! F
  1719.         (if (= "LINE" (cdr (assoc 0 ent))) (setq check 1))(princ))(defun p_d_offset; k( N: a0 n2 [8 p, `. l! _
  1720.         (/ p1 p2 p3 p4)(defun makeline(/ e2 e5)(setq la (list (cons 0 "LINE")(cons 5 (cdr  e' X% P' \- [8 W- T
  1721.         (assoc 5 ent)))(cons 8 (cdr (assoc 8 ent)))(cons 10 p3)(cons 11 p4)))(entmake la)(princ). B6 c/ t& Z9 S: A5 E& w
  1722.         )(setq p1 (cdr (assoc 10 ent)) p2 (cdr (assoc 11 ent)))(if (not (= p1 p2)) (progn (if) h3 b1 T& o: M+ v; I% _# F: L. @
  1723.         (< (abs (- (nth 0 p1) (nth 0 p2))) 0.000001) (progn (setq p3 (list (+ (nth 0 p1)# |6 s; g0 J" e0 S+ e
  1724.         distan_m) (nth 1 p1) (nth 2 p1)))(setq p4 (list (+ (nth 0 p2) distan_m)(nth 1 p2)
    ' p! ?# ~& [- x' [( m
  1725.         (nth 2 p2))) (makeline) (setq p3 (list (- (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1)))
    2 r7 b% }1 I# t5 n% M, k4 [
  1726.         (setq p4 (list (- (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2))) (makeline)))(if (<; b9 r8 ]* C* C  U/ [1 a
  1727.         (abs (- (nth 1 p1) (nth 1 p2))) 0.000001) (progn (setq p3 (list (nth 0 p1) (+ (nth 1 p1)0 E' B& p% p# C9 s. b
  1728.         distan_m) (nth 2 p1)))(setq p4 (list (nth 0 p2) (+ (nth 1 p2) distan_m) (nth 2 p2)))# y0 d( ^6 s. k* c* R
  1729.         (makeline) (setq p3 (list (nth 0 p1) (- (nth 1 p1) distan_m) (nth 2 p1))) (setq p4
    3 d$ ^' }0 [: i& R) d6 [1 i
  1730.         (list (nth 0 p2) (- (nth 1 p2) distan_m) (nth 2 p2)))(makeline)))))(princ))(if (not
    6 P1 p6 x% k% o7 n7 Y
  1731.         (= nil data_m)) (progn (setq i 0)(while (< i (sslength data_m)) (progn(setq ent (entget
    4 |& w0 ^( y2 i7 n2 \8 T2 s, P
  1732.         (ssname data_m i)))(p_check)(if (= 1 check) (p_d_offset))(setq i (+ i 1))))))(princ)). k" `/ t+ {% A5 g: E- p
  1733.           (import_data)(ai_undo_push)(process)(ai_undo_pop)(princ))
    ) U0 ]4 }! g) d( v  L
  1734. $ S# B( A0 C2 p5 H4 S& r4 }
  1735. ;============ GHI CHU PHI (T1) ================
    . @* J' S/ w0 d/ r$ T: h* w1 x
  1736. ) k1 c# q3 b( R6 k* y# k; F. c
  1737. (defun c:DuongDan ()(setq D1 (getpoint " Diem thu nhat: "))(setq D2 (getpoint "Diem thu hai: " D1))
      x. t+ R% @! S$ A3 R! b9 g& V* ]4 F
  1738.           (if (> (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (< (car D2) (car D1)) (setq D3
    # d8 @& P+ D4 F+ K3 C/ m+ Z
  1739.         (polar D2 PI 16)))(if (= (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (> (car D2)! R6 A8 k$ s) c/ r# X* L
  1740.         (car D1)) (setq D4 (polar D3 0 3.2)))(if (< (car D2)(car D1))(setq D4 (polar D3 PI 3.2)0 D; t# b( n2 q( U' J. X% D
  1741.         ))(if (= (car D2) (car D1)) (setq D4 (polar D3 0 3.2)))(if (> (car D2) (car D1))
    ' R/ C3 {7 {8 h" k1 S& a
  1742.         (setq D5 (polar D2 (/ PI 9) 3)))(if (< (car D2) (car D1)) (setq D5 (polar D3 (/ PI 9)
    0 i' y: k  R3 `% q* `# E% U
  1743.         3)))(if (= (car D2) (car D1)) (setq D5 (polar D2 (/ PI 9) 3)))(command "color" 1), ]. @/ j' |8 M! Q' Y
  1744.           (command "line" D1 D2 D3 "")(command "circle" D4 "3.5")(command "color" 7 )
    $ m2 t9 f. W4 E8 O
  1745.           (command "text" "m" D4 2.5 0 "1")(command "text" D5 2.5 0 "%%c6a150")
    ! d9 B' D7 B5 x4 `8 R+ p2 `# m5 h
  1746.           (command "ddedit" pause))
      J& X' @1 R, o# |$ B

  1747. 2 S$ r" J1 D0 F& V, _
  1748. ;;; ========================== Join (J) =================& S5 f  ^! _( [8 D

  1749. 1 a/ y- z& A/ z& A% E
  1750. (defun C:J () (Setvar "cmdecho" 0)(setq m:err *error* *error* *merrmsg*)(setq sset (ssget))" S% {! U" {6 c9 b
  1751.            (if (null sset) (exit))(setq kt (getstring "\nJoin all (Y/N) <Y> ? "))$ G$ \) y5 l/ C8 {! S& o
  1752.           (setq ssl (sslength sset))(setq temp  (entget (ssname sset 0))etype (cdr (assoc 0 temp)
    ) J1 U8 h- m+ {! _. E5 V
  1753.         ))(cond((or (= kt "Y") (= kt "y") (= kt ""))(progn (cond((= etype "POLYLINE")( |" O+ c6 \0 x, {- ~% |8 ^
  1754.         (COMMAND "PEDIT" sset "J" "all" "" ""))(if (or (= etype "LINE") (= etype "ARC"))
    & o& S/ T$ g5 E4 ]. S% W4 Z
  1755.            (COMMAND "PEDIT" sset "" "J" "all" "" "")))))((or (/= kt "Y") (/= kt "y") (/= kt ""))  _' N1 x- U, \+ K
  1756.         (progn (cond((= etype "POLYLINE")(COMMAND "PEDIT" sset "J" sset "" ""))  
    * P2 n* e+ X1 L. h$ \4 n7 ]1 N) w' I
  1757.            (if (or (= etype "LINE") (= etype "ARC"))(COMMAND "PEDIT" sset "" "J" sset "" ""))))))
    ) L' K" z8 _- U" o2 D: M
  1758.           (setq *error* m:err m:err nil)(princ))8 o# ^4 X$ H1 v& D7 P( A' R, f, f
  1759. - e6 B+ E" o/ c3 ?# f
  1760. ;=====================================================================+ {  O; K* [9 R$ O- w: q" h
  1761. ;;; DOOR.LSP 1.0, Copyright (C) 1998 by CAD Department, HUCE.
    , X- c& Q$ l! |4 I
  1762. ;=====================================================================9 `( v& L; b+ ?$ L4 @" h% k5 N$ M
  1763. ) T0 z) j* u  U% J' R& W
  1764. (defun C:D1 (/ p1 p2 p3 p4 side dis wid ang angsile old): o" j7 B/ E$ O8 _6 p
  1765. (setq old (getvar "OSMODE"))
    7 \5 Y+ S) O4 Y9 l
  1766. 4 c7 X* R- ]5 T, J, f
  1767. (setq p1 (getpoint "\nStart point:"))
    0 u( b4 D' `0 {: X+ A
  1768. (setq p2 (getpoint p1 "\nEnd point:"))  l% e9 {3 p' X0 J
  1769. (setq side (getpoint p2 "\nOpen side"))
    , [' p3 @" o- Z' v( i! t+ y' k, [1 h
  1770. ; f4 d: g# P: d0 C
  1771. (setq dis (distance p1 p2))
    ! m1 s2 A* E" s
  1772. (setq ang (angle p1 p2))
    2 `* M8 b! ~1 ]" N! z0 |/ P: S
  1773. (if (< ang (angle p1 side))
    4 V; G) V3 ^. o8 s. J+ A4 H% v
  1774.   (setq angside    (/ pi 2) )
    8 |* Q$ i2 q# {5 ?3 |
  1775.   (setq angside (- (/ pi 2)))
    ( }; O5 C  l2 u) H
  1776. )
    3 @9 c, N$ T0 r9 i, v  M
  1777. (if  (>= (- (angle p1 side) ang) pi)3 \( z2 a! E& F
  1778.   (setq angside (- (/ pi 2)))
      f, U6 V" ~  ^: I$ H9 A* `( V
  1779. ), v; }/ M# o) S( c
  1780. (if  (>= (- ANG (angle p1 side) ) pi)
    ; t8 a# K* [& m" j: [- L
  1781.   (setq angside (/ pi 2))
    4 H+ E9 V# f0 S. _* S+ U
  1782. )/ {2 |+ l5 L6 M2 Q9 B6 o# S

  1783. 0 E( j0 O4 v: o+ y$ O7 X
  1784. (setq p3 (polar p2 (+ ang angside) dis) )4 d) t7 d5 X0 |* h+ {7 ]2 h, k
  1785. (setq p4 (polar p1 (+ ang angside) dis) )! x, y0 B2 b0 I4 x! C$ i* g% K# F
  1786. (setq wid (/ dis 15))
    + h' j$ y: O7 @9 `$ W

  1787. $ f3 r& |5 p+ i  {" Q) `
  1788. (setvar "OSMODE" 0)7 y. k- H9 K( _, c+ `7 P

  1789. . r( ]6 u: @2 ]  A
  1790. (command "PLINE" p1 "A" "D" p4 p3 "L" p2
    ( E4 C/ t7 q3 B, i) F0 K- b- @' q
  1791.                   (polar p2 (+ ang pi) wid) " V7 k! c7 c9 ~: Y$ b
  1792.                   (polar p3 (+ ang pi) wid)
    1 N( E6 X  w9 ~$ P$ \  q
  1793. "")
    , t0 x5 U& {6 {7 d
  1794. 0 {6 B# E4 Z1 r& E& V
  1795. (setvar "OSMODE" old); C% L  ~  [/ O2 c) N6 f
  1796. (princ)0 X0 E3 E  J% R$ i9 g  ^
  1797. )) ~1 c; G9 x  c+ s* \

  1798. " w/ d6 J' L# i7 b3 s3 K% l: n
  1799. ;=====================================================================
    0 {! w) S2 q5 u7 S( X8 p1 C
  1800. ' h! v8 M1 m: p, g8 o1 I
  1801. (defun C:D2 (/ p1 p2 p3 p4 side dis wid ang angsile old)" x9 F* a2 s' K- ^' u
  1802. (defun cua1 (pt1 pt2)# {4 c1 n  [* h: E2 Q
  1803.   (setq p1 pt1
      u3 l" S: w# l! e& p
  1804.         p2 pt2)6 J1 g6 S. g2 m: h$ m
  1805. ) `) E, X% c- x) N; ^8 w
  1806.   (setq ang (angle p1 p2))) O2 E. i( v( Z% W& ~& T
  1807.   (if (< ang (angle p1 side))
      m2 T+ `' }' U1 I. ~( O
  1808.    (setq angside    (/ pi 2) )/ m9 N. v7 C/ }  E: o1 K0 m
  1809.    (setq angside (- (/ pi 2)))( q1 x# C; e' O, F: d: n4 B
  1810.   )
    : A% `8 e! }1 S$ j, y
  1811.   (if  (>= (- (angle p1 side) ang) pi)
    9 a" M, `- p1 w/ I" g  |
  1812.    (setq angside (- (/ pi 2))). W8 _0 l- v$ V9 N8 R
  1813.   )
    # O; ?6 `: ]" d7 k
  1814.   (if  (>= (- ANG (angle p1 side) ) pi)
    ! s  x* {5 ^; F0 }# M
  1815.    (setq angside (/ pi 2))
    ! D% M& C- I. B) I" U0 G+ ~/ T! i& o
  1816.   )) k, Y2 T/ s- P
  1817. 9 @1 @# K2 }, t/ F" }% `, E
  1818.   (setq p3 (polar p2 (+ ang angside) dis) )$ j8 O* _* k& A  r
  1819.   (setq p4 (polar p1 (+ ang angside) dis) )
    0 q. y. ]6 N- A3 f
  1820.   (setq wid (/ dis 15))
    " H- H. `2 N9 c4 s. ~) P
  1821. 5 J$ ]5 y% ?& c' {$ L- D* n# X' d
  1822.   (command "PLINE" p1 "A" "D" p4 p3 "L" p2
    $ x2 F' A/ C) G; Y' e
  1823.                    (polar p2 (+ ang pi) wid)
    ! r! {0 P9 g: ^: v2 \: O2 s
  1824.                    (polar p3 (+ ang pi) wid) 9 Y+ j0 i" D7 g7 v( m3 A
  1825.   "")1 o2 C3 L; [$ F% q" p% c
  1826. )& e+ g5 u7 j9 u8 w- e
  1827. ;=====================================================================+ D8 k7 J) x3 W% ~% f8 \
  1828. (setq old (getvar "OSMODE")) / L% d- r) h" k# T8 s1 T5 Z6 o; ~
  1829. , t4 f1 v: |& ^1 u( ?
  1830. (setq p1 (getpoint "\nStart point:"))9 n0 P7 Y5 V& X5 C, [
  1831. (setq p2 (getpoint p1 "\nEnd point:"))$ i1 ]" F* K3 f+ W6 s5 V' a
  1832. (setq side (getpoint p2 "\nOpen side")): c2 u4 s* ?5 B; g5 b! o+ \* e

  1833. ; z" {+ _! r% H) J) M$ g
  1834. (setq dis (distance p1 p2))
    6 B: V7 r( J, r- U0 b
  1835. (setq dis (/ dis 2))( A% m" v& i2 c
  1836. / y; b; ]0 u+ w: B( m4 D
  1837. (setvar "OSMODE" 0)+ U0 T7 c' U$ I/ E" H: \

  1838. 0 X6 S& b+ P' ?: Z# i* _  a
  1839. (setq p1 (polar p1 (angle p1 p2) dis))1 D7 q  c" {& O  h) S# p/ M( ~$ M
  1840. (cua1 p1 p2)  
    + }5 R0 g0 l$ S6 v

  1841. 2 K& s) J# r: y( [
  1842. (setq ang (+ ang pi)), T8 ~. R8 q+ v3 Z* a! s' {2 L4 K
  1843. (setq p2 (polar p1 ang dis))( q6 g$ }4 Q/ o$ f
  1844. ; (setq side (polar p1 () dis))/ }, W2 ^" z6 ~$ n  l
  1845. (cua1 p1 p2)  4 |* ]) L8 A7 [' t3 Q

  1846. 6 x, s% s' y* h) h' V: j
  1847. (setvar "OSMODE" old)9 b5 |6 [+ T/ i  Y* e
  1848. (princ)7 x& O, b. f* {: Q$ W, X3 Z
  1849. )( Y) S8 b5 Q2 }6 }* X. f* j. f8 I- f

  1850. % i  e" g% y7 T4 w3 S
  1851. ;=====================================================================+ E2 z! ~. ^! e7 J3 t
  1852. ;"Glue" text strings.  All adopt first's properties.
    ' [$ O9 g5 q/ @, m, w+ B2 P
  1853. ;        Author:
    % {8 j! B- m, A) m, I; W" z
  1854. ;                Henry C. Francis8 w. ^. g% y% N7 l# w
  1855. ;                425 N. Ashe St.
    : ^! x$ J  m8 G) h" d* T: _3 h
  1856. ;                Southern Pines, NC 28387
    5 t) y- b" m0 @: B
  1857. ;        http://www.pinehurst.net/~pfrancis+ y4 I$ X! c9 Z% T5 ^/ U
  1858. ;        e-mail hfrancis@pinehurst.net) [0 ?) W( y. v2 ?
  1859. ;        All rights reserved.
    2 |2 f" ^* ~- w4 Y! L) [2 \! F
  1860. (defun c:gst ( / ename ent1 ent2 old1 oldsl old10 old11 old40 old50 newstr newsl new1 new10 new11): M, B+ |' {! @) d! x
  1861. (while' W, J: j% l. e
  1862.   (not
    ( S7 O3 I% j; N3 e- G2 ^6 d
  1863.     (and2 \3 D- `/ t% w7 }/ q8 ?! d
  1864.       (setq ename1 (car(entsel "\nSelect first text string to join: ")))
    ( ^9 }9 ^2 g. }6 o& I
  1865.       (setq ent1 (entget ename1))3 k  O4 z$ x  E
  1866.       (eq(cdr(assoc 0 ent1))"TEXT")
    : l6 _) E, U% ]* P+ Q$ e- R: N0 n
  1867.     );and
    # ], Z! k& A+ E- C2 a; {6 f
  1868.   );not
    $ ~1 T% ^  Q! T/ Z
  1869. );while
    - B: C; L$ o. |) ?; {$ f) {
  1870. (setq old1 (cdr(assoc 1 ent1)))
    - I* v( e' `& s" P" E4 S1 p
  1871. (while8 `$ L9 }- i! l  ~, V
  1872.   (not
    - ?5 b4 t% c3 H4 k7 \
  1873.     (and* E3 m1 `( a" j* K) h9 b" f& L9 O
  1874.       (setq ename2 (car(entsel "\nSelect second text string to join: "))), L  X/ [( u2 L' c" N
  1875.       (setq ent2 (entget ename2)). G' U" b5 p9 s& P0 N
  1876.       (eq(cdr(assoc 0 ent2))"TEXT")
    4 t  T) u2 c4 K7 _! K9 E' b0 f
  1877.       (not(eq ename1 ename2))
    9 P: G6 N5 a- ?# L) U' P: O! f& ]& R* ^
  1878.     );and
    4 J4 U2 {5 c* @
  1879.   );not: u8 q3 s+ y, A7 q3 K
  1880. );while
    / a/ O* f! @8 _. Y2 J9 _& a
  1881. (setq old2 (cdr(assoc 1 ent2)))
    4 n$ B" V5 f$ Z9 j! |0 P4 A5 L
  1882. (setq new1 (strcat old1 " " old2)
    ) h: {2 v, j" z& X
  1883.       ent1
    / E+ r& P$ n- e8 r4 P
  1884.         (subst (cons 1 new1)' \# G& {2 K4 `4 C& Z  n6 X! u
  1885.                (assoc 1 ent1); |/ C* _& D8 b2 E7 h; e
  1886.                ent1)
    , i5 P/ M6 b3 B& B) g( [! ]
  1887. );setq( F4 n3 w+ p; i/ H9 ~, R  _
  1888. (entmod ent1)
    / L* v# p6 c1 r- ^
  1889. (entdel ename2)% o1 M$ }7 A( z" p$ d' M( l* g5 q
  1890. (princ)
    7 [' V: z) P# H) w3 O9 J; n7 [& E
  1891. );defun8 p2 \7 ~5 `, \

  1892. $ ?9 s( _/ c5 \" b" ~
  1893. ;=====================================================================8 t1 v/ i% y" G5 Z/ z
  1894. * [. o" G$ `) B  s
  1895. (defun c:nt (/ g1 g2 ss1 olderr nterr l i temp e1 e2 new old dd dc)
    7 w$ n- x+ ]" U0 \

  1896. 5 Q; R  C7 k4 M, C0 w$ ~
  1897.     (defun nterr (s)% W" m9 |( [5 F* F5 V1 D9 }
  1898.         (command "_.UCS" "" "_.UNDO" "E")% i- `. b# C; u$ c
  1899.         (setvar "cmdecho" 1)
    # B/ l/ H, o) B: h  x- y
  1900.         (setvar "blipmode" 0)
    . W3 o- E7 m  \7 {8 W6 B- p
  1901.         (setq *error* olderr)( b: B: q# @9 p, O* _2 F, b
  1902.         (setq g1 nil g2 nil ss1 nil e1 nil e2 nil olderr nil 6 v$ e+ O& u6 |/ l8 Q: v
  1903.                 nterr nil temp nil i nil l nil new nil old nil dd nil dc nil)% h8 S( e/ T* y3 u0 f9 @8 S
  1904.         (princ)
    2 M7 Z3 t: b$ X* i) F. ~
  1905.     ). b9 ~8 [; ?( d3 e4 C
  1906. - o( T% F( |' w- L$ y/ B3 g  B
  1907.     (defun tim_in (dt / p01 p02 ktra)
    4 x% R) P0 h- E* I
  1908.         (setq p01 (cdr (assoc 10 (entget dt))))
    - Y/ V* ?6 a! b3 S. S: \/ m+ G; J/ z
  1909.         (setq p02 (cdr (assoc 11 (entget dt))))
    / ]* n1 ^8 }+ f0 m" q# g
  1910.         (setq ktra T)
    ! c3 \5 H( {" a: h; r2 Z0 j
  1911.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2))
    8 D9 k8 f* Z. b# p9 [/ D6 |# V
  1912.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    2 `' X- {/ t, |+ J1 H8 f0 I
  1913.             (setq ktra nil)
    % b. z( m% \1 t: |1 i: J! N2 H
  1914.         )
    " {. m/ c$ n& [  K( ]
  1915.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2)) ( S1 B! l$ a: M8 {, f
  1916.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))% r3 x6 }3 A# A+ D9 T# X
  1917.             (setq ktra nil)" N/ l# D/ P* d) a6 A
  1918.         )
    & N( }9 Y5 @3 _5 ^4 R
  1919.         ktra' q/ `0 c9 U% G/ C, O
  1920.    )
    ( O- R9 q+ P  s$ @
  1921. 4 K9 h9 l* H6 \; O- E3 t
  1922.    (defun timdt (dt1 dt2 / p01 p02)  Z+ V. ~. \8 ?! u. t
  1923.         (setq p01 (cdr (assoc 10 (entget dt2))))
      R; r/ W/ r9 Q$ x
  1924.         (setq p02 (cdr (assoc 11 (entget dt2))))5 T# [+ e- B! k" |; u! @
  1925.         (setvar "ucsicon" 0)/ \& C0 @6 [5 `9 [9 w' X
  1926.         (command "_.UCS" "E" dt1)
    3 q: N5 j) o# y- Q" q: s) O
  1927.         (setq p01 (trans p01 0 1))6 Y1 o5 U5 Q. p) ^
  1928.         (setq p02 (trans p02 0 1))
    % z; _4 h; _; G  [9 J6 m) s
  1929.         (command "_.UCS" "")% s# Z  `/ {# D
  1930.         (setvar "ucsicon" 1)
    . c% j& ?  O9 l  H% s
  1931.         (if (and (equal (cadr p01) 0 0.001) (equal (cadr p02) 0 0.001))) L) Q" E- k- t! \2 f$ A
  1932.                 T
    9 x& r) T2 m7 A- ?
  1933.                 nil. M& @, f; {: u+ O0 `
  1934.         )7 G. G; E" |2 N4 Q1 V
  1935.    )- A2 t  ]2 B2 i

  1936. : [2 o- Q; D9 E0 p2 c  D9 M! O
  1937.     (defun tim_out (dt / p01 p02 kt)
    ( T! F$ K3 I4 i' Z
  1938.         (setq p01 (cdr (assoc 10 (entget dt))))
    # T: V0 m' c) N4 h' A# Z; ^
  1939.         (setq p02 (cdr (assoc 11 (entget dt))))
    : c: U! B- J. @. R& _
  1940.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2)) ' j/ K, i1 V2 s3 ~$ l4 P
  1941.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    0 U# M' B4 w  c8 V( m2 I) ], f( z
  1942.             (setq kt p02)6 e" Z2 R4 T4 c( @  E# u7 b
  1943.         )
    ) s1 K+ F! [. n0 }* U
  1944.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2))
    2 H8 }+ ^$ P# l/ r
  1945.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))
    ! s1 S+ i3 T8 z( L; k! ]
  1946.             (setq kt p01)9 d9 N) h. w% f) d# y; r# S
  1947.         )
    6 a* @$ h2 j: C% ]' R
  1948.         kt        
    0 F. [% C/ K: ~8 i2 z
  1949.    )
    / O6 e8 z% z4 Q
  1950. 1 J, S* v, K4 n; y8 B3 \, J0 T" s
  1951.     (setvar "cmdecho" 0)9 j: U) K/ N8 y, o0 ^
  1952.     (setq olderr *error* *error* nterr). {: `9 ^9 J" V- S( ]
  1953.     (command "_.UNDO" "G" "_.UCS" "")
    " Y8 i" L9 y. r
  1954.     (while (null ss1)
    8 x; H4 E& q( M* f
  1955.         (princ "\nChon tuong muon noi...")- F* O) t- {/ z! t  q1 G! ~
  1956.         (initget 1)+ j$ `7 A6 \4 h6 m, j
  1957.         (setq g1 (getpoint "\n>Goc thu nhat:"))
    ' h6 E: A1 d# F0 C/ T  D
  1958.         (initget (+ 1 32))
    $ \0 T! B9 y. A* k- m3 k  g
  1959.         (setq g2 (getcorner g1 "\n>Goc thu hai:"))- U5 q1 j" d1 T' P0 ]
  1960.         (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    8 g3 W! N& I6 i
  1961.         (if (null ss1) (princ "\nKhong tim thay doi tuong!"))( L9 C2 {5 C" ~6 G# J% o
  1962.     )5 i! @2 \* e; Q
  1963.     * C& {& @, b( n# g% s8 U
  1964.     (setq temp (list (min (car g1) (car g2)) (min (cadr g1) (cadr g2))), {6 D" F$ T# g8 B" @& k
  1965.           g2 (list (max (car g1) (car g2)) (max (cadr g1) (cadr g2)))7 J/ Z4 x: @$ `2 `6 R
  1966.           g1 temp)
    " G1 A$ P% a' _$ m1 t9 P
  1967.    (setq ss1 (ssget "w" g1 g2)). K* X4 h; k( o: D; Y8 ?1 D/ p
  1968.    (if ss1 (command "_.ERASE" ss1 ""))
    # M) B+ Z9 l# {
  1969.    (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    * j( x9 Q- ~8 }0 F8 J! f* S" l1 \
  1970.    
    ! J$ A# A  |- R4 y7 @
  1971.     (setvar "blipmode" 0); j& z1 m- n( B! J
  1972.         (setq i 0 l (sslength ss1))
    3 T3 |' s& N2 k# H' c
  1973.         (while (< i l)
    2 B; O6 L; N3 U; `( v
  1974.            (if (tim_in (ssname ss1 i)), d- N+ J: U% f3 }" S
  1975.               (progn
    / {- G# M7 z: A6 |2 J' F
  1976.                     (ssdel (ssname ss1 i) ss1)
    $ }/ H  @. k* V
  1977.                     (setq i 0 l (1- l))1 U. _* j4 X; M7 y1 p
  1978.               )        
    ( f( c% l4 |( L0 f5 q, N
  1979.               (setq i (1+ i))8 ]9 ]1 ?! B( T! r
  1980.            )  E# G7 {  F8 k4 V
  1981.         )
    : h5 U) U3 C% S: b8 n/ t
  1982.         (setq l (sslength ss1))
    / Z1 M' l% ~7 o% X4 v4 R
  1983.       (while (>= l 2)$ x" z1 {9 D8 ]; B* n2 L% M$ I
  1984.         (setq e1 (ssname ss1 0))" u0 t3 @9 ]# N! K
  1985.         (ssdel e1 ss1)/ Z4 A1 y$ [2 B- u
  1986.         (setq e2 nil i 0 l (sslength ss1))
    * x) t$ A3 b/ l7 T7 U/ p- j
  1987.             (while (< i l)
    ) D/ s; U' w" W2 j
  1988.                 (if (timdt e1 (ssname ss1 i))4 m  C* X$ b7 g) r
  1989.                     (progn
    , S8 F; h$ Q) W, {# ]
  1990.                         (setq e2 (ssname ss1 i))5 P2 |" v( ?% _0 v
  1991.                              (setq dd (tim_out e1))7 X# I/ x8 p- y
  1992.                              (setq dc (tim_out e2))3 ]$ |" b" O6 A# {9 E- m
  1993.                     )
      i3 _1 ~, ^) K9 E) x
  1994.                 )( [! b' C: ?1 u4 |
  1995.                 (setq i (1+ i))% C- ?+ j+ a& Z, @
  1996.             )
    8 `3 W5 o: Q1 l/ p. ^' q
  1997.             (if e2 (progn
    # f8 A: r7 s5 F0 D/ ~. X+ E
  1998.                         (ssdel e2 ss1)                        
    ! _: m% S* W% z- R5 _
  1999.                         (command "_.ERASE" e2 "")# ~( H2 ^; G! e0 ]8 k9 A" X/ ^
  2000.                         (setq temp (entget e1))! f5 t. w/ |8 D+ R1 ^' A
  2001.                         (setq old (assoc 10 temp))
    % r6 X) w$ A! l+ x+ h
  2002.                         (setq new (cons 10 dd))  [7 Q/ ]8 D7 a1 |
  2003.                         (setq temp (subst new old temp))$ j6 o7 a, k& W. ~
  2004.                         (entmod temp)  ~9 }( h. \) e
  2005.                         (setq temp (entget e1))
    . M* @& z" O: _3 p
  2006.                         (setq old (assoc 11 temp)): n% ^5 Y* p/ Q% _+ J
  2007.                         (setq new (cons 11 dc))7 x0 b; R& P6 R  b. Q' J/ h" e! T
  2008.                         (setq temp (subst new old temp))' T) m$ U. y! F
  2009.                         (entmod temp)
    9 A. H+ b3 j# C( c) T$ [/ L
  2010.                         (redraw e1)
    5 a, W/ s3 c3 I2 S7 n5 q
  2011.                         (setq l (sslength ss1))$ b. S0 y( k& W% A5 V! J
  2012.                    ), v8 Z3 j4 K! l7 J& O. c* R
  2013.             )
    5 \3 p8 f2 E- j
  2014.         )2 a( T% q1 a% {7 s  \1 C
  2015. - \0 ~1 H) s- ~; V4 c
  2016.         (command "_.UCS" "" "_.UNDO" "E")( m! |9 B9 A, ?0 v1 m
  2017.         (setvar "cmdecho" 1)
    ( ^5 v/ E+ p4 B0 J; [+ `
  2018.         (setvar "blipmode" 0)
    ; l& Q" y% \/ q) c' R7 C1 c
  2019.         (setq *error* olderr)
    1 l. Y, o. Q' T7 D0 B
  2020.         (princ)
    5 t! i0 h- N7 }/ S7 o8 j, f
  2021. )
    6 P2 C( l, d, Z
  2022. ;*********************************************************************/ q" M6 K* k5 L/ w% Y( K1 {
  2023. (defun ketthuc ()$ M/ N& d, i) ?1 \3 U
  2024.         (setvar        "cmdecho"        luuecho)
    ) \7 Z0 h2 q" ]1 W
  2025.         (setq *error*        luu
    ! o3 C: B. y  _. m6 o1 R0 E
  2026.                 luu                nil        
    & p* y& L0 T; s' b# @7 E
  2027.                 luuecho        nil' s. y# I, a* S, V
  2028.         );setq
    ( V: ~' A7 `$ _# x
  2029.         (princ); @5 `9 @4 \1 T$ j
  2030. )               
    : n% B) n8 Y9 w3 ^) w
  2031. ;*********************************************************************
    2 b) r3 a" W/ ^9 P" k2 j6 H
  2032. (defun modau ()/ Z$ p; l) m# b# |, G) h! y  D! {
  2033. (setq         luu *error
    # D8 y6 Y) b9 f) v
  2034.                 luuecho        (getvar        "cmdecho")
    7 U8 e. U' T: L+ A' i; T
  2035.                 *error        (ketthuc)
    + R6 M) V6 P7 R( Q1 D: c
  2036. )1 w1 t2 K, v* _- p- v8 P1 _
  2037. )
    / _1 r8 C# O1 c  v3 Z: ^/ w
  2038. ;*********************************************************************
    . \* v0 p) f2 c* ]
  2039. (defun xulytext (text / kytu ma sokt luusokt lui )4 S3 m; S& Y4 a( W7 W0 ]1 c3 W. O
  2040. (setq         kytu        (substr text (strlen text))
    ; w4 Y7 i, J, n9 B
  2041.                 ma        (ascii kytu)
    / n- k9 k% l' a& {5 J  q
  2042.                 sokt        (read kytu)
    4 v6 R4 |( _) {8 |
  2043.                 lui        1
    ( @" u3 `7 ~1 k1 d) v/ Z3 ~
  2044. )
    ! O- n4 E) Z! E# d3 T0 f
  2045. (if (numberp sokt)0 I8 @& M* T& Y0 [8 `
  2046.                 (progn
    8 _" x" V) t8 y/ I
  2047.                         (setq luusokt        (1+ sokt))
    $ ]! c9 z+ ?$ ~3 x* E( [/ U5 @
  2048.                         (if (and         (numberp sokt) % T$ T1 ^- Y7 a. w0 N7 L* u( V
  2049.                                         (> (strlen text) 1)3 Y) g5 U6 M/ c; s" Z2 Z
  2050.                             )        ' L9 |7 o+ Y& d' A; y) Y
  2051.                            (progn  v  v, f8 k$ d& O" Q8 T: @) m2 H" `
  2052.                                 (setq         kytu        (substr text (1- (strlen text)))
    0 r  n2 M3 {$ o! l
  2053.                                                 sokt        (read kytu) / h: R; l3 \8 C3 O& X5 A7 H6 A/ R
  2054.                                                                                 )4 R9 w0 C- V; V
  2055.                                 (if         (numberp sokt) 0 f4 s- z; f+ s+ L5 E
  2056.                                         (setq luusokt (1+        sokt)
    * _! Y) R" f# H/ Y
  2057.                                                         lui         2( z( {" Z/ \! X
  2058. 5 w  j& g# i/ e: l, N- W- c# W
  2059.                                                 )
    ' D% q) e/ X; l
  2060.                                 )
    * I, {% C2 x. l. X2 z4 [# \% R  U
  2061.                             );progn        " S$ Z0 k2 @( @6 P+ r& W
  2062.                         )
    9 r/ e5 j( t7 H6 Y8 s
  2063.                         (if (= luusokt        100)        (setq         luusokt        0))
    % B6 H0 _/ b3 ^. b5 Z8 E0 v$ O! l
  2064.                         (setq         kytu                (rtos luusokt 2 0)0 p& d% \' a7 K% Q- [+ T
  2065.                                         , Y4 o' C  S1 k
  2066.                                         text        (strcat        (substr text 1 (- (strlen text) lui))  kytu). v5 C# e' S% N* y
  2067.                         )  ^. t& s4 P8 D) T
  2068.                 );progn                         0 M% Y/ `# [. g  ?
  2069.                 (if   (or         (= kytu "z")
    " V3 p1 {4 j$ {1 W% `0 q
  2070.                                 (= kytu "Z")9 I5 w9 x! Z; d3 k4 g
  2071.                         )
    . y( ?0 f8 p0 ~8 \1 N
  2072.                         (setq         text                (strcat         text        "0")" N0 g  M* I' x0 ^. ^
  2073.                                 textxl                "0"
    6 S$ o, M! S: k4 U1 V$ j9 k
  2074.                         )8 Q/ X, d& m* m' I3 E* z( a
  2075.                         (setq                ma        (1+        ma)
    ' q  R: e8 g) N& o. Y
  2076.                                         text        (strcat        (substr text 1 (1- (strlen text)))  (chr ma)). R  k( R( t: c
  2077.                         )
    * H) \9 k! ]- |
  2078.                 );if
    , b# P  p: L% f
  2079. );if
    - d5 Y. x5 W1 N
  2080. )3 F. }1 p4 T; p# r9 l* d! v
  2081. ;*********************************************************************3 j# i1 w2 ^2 L5 `7 S
  2082. (defun doitext(tendoituong / chuoi doituong thoat tam dsach kieu text vitri10 vitri11 dem canle). a" g  ?  U% q& z0 J
  2083. ;Neu doi tuong la text thi tiep tuc* M- f* Q/ D$ ?( k  T9 X0 Y$ ?$ L
  2084. (setq         doituong         (entget  tendoituong)
    . u1 i& j6 Y# k& S
  2085.         kieu                (cdr (assoc         0        doituong))% H# p5 v0 [+ Z( [) K
  2086.         canle                (cdr (assoc         72        doituong))
    9 v8 i- N- [+ [9 S7 \4 k
  2087. )        
    , Y4 n# r! i" e2 t7 Q( ?( c0 R. F
  2088. (if (or (= kieu                "TEXT")
    0 r9 |  }. E: Z
  2089.         (= kieu         "MTEXT")          I1 ~3 t! {2 B3 m( L
  2090.     )         ( w, P+ k1 ^# j0 q& R6 Y
  2091.         (progn
    & |; Z9 q  Q9 ^4 W0 D9 O
  2092.                 (setq        textxl        (xulytext textxl)$ v( t- v7 N4 ]& T9 J7 H
  2093.                         text        (cons 1 textxl)
      l3 m5 w/ C3 C% ?# N
  2094.                         vitri10         (cdr (assoc 10 doituong))* V5 t9 x) U$ n/ x( j4 c* @
  2095.                         vitri10         (list (+ (car vitri10) (car vitrilech)) (+ (nth 1 vitri10) (nth 1 vitrilech)))
    3 [' A# E7 \& H5 t) S4 n* [
  2096.                         vitri10                (cons 10 vitri10)
    - T5 [1 p: l/ E8 n0 {( _
  2097.                         vitri11         (cdr (assoc 11 doituong))
    ' ~1 R, e- q8 w. p8 ], m7 b; ^
  2098.                         vitri11         (list (+ (car vitri11) (car vitrilech)) (+ (nth 1 vitri11) (nth 1 vitrilech)))
      G3 A: c. @1 r& u
  2099.                         vitri11                (cons 11 vitri11)
    4 O5 u; Y% r& s* L5 d' B# X
  2100.                         dem        0
    - }& o- I3 @& u: y8 j+ M
  2101.                         dsach        nil
    : ~! h7 h) |  v
  2102.                 )+ d2 z- k# z" e! o$ ~: T- K
  2103.                 (foreach tam         doituong5 E5 @, h& O& I
  2104.                         (cond
    # i, a5 L* z! z) m; E' P
  2105.                                 ((= (car tam)        1)        (setq dsach         (append dsach (list text))))
    $ T. o) _* k) e; r
  2106.                                 ((= (car tam)        10)        (setq dsach         (append dsach (list vitri10))))
    0 Z1 Z( ?! n% o1 r  K/ h0 u7 R  }; q
  2107.                                 ((= (car tam)        11)        (setq dsach         (append dsach (list vitri11))))2 z: R) G# |1 R( x! D  X
  2108.                                 ((setq dsach         (append dsach (list tam))))
    / s8 O. [' `. s! h" x# c5 q/ w) _
  2109.                         )
    3 C& J5 I2 a1 K
  2110.                 )
    , ]: W$ x7 w. D# g6 {
  2111.                 (entmake dsach)
    & m: x4 B: W/ l: V' o
  2112.         );progn
    ' a( m! p: P) m. n
  2113. );if) M5 B& G: z6 B7 `4 p
  2114.         );  H  S) J" Z( v7 \; \' g, s
  2115. ;*********************************************************************
    9 z5 d# v& Q' e- @9 b+ s4 \  m+ P
  2116. ;sao doi tuong cu sang vi tri moi9 m) J4 s: B& \5 n- K5 o

  2117. : \. p, i7 z  Z# i% M
  2118. (defun copy_dt (tendoituong )2 W4 M6 M$ ~1 z  c% O) x1 i- ]
  2119. (command "copy" tendoituong "" goc toi )
    2 z4 V6 j& p! e6 r  y
  2120. );defun+ u3 C. E7 s1 T6 \! J& G# n1 q$ i8 i
  2121. 6 l# N+ Q' Z: C8 ^, y- r5 p* T
  2122. ;*********************************************************************
    ) y/ E7 X' a+ @

  2123. 6 x; Z# \* P  h0 i9 p( ?7 l; K
  2124. (defun c:ct ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)
    # R2 o! I: I- M) C" a; ]4 J
  2125. ; Khoi dau cua chuong trinh0 ]1 P4 i  C. F5 M
  2126. (princ "\nCopy Inteligent...\n")$ q7 [/ Q' K& B
  2127. (setq         luuecho        (getvar        "cmdecho")& D! C5 r) H  y
  2128.         luu        *error*) k# n8 Y) i" \
  2129.         *error*        ketthuc8 O5 C% s" q9 n! Z# U
  2130.         cumdt         (ssget)/ Y. w$ F0 G: c* E
  2131.         dodai         (sslength cumdt)  J5 j, f4 L8 L: P2 X- _' S
  2132.         goc                (getpoint "\nSelect base point:")6 j3 _. z( A6 z3 g4 M/ [0 n
  2133.         thoat                nil; W; M$ {; X+ Z, _6 G
  2134.         dem                0' P( Q' f; \/ G# p
  2135.         textxl                nil
    0 [, g  M: s0 ]+ T! _  Q! g  T: D
  2136. );
    . p, F/ l" n8 S
  2137. (setvar "cmdecho" 0)
    + l* M8 `/ E; z* \0 d9 ~
  2138. ; Loc ra duoc ong text de xu ly$ U1 B3 A1 `5 C9 g+ r0 C
  2139. (while        (and         (= thoat        nil)* N/ Y3 T! A% i( P6 p+ s" Y
  2140.                 (< dem        dodai)
    # R- E1 }; U: h' f* t" J( F0 i
  2141.         )
    5 \0 g/ R, g  P9 r
  2142.         (setq         ten        (ssname cumdt dem)
    ! n' e; B7 ?$ Z% d0 n7 _+ ]
  2143.                 dem        (1+         dem)
    8 q, w! K9 @8 w; N: a; c2 a
  2144.                 doituong (entget ten)
    ; t' S" p/ u3 U! Q$ e2 J
  2145.                 kieu         (cdr (assoc         0        doituong))                        & S' l& U' W+ p+ S5 V; e
  2146.         )
    ; T' a# E6 ]7 X/ ~1 b! o
  2147.         
    # l1 _+ S9 H; ]2 D+ g5 m5 e( H$ z
  2148.         (if (or (= kieu                "TEXT")
    & F( T3 T* n+ W* p; ?0 C
  2149.                 (= kieu         "MTEXT")        ) R/ f7 k9 [7 `
  2150.                 )3 P6 N, {3 m# [3 }! P1 l) x
  2151.                 (setq         thoat        T
    6 x; W5 C9 l  v/ m( ~$ j
  2152.                         textxl         (cdr (assoc 1 doituong))         
    & j1 s! k: h9 o, o4 p1 c! `! A/ C
  2153.                 )$ V( G( ^! ]' s- H7 I
  2154.         )
    9 V* w! F- w( g2 y: K3 Y- M4 j
  2155. );, [# x, ?4 g3 k* i+ [4 E
  2156. (while T
    3 E5 r6 d2 f" H* V' {
  2157. (setq        toi                (getpoint "\nSelect next point: " goc)
    $ Q; t& I- @* q( Z: P" \/ w4 w5 w
  2158.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc))): x7 J! l5 P5 h! Z
  2159.         dem                06 Q7 j9 K# s7 n
  2160. )
    ( F8 g9 `% }& P2 q- M7 U- F! N
  2161. (while        (< dem dodai)
    5 Q- `& h4 ^2 P  v/ m8 C$ C* [: n
  2162.         (setq         ten        (ssname cumdt dem), D% @8 N* V  M9 k
  2163.                 dem        (1+         dem)& Y  e7 h0 |8 B1 D; A: }
  2164.                 doituong (entget ten); J- g" I( j8 B( W% J
  2165.                 kieu         (cdr (assoc         0        doituong))                        7 U) E5 Z. i6 j5 w' Q/ b8 l1 F
  2166.         )
    / T- g9 I+ u& Y* N
  2167. 1 D6 N- I) T7 T) V; l
  2168.         (if (or (= kieu                "TEXT")" D3 N) @! F' o/ Z6 T" x# f
  2169.                 (= kieu         "MTEXT")        
    ' P* W3 v8 {) r  @' a7 R
  2170.                 )
    ( _2 t% @4 z& G, x: X$ e# N
  2171.                 (doitext        ten)* j% t7 y8 C- B/ x1 }' C& p
  2172.                 (copy_dt        ten)
    - |. B5 J8 `) h1 \, z5 j
  2173. 6 Y* m. i( {: V9 ^7 w0 w' @4 u
  2174.         );if; p* W$ Q+ F6 z9 |; Z
  2175. )" A) Z# @4 I0 H8 [" O
  2176. );while
    " R1 I3 w- ]% F" }1 i
  2177. (ketthuc)
      d7 a6 j2 o' m; `" @9 B
  2178. );defun  @3 V1 |% P" k; @8 J( |8 G
  2179. (princ "Type \"DG\" to start")
    " d! _" z& ]3 P6 ], g, F( l" G
  2180. ;Note: bien toan cuc: textxl vitrilech& y' z, w% k9 d% I

  2181. 5 t% t1 [% d% E$ g; e! J
  2182. ;=====================================================================2 v+ X% @; v5 \; d( d$ `, F4 A
  2183. ;;; PLJOINFUZZ.LSP
    % ?$ K0 i$ i( x; }& ]4 u
  2184. ;;; Joins lines, arcs and polylines using a fuzz distance7 s0 K% ?  x& V* q2 [& @/ |% ~* _
  2185. ;;; If only one object is selected it tries to join to all objects that are possible
    . w9 R) E0 W) S+ U5 I/ @
  2186. ;;; By Jimmy Bergmark1 a& N7 _3 v# g* Z
  2187. ;;; Copyright (C) 2003-2004 JTB World, All Rights Reserved
    6 Z* D( C$ t& P% l4 b8 W# o
  2188. ;;; Website: www.jtbworld.com1 Y2 Q( L" {+ W% X  n, a" T. q2 D
  2189. ;;; E-mail: info@jtbworld.com3 p- e% y  r. L7 E9 u6 n/ [
  2190. ;;; Tested on AutoCAD 2002,2004 and 2005; T/ y/ X5 I- N3 d
  2191. ;;; Latest revision made 2004-11-11+ `. i/ T3 E& s% ~# {
  2192. ;;; Minor code cosmetic change made 2004-11-13
    1 \# L! p" X1 c9 V1 ~9 r2 g
  2193. ;;; Bug corrected 2004-12-23( g# j) p  _' A: l. S5 g3 F& c

  2194. 7 V0 `  Z- S# s8 t/ X! o
  2195. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf0 |6 ~/ x7 q- G1 p
  2196. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
    * e! n- u* Z/ D* @
  2197.   (setq oldcmdecho (getvar "cmdecho"))7 K$ y( I# L. a; _' b, \
  2198.   (setq oldpeditaccept (getvar "PEDITACCEPT"))" F/ l5 y% f1 ^
  2199.   (setvar "cmdecho" 0)* \/ ~. n. _; ~+ n% e% A
  2200.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
    1 ]$ E) [: G" _. S
  2201.   (if A2k4 (setvar "PEDITACCEPT" 0))% n, G( V' b0 g+ V0 @$ X
  2202.   (setq        okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))0 H* K' _* ]" Q1 i
  2203.   (princ "\nSelect object to join: "), e5 [: N- x- `; R2 }2 j0 f4 v
  2204.   (setq ss1 (ssget okObjects))
    9 d4 P& Z. M& L3 J! L  n
  2205.   (setq fuzz (getdist "\nFuzz distance <0>: "))
    + u0 U3 K! k( K+ f2 w# F: \/ M
  2206.   (if (= fuzz nil) (setq fuzz 0))6 l7 {5 j2 i, |- W2 d* I
  2207.   (if (/= ss1 nil)
    0 C! b+ [- X) [; j( @& K  H
  2208.       (progn- z# {& r% e' X; d! y5 E) c& P
  2209.         (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
    , X9 M  R, q7 l# _8 T2 j  f
  2210.         (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
    2 P  F/ q) N4 l% b9 Y
  2211.         (if (member objType '("LINE" "ARC"))( _2 {$ Q+ b1 }/ K( B0 k" H" P
  2212.           (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")) Q- E6 V3 q; ^# K/ D/ x# `1 Z
  2213.           (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
    4 i- G) p9 L' S! n8 t& H4 ^
  2214.         )1 A0 @) W7 Z3 @  H4 A6 m
  2215.       )7 S/ @# t2 L+ |* W" Y' M) z
  2216.   )6 e% x% }, @3 V( M5 C
  2217.   (setvar "cmdecho" oldcmdecho)3 F. i& j5 p- Z" V8 G% E9 ~( q
  2218.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
    + S  B" G# s9 j- p1 F  _
  2219.   (princ)$ @$ O) R. o( d0 |: g
  2220. )
      {7 x( R  @  S6 ]. |

  2221. 3 z* B9 [9 O& m$ a! _' d& D: P, I
  2222. ;===========================VE CAO TRINH===========================
    & W% u6 b  z/ F. i* G% v
  2223. ; R, e: x8 \- A; y' Y6 y  @( O
  2224. (DEFUN C:Cotcao (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL4 ~' l1 `8 q* M2 B3 W& G, }. d
  2225.                 CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)
    4 }2 ]% ~8 e8 ]' q
  2226. (SETQ OLDERR *error*- R  p  q! W. ]0 x+ \/ }3 V1 L
  2227.       *error* loisb)4 A7 i. g4 P& M. y8 J7 w
  2228. (command "layer" "m" "dim" "c" "" """")
    ( Q: z- B5 M. v: T/ ^
  2229. (SETQ CMD (GETVAR "CMDECHO"))
    2 w, \# q5 `" b8 D' H
  2230. (SETQ NBC (GETVAR "CLAYER"))
    ' g4 T$ J9 f. b2 R/ r( I
  2231. (SETQ OSM (GETVAR "OSMODE"))
    7 Y1 y' M$ I, w( h$ M) Q. o
  2232. (SETVAR "CMDECHO" 0)
    2 s$ z4 O0 P8 B- e
  2233. (SETQ PT1 (GETPOINT "\nDiem cao trinh:"))) }  x8 g# |2 X; u- ]( F
  2234. (SETQ TX (GETSTRING "\nCao trinh:"))
    1 u" n8 T4 V0 D5 R. j" P) Q5 Z
  2235. (SETQ FCH (SUBSTR TX 1 1))
      A; A8 j5 d- `
  2236. (IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))' E; H3 D, |! M* s4 }2 o; Z
  2237. (SETQ CRST (GETVAR "TEXTSTYLE"))5 b) N3 ^2 k+ h  T; v
  2238. (SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
    7 }. S9 ?4 z9 U" z& ^! e
  2239. (SETQ TSIZE (GETVAR "TEXTSIZE"))
    ( t/ P3 \6 D4 M9 s8 l8 W9 S
  2240. (SETQ STR (RTOS TSIZE 2))5 |- v6 I: N' p
  2241. (SETQ PRMT (STRCAT "\nText height <" STR ">:"))
    ( C$ |' E7 ^* v6 e5 m6 z# o  p
  2242. (IF (= RSIZE 0)3 S" \( g* I. k6 X6 ?
  2243.   (PROGN/ [6 C5 `$ V! T7 J1 V& i1 V
  2244.         (INITGET 4)3 ]. G7 e$ l! y! C" [# T* O
  2245.         (SETQ TSIZE (GETREAL PRMT))
    8 m) f$ p' o$ G+ J6 ]
  2246.         (IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))& s- c" A0 _& t, d5 u( {6 w3 a
  2247.                           (SETVAR "TEXTSIZE" TSIZE))! z6 L7 E+ U) T
  2248.   )
    , n; b7 y6 _( Q+ N: N+ b+ w* i' @9 V0 V
  2249. )
    ' ^) L7 M4 }% M+ a4 H
  2250. (PRINC): N. V. G' a1 m% U1 |. v
  2251. (SETQ TL (/ (GETVAR "TEXTSIZE") 2))2 t2 y: Z6 X7 D2 O
  2252. (SETVAR "OSMODE" 0)
    - U8 M6 Q( I. p6 q0 ?
  2253. (SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))
    / _" U' a! y% G1 ^- j4 O! n  h
  2254. (SETQ NPI (/ PI 2))& q, f& f( R4 q4 y
  2255. (SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
    5 j; X; _- e9 u% F
  2256. (SETQ PT2 (POLAR PT4 PI (* 2 TL)))  w  P, h$ T! C/ [8 q. T: v- L* K
  2257. (SETQ PT3 (POLAR PT4 0 (* 2 TL)))& \6 e% ^5 S. v3 m
  2258. (SETQ PT5 (POLAR PT4 NPI (* 5 TL)))
    # e- m; Q* a" i9 ?" ~+ M( a. U9 n$ Z
  2259. (SETQ PT6 (POLAR PT2 NPI  TL))  H4 K! B5 |, V! v
  2260. (SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))
    ' X5 l9 U  V% H) W& b) x
  2261. (SETQ PT8 (POLAR PT6 NPI (* 1 TL)))4 r% \: |% }& O( a0 g
  2262. (SETQ PT8 (POLAR PT8 0 (* 2.5 TL))); P6 M# Z$ w0 W2 l1 b# e6 c
  2263. (SETQ PT9 (POLAR PT1 pi (* 2 TL)))
    - j7 L6 q6 y5 i) _4 z
  2264. (SETQ PT10 (POLAR PT1 0 (* 2 TL)))
    / o) L! o* g  J
  2265. (COMMAND "COLOR" "7" "")
    5 _2 t. ~1 S; n9 J. }  O: r
  2266. (COMMAND "STYLE" "COTES"  "Verdana" "" "" "" "" "")- J2 g! f+ y$ b. a' v
  2267. (IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))
    2 L5 }1 K. Q( M! T8 ^: _2 R3 U
  2268. (COMMAND "COLOR" "BYLAYER" "")
    % |# d! G) J, Z2 e" k4 b' c
  2269. (COMMAND "SOLID" PT1 PT2 PT4 "" "" "pLINE"  PT1 pt3 pt2  "")$ M  j  k$ ^) h& G( q' U
  2270. (COMMAND "COLOR" "BYLAYER" ""): ?* [# h+ U1 W' O2 w6 J
  2271. (COMMAND "pLINE" PT1 PT5 "" "pLINE" PT6 PT7 "" "pLINE" pt9 pt10"")
    , j2 S. q4 \7 e: t$ y/ k& ]& D) D$ I4 V
  2272. (SETVAR "CLAYER" "0")7 }; _$ @) v  u3 U) j: Z
  2273. (command "ddedit" pause)
    $ k2 T" |) z0 N" W) l1 X: E/ c
  2274. (COMMAND "COLOR" "BYLAYER" ""). e+ n1 P6 Z- f. ?0 i
  2275. (SETVAR "CMDECHO" CMD)! e0 P# v; }: _) o
  2276. (SETVAR "CLAYER" NBC)
    ; X8 y. w! y3 d
  2277. (SETVAR "OSMODE" OSM)
    # R% K* \3 P, G
  2278. (PRINC)
    4 \4 _6 A% a+ B: E
  2279. )- U- i- b! m& [9 t
  2280. 9 _, @& n, I4 r) k4 T; ?" x4 Q
  2281. ;;; =========================== VE NET CAT CHEO (GC) =============================
    4 G- U% |" F1 z. V3 n( G
  2282. 9 v& f6 P& n' A% I2 _% r
  2283. (Defun c:G1(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang)
    " V, }2 f& V: C0 b/ f" m
  2284.         (setq x (getvar "osmode"))( z/ i" d7 ~2 X4 e
  2285.         (setq p1 (getpoint "First point : ")
    . L$ x, g0 X. p  K/ X- l
  2286.               p2 (getpoint p1 "Second point : "))% o. |2 h5 T/ r6 t1 a; R) `
  2287.         (setq l (distance p1 p2))
    2 P1 F( g) G! S5 X- a! [$ s  y
  2288.         (setq p11 (polar p1 (angle p2 p1) (/ l 5))
    7 W6 R: Q7 k# P! ]  p, f7 w
  2289.               p12 (polar p2 (angle p1 p2) (/ l 5)))  f  o, C7 x- U1 z7 ]) g, Q+ ~% {
  2290.         (setq ang (angle p1 p2))& u' V1 O: _6 h! a
  2291.         (setq p3 (polar p1 ang (/ l 2.5))
    2 w5 P/ Y6 I3 R& h" p7 `! e
  2292.               p4 (polar p3 (+ (/ pi 2) ang) (/ l 5))' z) G- a% I9 ?# o+ t
  2293.               p5 (polar p3 ang (/ l 5))
    ' i$ v& w6 l: U
  2294.                 p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))' E# G7 o6 T9 Q& ^
  2295.         (setvar "osmode" 0)- z$ V7 n+ R9 _5 ]. L# P1 d9 N, K
  2296. (command "pline" p11 p3 p4 p6 p5 p12 "")
    - s1 b3 z# z% ~
  2297. (setvar "osmode" x)
    4 [+ [  z9 ]9 {$ ?, l3 \3 B
  2298. )
    . z( d; z' j* M$ E& u
  2299. ;----------------------------------------------------------------------------------
    0 y6 g7 i4 V7 c9 M. Y
  2300. (Defun C:G2 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf67 {- ^5 q- r+ W# Y# P1 v
  2301.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))4 O. L  K) V. U
  2302.    (setq ps1 (getpoint "\Chon diem thu nhat: ")): [1 B3 }# x' E& |5 Q  K
  2303.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))4 a' D0 R8 L0 [# D
  2304.    (setq sb 50.0 sh 200.0 se 20.0)
    ) s6 @; h: }2 {5 R# w
  2305.    (setq ang (angle ps1 ps2))
    ( ]$ w1 g  V+ d! W
  2306.    (setq pf1 (polar ps1 ang (- 0.0 se)))0 a0 y$ e$ Q& Z( y/ }( |
  2307.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    & t4 [( ]) ~; V9 j
  2308.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))7 Y/ p, }+ k4 g2 d% \
  2309.    (setq pf5 (polar pf2 ang sb))
    . U3 x4 L3 u2 n8 e; a
  2310.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))' V; S% u/ |, J( Z0 a, l3 G
  2311.    (setq pf6 (polar ps2 ang se))
    , D: ]: O( P- X- P1 V# [
  2312.    (setvar "OSMODE" 0)
    # V8 N* f  \7 N! z& i
  2313.    (setvar "BLIPMODE" 0)
    3 T2 O7 c" d( Q- D. f, c+ p6 N
  2314.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    5 A0 n  N; }2 S
  2315.    (setvar "OSMODE" 703)' W! H3 x, \; p, Z1 i
  2316.    (princ) )
    + S& k1 r6 n' N. |2 Z* F
  2317. ;----------------------------------------------------------------------------------
    6 n" R& M1 V0 ?
  2318. (Defun C:G3 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf65 O1 w2 F" ~5 Q" Q: u
  2319.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))
    $ H! o! N  {' y; Z" e8 m6 d  u; ~
  2320.    (setq ps1 (getpoint "\Chon diem thu nhat: "))4 R7 p1 v6 U; C! O& E+ ]% z% Y$ h7 j3 o8 p
  2321.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    ' Z( I& a8 |) c, Y0 y" `2 Q+ r
  2322.    (setq sb 100.0 sh 150.0 se 20.0)1 E& W3 m1 M2 q% f( ~
  2323.    (setq ang (angle ps1 ps2))
    + Z& T* W+ |9 u5 M4 i4 O
  2324.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    ; D; |% x6 @1 }7 }# U) V# ^
  2325.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    . I/ t) R0 p  y; m# Z% m4 [. e
  2326.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    % z$ C! {7 z7 G* f# W7 F, g4 ^: ]
  2327.    (setq pf5 (polar pf2 ang sb))
    & k! [  f$ \9 o5 k3 Q* E+ w
  2328.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    7 a% P! n' B$ g2 C5 _, @
  2329.    (setq pf6 (polar ps2 ang se))$ f6 f$ N* p0 S* H
  2330.    (setvar "OSMODE" 0); `) j  H+ K: d2 G
  2331.    (setvar "BLIPMODE" 0)4 j! R1 }! y9 o+ D+ R
  2332.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")/ \5 K. j  w- ?9 U
  2333.    (setvar "OSMODE" 703)
    $ e" q8 z6 W* X0 ^* R8 a& V/ w
  2334.    (princ) )
      W- G* A( ?0 a: |/ E
  2335. ;----------------------------------------------------------------------------------
    4 [- G- o: V6 M
  2336. (Defun C:G4 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
      y- j6 Q, L( [3 V4 |( W7 {& U, W
  2337.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))4 p  d$ ]  l9 R; o) r" `3 k
  2338.    (setq ps1 (getpoint "\Chon diem thu nhat: "))3 {2 {% R  ]' \% `) y. ?5 y1 |
  2339.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    $ j8 c% r* n* u$ O( w3 Y( Q3 X
  2340.    (setq sb 100.0 sh 250.0 se 20.0). v& a  \; X2 G! \  _4 \
  2341.    (setq ang (angle ps1 ps2))) ?- A( Z; z8 r0 X# r
  2342.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    ( P& o8 J* {  |# z+ C8 y& |
  2343.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    1 c) b# C5 F6 Z' n/ `* M
  2344.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0))); i- ~3 P0 L/ |# K4 @
  2345.    (setq pf5 (polar pf2 ang sb))
    ; E: j! }/ w% u
  2346.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))  T: l( t5 i9 i0 y
  2347.    (setq pf6 (polar ps2 ang se))
    , F0 W+ z7 Y% x( t8 Y
  2348.    (setvar "OSMODE" 0)
    2 {! c7 z& X) S0 G! h+ T
  2349.    (setvar "BLIPMODE" 0)# a* r; ]% ?7 _2 d$ ~
  2350.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    9 m* U* j% ^5 o3 B+ k! w; i3 ?
  2351.    (setvar "OSMODE" 703)7 o2 x  m/ s4 p- ~3 k! }
  2352.    (princ) )
    0 Y. s5 k; y, H* E) o8 r  v: M  W0 c

  2353. + Y3 j! V& f4 j! o
  2354. ;==================================================================================/ ?7 a. v+ {* h, F8 q* j
  2355. (defun c:ang (/ ent pt1 pt2 ang)- P9 q# l3 @9 a3 W6 b5 \
  2356.    (setq cmd (getvar "cmdecho"))- V, h% |9 W6 F! L  i9 i& @7 w/ w  A8 w
  2357.   (setvar "cmdecho" 1)1 S! Y$ j% e( G7 r, K
  2358.   (prompt (strcat"\nThay doi truc toa do theo duong thang chon truoc"))+ X# S) ]% t( d* A
  2359.   (setq ent (entsel "\nChon duong thang:"))8 q- c( Z/ V: t+ c
  2360.   (if ent : f9 R# r6 |- ?
  2361.    (progn( W$ N* q# t. `8 \) c: o1 k
  2362.     (setq ent (entget (car ent)))
    ' A& [: B* |7 V6 C* u) S: f
  2363.     (setq pt1 (cdr (assoc 10 ent)))' O" s  [6 I" S! {2 _2 \6 J
  2364.     (setq pt2 (cdr (assoc 11 ent)))! ?$ ^7 q9 V% b' f
  2365.     (setq ang (angle pt1 pt2)): `; a1 V; ^2 N: b# [3 U# A
  2366.     (setq ang (/ (* ang 180.0) pi))
    * z  v' l$ H; n# J4 l- ?
  2367.     (setvar "cmdecho" 0)8 o- ]  u, A- ^! A$ E
  2368.     (command "setvar" "snapang" ang)
    ; M0 _  v6 K" p' e
  2369.     (princ "\nGoc cua truc toa do moi : "); ~& x- F! b4 z
  2370.     (princ ang)/ c/ f/ t, }) F, q9 y
  2371.    )/ e: x/ P/ \. u" `5 W2 Z
  2372.   )
    4 i. A9 n; G. h# f; d6 L4 S+ `% ^. ]
  2373.   (setvar "cmdecho" cmd)- x8 u" X- c. Y+ F! h
  2374.   (princ); V( s0 N! a, U2 w+ T; n0 G6 l5 I3 k
  2375. )
    : |# `8 c2 e, R* U: s# S4 j2 a
  2376. ;==================================================================================
    + H$ H0 E9 H6 E$ D! e* T
  2377. ;==============================   KY HIEU DOI XUNG   ==============================
    5 K& ~! {4 t( P+ N9 }
  2378. ;==================================================================================
    " I$ E" I: I  g
  2379. 9 A- z. u" u+ v" [; i: ~! \
  2380. (DEFUN C:DX (/ CMD OSM OLDERR PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 PT9
    3 J  @+ K. Q2 k" y
  2381.                 SZ G45 G135 G90 G180 SS loi)
    / T7 [1 n; [5 e0 I, _: D- p0 b
  2382. (defun loi (s)0 ~  F" c; E5 p+ Y' u. ^) f
  2383. (if (= s "Function cancelled")3 _2 d+ v0 b+ U
  2384.      (princ)
    . R$ z/ n; e+ {  j0 ?, \
  2385.      (princ (strcat "Error:" s))! ]$ l6 M. g: _% z7 t
  2386. )
    $ H. D" o, |. Q/ X& S& P) ^7 H1 ?
  2387.          (SETVAR "CMDECHO" CMD); |& x( Q! t! [7 l7 [
  2388.          (SETVAR "OSMODE" OSM)" E; ?" V" _$ L( U% r
  2389.         (SETQ *error* OLDERR)
    1 O1 `$ v" P2 h' P5 c! H8 R
  2390.          (PRINC)9 z8 p0 j7 i3 G+ z* _3 N( R
  2391. )" }& [: J( O6 g+ O/ ?
  2392. (SETQ CMD (GETVAR "CMDECHO"))" c0 B  a# y& T- s, ?
  2393. (SETQ OSM (GETVAR "OSMODE"))# \0 v4 Q  k1 Z$ [, b
  2394. (SETVAR "CMDECHO" 0)3 ?; w5 b( u! |8 Y  k7 h7 N$ q! N
  2395. (SETQ OLDERR *error*
    % k( m* ?# r! i4 i/ j- Z
  2396.         *error* loi)
    . p1 J- y9 ?+ M0 M5 Y0 A
  2397. (SETQ SZ (GETREAL "Size <1>:"))
    2 C& [$ _) H( f0 U5 D9 P0 Y4 z
  2398. (IF (= SZ nil) (SETQ SZ 100))7 h  x5 ?, K6 K' K) i) K( B2 q
  2399. (SETQ G45 (/ PI 4))
    + o" [- C) J( V( N3 X3 m* q
  2400. (SETQ G135 (* 3 (/ PI 4)))
    : n" s$ ~* U  i% T: f+ t$ V
  2401. (SETQ G90 (- G45 (/ PI 2)))
    : l1 m$ @. v2 H' v- q
  2402. (SETQ G180 (+ G135 (/ PI 2)))0 l+ E0 \; r2 H& v
  2403. (SETQ PT1 (GETPOINT "\nDiem doi xung:"))8 ?* f! T  x4 O# N( [# v) Y1 L
  2404. (SETVAR "OSMODE" 0)
    5 [3 ^8 h* y+ c; y% W) p2 |
  2405. (SETQ PT2 (POLAR PT1 G45 (* 2 SZ)))
    0 ~9 u, b; y( L$ a7 p7 i" a1 ^- b
  2406. (SETQ PT3 (POLAR PT2 G90 (* 2 SZ)))6 {! _; R; r0 b8 z. q. D
  2407. (SETQ PT4 (POLAR PT1 G45 (* 1 SZ)))
    / g4 k6 Y5 y) I
  2408. (SETQ PT5 (POLAR PT1 G135 (* 2 SZ)))
    ( ?, q) Q$ i* c  j  I: Y1 m+ ~
  2409. (SETQ PT6 (POLAR PT5 G180 (* 2 SZ)))
    " r. ?) m  m3 W% {$ S) E% q+ E
  2410. (SETQ PT7 (POLAR PT1 G135 (* 1 SZ)))! R  q6 a* {, O- y* ^5 N
  2411. (SETQ PT8 (POLAR PT1 G45 (* -0.7 SZ)))
    4 o3 X( O3 T  v9 H5 a, o
  2412. (SETQ PT9 (POLAR PT1 G135 (* -0.7 SZ)))5 n' q  k  Q' d* n+ t8 C. a2 _
  2413. (PRINC "\nGoc quay:")
    5 D; o* M9 T) P9 |/ S4 `
  2414. (SETQ SS (SSADD))# R+ h  W5 [. w/ [) X3 ^; _
  2415. (command "layer" "m" "Dim" "c" "" """")# [: A- L  c7 ~  g
  2416. (COMMAND "COLOR" "1" "")
      `" \( I. S; _6 ]7 n% i, f
  2417. (COMMAND "LINE" PT8 PT2 ""): r4 E* A, |2 H* N  r
  2418. (SETQ SS (SSADD (ENTLAST) SS))6 c8 Z3 T$ A* \0 z/ E* {
  2419. (COMMAND "LINE" PT9 PT5 "")
    1 V0 i" d2 S+ n. ^6 |0 s/ R5 I
  2420. (SETQ SS (SSADD (ENTLAST) SS))8 T$ k( k, H9 W. g8 y3 F/ k
  2421. (COMMAND "COLOR" "1" "")
    * m3 c7 N5 S0 c* P/ H2 z  I
  2422. (COMMAND "SOLID" PT2 PT3 PT4 "" "")3 ?& T  ~- }9 w! c
  2423. (SETQ SS (SSADD (ENTLAST) SS))
    + ~8 |' i; j* }' ?
  2424. (COMMAND "SOLID" PT5 PT6 PT7 "" "")
    + A( o5 z  b$ b; ]
  2425. (SETQ SS (SSADD (ENTLAST) SS))& g, U! ~% O  O$ m  o9 ~
  2426. (COMMAND "ROTATE" SS "" PT1 PAUSE)
    * x) P: i) e5 }- s7 H- V
  2427. (COMMAND "COLOR" "BYLAYER" "")
    + H' O1 U, [7 O  Y
  2428. (SETVAR "CMDECHO" CMD)
    8 y% w0 E# V! f, K6 d, z, x
  2429. (SETVAR "OSMODE" OSM)
    7 O4 f/ O1 _' v, Z2 K8 z% u7 z
  2430. (SETQ *error* OLDERR)
    0 h2 w7 ]* R! K8 S
  2431. (PRINC)( u# b! _% m& ]8 X
  2432. )
    / f* z+ E  F, U8 j) Y/ }

  2433. 9 W5 s# a5 K6 |, h
  2434. ;==================================================================================* R$ z: a+ [% l: H# R6 D
  2435. ;=================================   KY HIEU TRUC   ===============================
    , y7 m9 {7 \" {3 _3 h/ |$ F% z
  2436. ;==================================================================================
    ; F. _4 X& p7 `2 \) v
  2437. ' y6 R7 C6 I: g, @" c8 y
  2438. (defun C:vetruc ()
    4 j2 s0 q! w" m# \/ f
  2439. (setq bk (getvar "USERR3"))* y. b0 @: \: x: ?6 X# H
  2440. (if (= bk 0)
    " C8 h5 f8 y) G
  2441.   (progn
    6 u/ O2 I. O) ?4 b
  2442.     (setq cont "1")
    / g: v3 V8 T9 M& p: ?, s
  2443.     (setvar "USERR3" 1)
    ( H8 J7 W- m3 [  q( V' w1 V$ O* t! J
  2444.     )
    * _8 ]5 J% R# H: [6 I5 W" d/ \1 ~9 Z
  2445.         (setq cont (rtos bk))
    ) p. c# V1 K: {; I2 B5 a( V& U
  2446. )
    8 F0 j7 }  O& |" _7 U% w5 A
  2447. (setq pt1 (getpoint "\n Nhap diem dat:"))
    0 ]! G6 r0 k2 i
  2448. (command "layer" "m" "Dim" "c" "" """")
    + _9 r( o$ N. _$ H- ?( o. m
  2449. (command "osnap"  "")$ M/ _, m4 v' ~& `- H" `* L
  2450. (COMMAND "COLOR" "7" "")
    5 E6 ^* x& Z& f+ ^6 n( r! f1 a5 C' {5 v
  2451. (command "circle" pt1 150 "")
    1 t+ }" w/ G7 {5 A  }
  2452. (setq pt2 (polar pt1 0 150))* h5 E" I+ f6 w  M! y  m" \
  2453. (setq pt3 (polar pt1 (/ pi 1) 150))
    4 O# ?! C' Y+ [
  2454. (setq pt4 (polar pt1 0 300))
    & B( d* `+ k* R4 P6 l. w" K, P
  2455. (setq pt5 (polar pt1 (/ pi 1) 300))" A2 Z! O0 t0 j9 k- ^% L2 Y' e; k
  2456. (setq pt6 (polar pt1 (- 0 (/ pi 2)) 150))
    ( G+ c: k$ X! Y( H
  2457. (setq pt7 (polar pt1 (- 0 (/ pi 2)) 300))
    / J9 ?: p! x. b+ Z
  2458. (setq pt8 (polar pt1 (/ pi 2) 150))
    % l9 N7 l5 ?7 v
  2459. (setq pt9 (polar pt1 (/ pi 2) 300))9 `4 \/ e) N: [; Z0 ?
  2460. (setq pt10 (polar pt1 0 150))2 t, x# s' N% @
  2461. (setq pt11 (polar pt1 (/ pi 4) 150))
    7 p3 r& ], i; F1 c+ O5 [! Y; U+ @
  2462. (COMMAND "COLOR" "BYLAYER" "")9 U  l; l) [7 P
  2463. (command "line" pt2 pt4 "")9 o5 y; B9 \4 M9 m* D" E, z  K
  2464. (command "line" pt6 pt7 ""): o' J: o0 K' _6 }5 j2 F
  2465. (command "line" pt3 pt5 ""). t0 x5 o* {% A  d+ l# X
  2466. (command "line" pt8 pt9 "")
    $ i) e7 N( ?$ R$ H* K, J
  2467. (setq dk (strcat "\n Size:<"cont">"))
    5 w' N: q+ r3 A
  2468. (setq bk (getreal dk))
    / Z" h, e1 k% }; u: e
  2469. (if (= bk nil)
    1 \+ g. v! D  A7 y: {
  2470. (progn
      W! N; _+ ~3 b8 e: Z
  2471.   (setq bk (getvar "USERR3"))
    , U6 k( V: L! {3 w
  2472.         )
    9 c& F* Z1 g( H% L( P/ O$ c/ b
  2473.   (setvar "USERR3" bk)" V* q$ T* J* y! Q
  2474.   )
    $ R1 O. O) q0 W8 I
  2475. (command "scale" pt4 pt5 pt7 pt9 pt11"" pt1 bk"")
    : u( x8 v! v  {) i
  2476. (COMMAND "COLOR" "7" "")6 U& m+ N( A, j$ @& T8 x: q
  2477. (COMMAND "STYLE" "Truc"  "impact" "" "" "" "" "")
    , V5 I8 i' x' X- g2 J" S; V- b; \
  2478. (command "text" "j" "mc" pt1 (* 150 bk) pt10 "A" "") " x: k" v( u6 |+ U+ Y5 @! ?$ Q
  2479. (COMMAND "COLOR" "BYLAYER" "")2 P/ ^5 ~- n% S$ ?, q7 h
  2480. )# _/ ?& E2 j  [
  2481. * q0 z) ]4 J! F
  2482. ;=====================================================================, T, ^7 Z8 L9 s1 t& w
  2483. ;CA - Reverses the case of text.  (Upper to Lower and Lower to Upper.)* ~' y5 K; Y/ a4 B6 Q- d
  2484. ;, O7 M2 v7 i/ V$ a8 B
  2485. ;Jeffery P Sanders
    ( b& n2 k9 J# `
  2486. ;, J, O  e! X3 {+ k+ h! R( q
  2487. (defun C:CA(/ en enlist tx newtx cnt tp asc note)* V  S( \4 @+ Z! I, c- {
  2488. (setvar "cmdecho" 0)
    0 {# ^8 b9 n! t2 x
  2489. (if(setq en(entsel))
    / X: R; I! Q+ {' `
  2490.    (progn4 e2 H! U4 \! p. Q+ e
  2491.       (setq enlist(entget(car en)))9 Y/ m9 Z' T7 V5 }9 c( `
  2492.       (if(= "TEXT"(cdr(assoc 0 enlist))), d+ \7 S  p- \1 M
  2493.         (progn
    - k' ^" }+ Y' W$ T& ^. ?8 o
  2494.           (setq tx(cdr(assoc 1 enlist)); Q0 l( O6 `: c$ [# `
  2495.              newtx "" cnt(strlen tx): E" S- t  h* T( S5 J: B3 [
  2496.               note "\n...CASE Reversed. \n "2 {9 H  `2 G9 s
  2497.           ). S4 G  }# V+ ^7 B2 K6 X+ q
  2498.           (while (> cnt 0)
    4 q, ~( W3 V" Y" ]% Y4 ]
  2499.              (setq tp(substr tx cnt 1))  S1 }# x. r2 m8 v7 Q2 t
  2500.              (setq asc(ascii tp))% D2 F: H" k! b4 i  a3 t
  2501.              (if (> asc 96)
    . v* C- ?: L8 H, M
  2502.                (setq tp(strcase tp))
    2 `/ E2 J: c; i
  2503.                (setq tp(strcase tp T))
    2 C* Q6 U6 \$ {4 s+ l. m7 f
  2504.              )
    & J" S: d" Q+ W, d! ?. g* X
  2505.              (setq newtx(strcat tp newtx))" U7 A% G" b6 }! B
  2506.              (setq cnt(- cnt 1))% I4 f# l2 q. {( a/ g1 Y1 `7 E
  2507.           )
    $ w/ A4 ^% f& o, a6 x) Y% ~* C3 V
  2508.           (setq enlist(subst(cons 1 newtx)(assoc 1 enlist)enlist))
    - b# }$ w- t- ]" N7 O( v9 Z+ m/ [
  2509.           (entmod enlist)1 V! F9 c" b2 _$ x0 T2 ]9 X
  2510.         )( A$ g; l- e% z8 b
  2511.         (setq note "\n....Text Only Please. \n ")+ j0 h0 s8 |# G8 O& `7 ]7 t1 j" T% b
  2512.       )
    4 }) I, d* A: y" M
  2513.    )' U+ {9 @& P: W* e+ @! ^; Y
  2514.    (setq note "\n....Nothing Selected. \n ")
    # L1 ]9 L4 M: t. [4 Y6 N
  2515.   )- h. R" ^' g7 a* u5 g: F& S  x
  2516.   (setvar "cmdecho" 1)% b3 G( M; }/ e4 D- P
  2517.   (princ note)
    # v% V/ w+ w) {) C, s$ J/ G2 q
  2518.   (princ)" _/ n& y# U+ \: l
  2519. )- J) E$ j$ c. H9 N9 Y0 ~' b

  2520. * d- l) @1 }" s0 h; P
  2521. ;=====================================================================  B- o; q9 r) I% d2 |
  2522. ;==================== NEW TEXT STYLE UPDATE ==========================
    * r' ~5 P, h% k1 B# w+ R/ e2 V
  2523. ;=====================================================================' J6 C! X3 G- O: E9 r! i# N+ x' X, x
  2524. ; d6 ?  i/ S: H6 g
  2525. (defun c:nS (/ tdt ssdt sodt index)
    9 I8 W; V  W, ]3 c( _
  2526. (defun ObjName (ssdt /)) w9 i2 `4 I9 F$ s# n
  2527. (cdr (assoc '0 (entget ssdt)))" o7 p; f6 l. Y! u' ]: \
  2528. )
    1 d2 I7 J5 z- [7 n
  2529. (defun MoPL (ssdt /)
    4 S' M: h3 e* b) W
  2530. (= (cdr (assoc '70 (entget ssdt))) 0)
    ! ]! Z) y) `5 K2 d7 v
  2531. )1 i5 ^$ o4 t3 P9 H
  2532. (defun NoiPL (ssdt /)3 Q: ~2 Z0 w% w5 y: N
  2533. (if (MoPL ssdt)
    4 R9 s5 C. W' V0 `
  2534. (command ".PEDIT" ssdt "J" "All" "" "X")' y: H- J* J: n1 F; d
  2535. )
    * K" E0 ^! `! m! O: K
  2536. )3 X- S! U' [5 {; P7 E9 w  f
  2537. (defun NoiLC (ssdt /)
    0 a/ e0 S0 {) T, [+ q
  2538. (command ".PEDIT" ssdt "Y" "J" "All" "" "X")
    4 _) {! ?1 x# W; N' u# t
  2539. )5 L- y6 H& P' w+ N2 }  U
  2540. (setq
    5 ~$ r  R& M! Y" E7 X
  2541. tdt (ssget)
    6 i- D" o! [7 |" e, e! c
  2542. sodt (sslength tdt)
    : L. ]. `- k( w, H
  2543. index 0
    : n  ]8 N8 d4 n6 q
  2544. )
    8 f  |: I# e$ a
  2545. (repeat sodt9 q/ Z- e5 G3 N& I
  2546. (setq; Z, B# d6 v, O7 ?# ^9 v5 y
  2547. ssdt (ssname tdt index)8 n' C* F- n& a' I4 T
  2548. index (1+ index)
    , Q$ h9 u  a8 [
  2549. )& M+ x& u' Y  R& k
  2550. (if (or (= (Objname ssdt) "LWPOLYLINE")
    ( _# K; R: G* |
  2551. (= (Objname ssdt) "POLYLINE")
    # N4 e8 B0 |2 Z, D3 V
  2552. )* e& }3 c; @& a' W
  2553. (NoiPL ssdt)" `  W- v0 F. G: w) R
  2554. )& f  m4 R/ _+ I! w( ^
  2555. (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))1 f5 c+ G9 r: ?4 {. J/ v/ V( M1 A9 n
  2556. (NoiLC ssdt)
    ' u6 b! c& C% m
  2557. )4 [) H: b" v; m5 W: a$ O
  2558. )
    8 c$ p# z( s, ?
  2559. (princ)2 Y6 k. m# q; g6 l/ e
  2560. )
    ) s) m7 f9 `! P
  2561. ( ]7 V- ]- V0 |4 C( `" Q. E
  2562. ;=====================================================================
    . X: m1 E# L0 t  r! r
  2563. ;;; AREAM.LSP" r# {  I4 {& n5 F* Z: I: X
  2564. ;;; Function: Calculates the total area of selected objects$ u- ~' z0 |: r! M; |" }3 s0 t) `
  2565. ;;; By Jimmy Bergmark
    9 Q# u1 S/ |' g2 M% s" b; l
  2566. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved% h7 G. w" F- U1 J* a% h
  2567. ;;; Tested on AutoCAD 2000
    1 ?" `4 T) X9 E
  2568. ! w- ~" t$ F. l, [
  2569. (defun c:ea (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)- \0 {% w/ f- }$ ^$ \
  2570.   (defun errexit (s)/ Q) X) e3 j' r7 I+ ^
  2571.     (restore)% p8 E# x$ A0 m0 o; ~
  2572.   )+ o, F6 s2 r+ I) \0 P9 E

  2573. ! G' {( Y$ M" B! E3 L& D7 N4 x0 H; ]
  2574.   (defun undox ()+ q1 k. c+ D0 s1 t; d1 B' D3 Y
  2575.     (command "._undo" "_E")' s3 D( ^: b; E9 R
  2576.     (setvar "cmdecho" oldcmdecho)
    9 ]6 O7 t( n/ f
  2577.     (setq *error* olderr): v4 i  @, d# {+ g, o; o4 w
  2578.     (princ)
    - ~/ B' w+ s+ s1 ~
  2579.   )- t7 Z& g6 k" g, V/ n2 \8 l
  2580. 8 `2 @& X; {- _( Z
  2581.   (setq olderr  *error*# i3 N2 F6 v9 @( x; R
  2582.         restore undox& z- x2 S$ d+ X& h. ]9 y
  2583.         *error* errexit
    - y! U( y0 M) b% O8 }9 R
  2584.   ), n  X  A( _1 W) D0 m
  2585.   (setq oldcmdecho (getvar "cmdecho"))
    & e. B8 f6 Z% U9 g% F2 _% W/ i
  2586.   (setvar "cmdecho" 0)" w& z7 P- m/ K6 x* _1 v
  2587.   (command "._UNDO" "_BE")
    9 b4 E# f% h- Y+ M! D9 @
  2588.   (if (setq ss1 (ssget '((-4 . "<OR")1 o. j: W4 p( \! N) n
  2589.                          (0 . "POLYLINE")
    1 F5 y, g9 d- s0 G
  2590.                          (0 . "LWPOLYLINE")
    ( @. @1 F$ L3 B" Q# X* k2 Y+ e
  2591.                          (0 . "CIRCLE")
    - D5 z6 @( w' |% S& Y5 J  G
  2592.                          (0 . "ELLIPSE")4 k( y+ Z# B' m* i' ~
  2593.                          (0 . "SPLINE")" e" n6 m1 e: I7 O6 H+ K  y
  2594.                          (0 . "REGION")
    + |5 U1 w( }; }/ Y/ W  T0 m( q7 {7 j
  2595.                          (-4 . "OR>")6 y' b$ k5 U! G- }8 l
  2596.                         )
    8 m* n* y8 t) g
  2597.                 )
    ! z8 `: H9 `: D6 q$ {5 \) U
  2598.       )% _- }; m* j" M2 D
  2599.     (progn
    - s: J! m* O8 @$ s
  2600.       (setq nr 0)" R- G: ]0 i& l1 U" B: p: q9 u
  2601.       (setq tot_area 0.0)% Y% m: e9 e9 k8 N
  2602.       (setq en (ssname ss1 nr))1 s0 N/ R, U) Z' J- V: ]+ \
  2603.       (while en
    ) m; T& ~1 y- U: R3 `
  2604.         (command "._area" "_O" en)
      ]. P5 X- `$ K( K+ X" C% J
  2605.         (setq tot_area (+ tot_area (getvar "area")))
    & N& _+ _) r' O; n) q4 ~+ W! \, I
  2606.         (setq nr (1+ nr))9 w# A5 v0 i* Y/ m
  2607.         (setq en (ssname ss1 nr))) ^. a: v( h/ V* t5 @' X3 L; J
  2608.       )5 e3 h- t5 D+ y3 V. K9 i- z) x
  2609.       (princ "\nTotal Area = ")$ L' s: j; j6 |2 u, h1 T
  2610.       (princ tot_area)
    6 l; s7 \, x; G  n, O& T% @
  2611.     )
    ' V& |5 i6 h; e9 ^9 I3 U& r+ I3 Q2 `
  2612.   )
    + J3 d/ }$ D4 D
  2613.   (restore)9 A. [4 {4 f5 s! e* o
  2614. )4 C: P( {8 K! m1 i* m6 h

  2615. # O" s6 e  ^& y( z, T1 N5 q$ S# X) @
  2616. ;=====================================================================
    & I/ S, F3 c0 o5 Z+ @/ Z: M
  2617. ;;; By Jimmy Bergmark4 V3 ]+ }6 R5 K& Y! g
  2618. ;;; Copyright (C) 2008 JTB World, All Rights Reserved" X* I0 h# h* C5 L: m  }
  2619. ;;;
    % }4 l5 H8 P) b+ d; O# M2 l3 A
  2620. ;;; Created: 2008-03-31
    / R5 N- D! f$ u* j- a
  2621. ;;;1 Q" f1 L: w( R4 G4 Z( F
  2622. ;;; Convert Attribute definitions to mtext
    2 y& k. v) y1 `6 p- h
  2623. ;;;
    ) F9 V: M7 p* \4 Y
  2624. ' p5 O- p( |5 f! a
  2625. (defun c:ATB (/ eset1 blkcnt en enlist tag1 ht pnt vl space)
    2 ?* w& ~/ R* u( p$ O
  2626.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))) |! A5 R6 {8 A" i6 W
  2627.         blkcnt 08 A: a- P5 ?4 F
  2628.   )- v  `8 y) ~! C1 W2 s$ o
  2629. ) U3 W( J" F. X$ P8 ^+ W
  2630.   (if eset1
    + p; j/ t" {' P) g4 @4 G- F! H
  2631.     (while (<= blkcnt (- (sslength eset1) 1)), a6 G2 t# `& @( X) T
  2632.       (setq en           (ssname eset1 blkcnt)
    + K4 M( J6 l) i
  2633.             enlist (entget en); t/ B/ f6 o$ i! V
  2634.             ht           (cdr (assoc 40 enlist)), f6 {8 s" {/ }  C  v/ G
  2635.             pnt           (assoc 10 enlist). g+ z" d" F# M* ~9 C; n2 k
  2636.             pnt           (subst (+ ht (caddr pnt)) (caddr pnt) pnt): F$ X2 `3 A, R1 K8 D
  2637.             space  (cdr (assoc 67 enlist))7 E3 F% N: S0 Y* X0 G
  2638.       )
    # O( ]0 I" d7 @8 |
  2639.       (setq vl (list. M, R$ E- g, i, h
  2640.                  (cons 0 "MTEXT")
    0 @' w& D2 m1 m8 I
  2641.                  (cons 100 "AcDbEntity")
    1 ^7 N% O/ G4 E3 }; U
  2642.                  (cons 100 "AcDbMText")8 W2 f0 ^' A" g6 M. D
  2643.                  (assoc 7 enlist)
    / c* p7 g% P  V5 O% {' B: }
  2644.                  (assoc 8 enlist)
    ! N" \% v9 |" D) K) [$ f' l' S1 P
  2645.                  pnt
    7 `" B! ~: Q/ [0 C$ V
  2646.                  (assoc 40 enlist)
    6 t1 D" d& _  B4 D; @! }
  2647.                  (cond ((assoc 62 enlist))- o" n  W6 T, P- O8 T& Z! G& ]
  2648.                        ((cons 62 256))
    ; B; e% B/ d; f
  2649.                  )/ ^) L3 j2 T4 \% R5 _6 {/ Y
  2650.                  (cons 1 (cdr (assoc 2 enlist)))
    ( \: h' q5 Y2 W8 X( W2 Y
  2651.                  (if (= space nil). q3 b/ Q6 ]1 Z! v9 g) k" Q6 _% P
  2652.                    (cons 67 0)% A! M8 n+ }( p1 e
  2653.                    (cons 67 space)( U: l5 X, m9 A" \! ?" f$ P: z
  2654.                  )
    : Y! m: u$ `1 r/ h$ }4 K; d
  2655.                )% V% N6 H. b0 c. Z$ p
  2656.       )
    + K6 E( E, K$ w  R; ^
  2657.       (entdel en)
    7 j! J- {- P# u: [$ _! g/ x6 C3 u
  2658.       (entmake vl)$ D. G% f1 ^$ k0 n
  2659.       (setq blkcnt (1+ blkcnt))
    4 ]0 ^4 k: }4 w- O
  2660.     )
    . \/ B) r6 Z- `7 i* B
  2661.   )
      [5 h6 F0 t" ?( c* _" g+ R$ D6 I3 W
  2662. )8 N# S5 ]! W: \

  2663. " P  J) {1 b: k* d( T8 K" Y
  2664. ;=====================================================================0 l5 M9 P6 m0 F, g8 }. s# E
  2665.   [1 k/ r6 n6 Q, a" P
  2666. (defun c:xxx ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)' F7 x; C) }& C$ ]. r+ V
  2667. ; Khoi dau cua chuong trinh
    2 {/ m& n  o1 f0 n6 E  Z) j% S
  2668. (princ "\nCopy Inteligent...\n")
      `9 u+ B5 [" H0 c, q/ B1 D
  2669. (setq         luuecho        (getvar        "cmdecho")
    & H* \. z. p5 b8 S2 _' t; k7 t
  2670.         luu        *error*
    ! N  x( h1 U3 `) s
  2671.         *error*        ketthuc
    6 Q5 }9 [, J: u- G
  2672.         cumdt         (ssget)
    # D* B0 S- ~; u2 o- n1 ~
  2673.         dodai         (sslength cumdt)
    & y$ u* x6 [3 D4 @3 K0 P* _& A4 |
  2674.         goc                (getpoint "\nSelect base point:")
    ! J5 Q* R6 O' }& K
  2675.         thoat                nil! _. k* S7 L/ c0 a- |2 O6 c
  2676.         dem                0
    1 U0 f2 B& m1 E9 ]5 v
  2677.         textxl                nil
    3 Y0 e' v- @0 `
  2678. );' y& O3 t( L0 }0 z( s
  2679. (setvar "cmdecho" 0)+ `" n. k# j4 |4 C/ ^8 y' T3 W
  2680. ; Loc ra duoc ong text de xu ly* ^& P. Z) }9 N2 E
  2681. (while        (and         (= thoat        nil)! H+ n% U) S' s. x
  2682.                 (< dem        dodai)7 k; L0 A, R% s8 P; Y8 y' ]
  2683.         )
    3 |% O" I. u* [" F# ?
  2684.         (setq         ten        (ssname cumdt dem)' t8 {# C- L8 I6 q3 a4 Q
  2685.                 dem        (1+         dem)
    ; S2 U, {3 a, m7 N' f* P/ F
  2686.                 doituong (entget ten)8 r3 K4 ?7 E. y( |3 C
  2687.                 kieu         (cdr (assoc         0        doituong))                        
    & a1 ?/ Q; P4 N
  2688.         )
    3 @- {. C0 a( X. k" F
  2689.         
      x6 }4 v  F' H7 w2 x! i0 k8 Q
  2690.         (if (or (= kieu                "TEXT")1 J  \! D; I, _8 T0 U
  2691.                 (= kieu         "MTEXT")          \  g) R  C4 j
  2692.                 )5 l/ E9 ]$ L- b
  2693.                 (setq         thoat        T8 N0 P6 e9 j$ I* L
  2694.                         textxl         (cdr (assoc 1 doituong))         
    - `8 P$ Q7 d) [' \$ d! O
  2695.                 )9 r3 W7 j3 Y/ H" g- Z
  2696.         )
    2 _% y$ K" E7 l+ ^. U
  2697. );" y- c' i' n! b/ d6 K, B3 t
  2698. (while T ( D2 |, G" Y" B7 X, m& j9 a! |3 R
  2699. (setq        toi                (getpoint "\nSelect next point: " goc)
    ' @7 i( S7 L; g; X1 t. h" H. x5 I
  2700.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))
      [: q3 s; N- \2 }3 V6 s
  2701.         dem                0
    3 s1 K7 k& h6 H4 n+ o" Y
  2702. )
    ; j* }8 C9 E. f3 L
  2703. (while        (< dem dodai)
    * k+ p3 _! z8 i$ v: |
  2704.         (setq         ten        (ssname cumdt dem)  Z( R3 d& h  e7 ~
  2705.                 dem        (1+         dem)
    $ T7 G8 m+ h7 c1 Q: C2 N& C+ Q
  2706.                 doituong (entget ten)
    9 B+ R% Z. S" Y, H
  2707.                 kieu         (cdr (assoc         0        doituong))                        # A% T" r5 M4 K
  2708.         )
    , v$ u6 A# {  a0 h
  2709. 3 P! B$ ~3 w) t/ N. i) I
  2710.         (if (or (= kieu                "TEXT")
      ^/ P+ w# t( A7 _' Z
  2711.                 (= kieu         "MTEXT")        1 e& P% l, m6 y6 a
  2712.                 )" c' e9 J8 q1 O# o1 _
  2713.                 (doitext        ten)
    5 g/ r1 x6 u  A% K
  2714.                 (copy_dt        ten)0 N+ }& w5 ^, l7 R% M9 w! f

  2715. $ t4 _; E+ ]8 I, U2 }3 ^! i
  2716.         );if; L, N, u9 L5 o5 W
  2717. )
    : R2 c# ]3 q( m, u4 a, w
  2718. );while
    5 f" o9 Y" r1 F; Q. k& w! E
  2719. (ketthuc)0 N' o. z: o! M# U5 c% y
  2720. );defun
    ( ]! E' P1 P6 g. W- S
  2721. (princ)2 Y: U# o( @! K9 f! o& e
  2722. 5 a2 u5 n1 L* w
  2723. ;=====================================================================
    5 |3 s4 \/ U# U# L
  2724. ;;; By Jimmy Bergmark
    & E: N% M) E+ ?8 z4 z
  2725. ;;; Copyright (C) 2008 JTB World, All Rights Reserved
    $ k) z5 k9 z+ J
  2726. ;;;% V% e& i7 s( h& w4 E8 {. s
  2727. ;;; Created: 2008-03-31
    % k5 b4 o2 R0 H! D
  2728. ;;;1 I+ E" U. C) d4 \1 R2 a5 B+ z9 S! g
  2729. ;;; Convert Attribute definitions to text- b, y0 _7 ~7 a! j1 l5 Y  M
  2730. ;;;
    5 n6 V: U  R6 `$ }% g7 x& B, ~- @
  2731. ; @; {& t( z: H" u; o( |" o
  2732. (defun c:ATT (/ eset1 blkcnt en enlist vl space)% L8 m# G, H; a- ~3 n. {
  2733.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))0 I& I& M* K" D! o. S
  2734.         blkcnt 0
    & \) Q6 e! b" `' C' n( S! j
  2735.   )
    2 U; C/ e- V  C. V# Z/ E* N

  2736. ; V! H- ~3 D" M$ [. e3 ~$ g& T% Y
  2737.   (if eset1/ G, Z1 M1 Y. K$ U! G+ r& z7 q* n
  2738.     (while (<= blkcnt (- (sslength eset1) 1))" H0 \/ z# ]# f0 [6 p8 {* F
  2739.       (setq en           (ssname eset1 blkcnt). p5 V9 {$ R3 K! t3 E3 R6 h/ C
  2740.             enlist (entget en)$ g8 c3 S7 Z. x/ d9 `( M( [
  2741.             space  (cdr (assoc 67 enlist))1 V6 M% C6 L2 M5 e5 ]" V' T
  2742.       ). ~3 f" x% R$ m1 s% N9 ~0 ?, t8 m
  2743.       (setq vl (list
    ) C% Z3 `. c3 C) ], B6 |% D( g
  2744.                  (cons 0 "TEXT")
    " [( {5 g! k" o! ?7 N( X
  2745.                  (cons 100 "AcDbEntity")
    & n' d9 t& i, j: O' P/ g- m6 H
  2746.                  (cons 100 "AcDbText")  c3 j4 e& U% ~0 c0 j
  2747.                  (assoc 7 enlist)7 K6 }$ w/ o* v6 ~! h/ ~
  2748.                  (assoc 8 enlist)% j9 e# T( n* \; }, V5 O( O7 t
  2749.                  (assoc 10 enlist)
    % x- P: Q# {% U8 G) r/ B( ?
  2750.                  (assoc 40 enlist)
    2 U0 {1 \3 ?- H) U' x
  2751.                  (cond ((assoc 62 enlist)); P" R5 k1 B, V
  2752.                        ((cons 62 256)); @7 Q/ a" {  v* u, a, [0 n  S% U
  2753.                  )8 I, \- c: d$ Z+ [+ i
  2754.                  (cons 1 (cdr (assoc 2 enlist))): k9 K- b. i+ K) e3 k/ P3 H
  2755.                  (if (= space nil)
    5 M8 F+ a2 a; v9 |3 p; h9 }
  2756.                    (cons 67 0)$ n% ]: P! m8 Y/ `
  2757.                    (cons 67 space)
    $ ^5 k, I+ a0 k- Y( K# k
  2758.                  )) g* b7 a2 w- v' i/ |9 O) B4 W
  2759.                )( r: p. E% M2 e* u
  2760.       )
    + B* ?/ w7 U8 k# O+ t
  2761.       (entdel en)
    / w7 C& l& s) \: P
  2762.       (entmake vl)
    5 W. |, R. D* C# n5 k4 u
  2763.       (setq blkcnt (1+ blkcnt))
    % D! E  V7 L" v/ Q  p1 f' |1 U
  2764.     )
    % b; o% m% v$ D, G3 a
  2765.   )
    - L* }/ {( B8 m. N. r4 H% `6 r& Q# w0 o' Z
  2766. )
    ! J7 A" h/ u4 D0 X7 S0 W
  2767. ;=====================================================================
    % `6 _. I5 \! o2 a4 L6 f$ E
  2768. ;============================ Doi Truc ===============================. m- S" ?; k: _* G- p- X" m
  2769. ;=====================================================================  y6 N/ P  G1 C* {. |+ ]# p

  2770. 5 P- f% W6 N' P7 M& f
  2771. ;=====================================================================( w* t4 L# I7 i
  2772. ;=============== FUNCTIONS GA 1+3+5+7+9+11+13+15+17+19 ===============6 F. Z# w5 ~- Q  b, `
  2773. ;=====================================================================, o0 v- _7 S1 m1 |+ e! f4 e
  2774. (defun c:ga1 ()# Q+ v! r" w2 @: i
  2775. (setq a (getpoint "\nChon diem: ")); ~7 h' b# T/ r5 b+ R" V
  2776. (setq b (getpoint a"\nChon diem: "))
    ) U; F4 N0 ~  U+ k6 L
  2777. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    6 S2 ~7 f7 R# P5 i
  2778. (command ".circle" c a)
    6 O9 k  S+ W& ]: v8 K: y7 e  l
  2779. (command ".line" a c "")4 G% [! [3 K. l3 M8 j6 @9 G
  2780. (command ".array" "last" "" "p" c "1" "" "")
    3 Y' p/ K& v0 w  s) H' a) ~9 l
  2781. (princ))
    2 Q/ w+ Q! e) M( }3 l; H% y
  2782. * g) F0 T$ d: k. r" Y
  2783. (defun c:ga3 ()3 D8 ~* K+ E' A3 Y7 \7 ?
  2784. (setq a (getpoint "\nChon diem: "))
    ! W0 m, n* }* b: C6 {
  2785. (setq b (getpoint a"\nChon diem: "))6 m) ^4 y, j) F7 B! m5 c/ Y7 d( x
  2786. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    + }9 ]% K; A1 W9 n( Z* a$ {' C& @
  2787. (command ".circle" c a)  M% ~# X0 s/ O) |& P7 o. W3 ~
  2788. (command ".line" a c "")
    6 x5 P: k* T5 a+ d3 G) i; _
  2789. (command ".array" "last" "" "p" c "3" "" "")
    8 B# u' x5 U2 p; J& O2 y
  2790. (princ))
    " i: j. l: W- O; P- }% b7 O

  2791. . t  l/ [  r) c8 M3 B0 `
  2792. (defun c:ga5 ()
    & t7 R6 B2 w* l
  2793. (setq a (getpoint "\nChon diem: "))1 K4 o. F1 P; H- w3 c% @
  2794. (setq b (getpoint a"\nChon diem: "))
    3 d% P) h. [2 y( _% P
  2795. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ) ^: j: x+ D: |3 }. Q- h
  2796. (command ".circle" c a)
    0 Q8 A5 s5 L5 c1 G  r2 M
  2797. (command ".line" a c "")& v; O, z" I/ j  Z* O& |7 P; D
  2798. (command ".array" "last" "" "p" c "5" "" "")
    5 b. r% s) p3 m4 X  B7 ]
  2799. (princ))
    4 m7 E2 {8 q/ r; }# O

  2800. . Z2 K; l. o& B8 g" t& T$ v  R
  2801. (defun c:ga7 ()3 o0 |5 @& o  W; Y+ @9 d
  2802. (setq a (getpoint "\nChon diem: "))  v9 U9 U( `" m
  2803. (setq b (getpoint a"\nChon diem: "))& o/ E3 |, b% v  y/ S
  2804. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    9 Q, x0 B* Q; p9 M8 P) f2 S* f' R
  2805. (command ".circle" c a)
    : ?8 R/ ?- ?! O0 H
  2806. (command ".line" a c "")
    5 j# f; t2 K9 E, r4 w% v* D6 r( z# U
  2807. (command ".array" "last" "" "p" c "7" "" "")
      l; K( l( B  z+ c: b. V, `
  2808. (princ))$ e. L2 w" m0 `6 J
  2809.   T  ~9 I" K# ~
  2810. (defun c:ga9 (): o- d( ]: z% c8 C
  2811. (setq a (getpoint "\nChon diem: "))
    , d4 o7 o3 T. s+ I: f
  2812. (setq b (getpoint a"\nChon diem: "))
    " u/ a8 J0 j" u+ \  W0 s
  2813. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))) U2 e6 B9 ~* k5 U: L+ `6 X
  2814. (command ".circle" c a)! P+ l$ ~9 p& Q( A: G
  2815. (command ".line" a c "")" d5 f! M( p* ]7 A
  2816. (command ".array" "last" "" "p" c "9" "" "")
    ; x, g4 B- d9 ?7 E8 @. d
  2817. (princ)). X. t# U  J. c3 a, {9 c2 ~9 N
  2818. 6 K* F' T! Q7 V9 ~& ], ]
  2819. (defun c:ga11 ()
    - o# C% m3 c' k: l; f8 O
  2820. (setq a (getpoint "\nChon diem: ")), [! \" A. c) m/ L, ?
  2821. (setq b (getpoint a"\nChon diem: "))4 \  e: P  v) E
  2822. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))) C4 q/ D3 D% e* y; b* u
  2823. (command ".circle" c a)
    ; n+ r: F2 ^3 D* b
  2824. (command ".line" a c "")* e: j8 Z1 A. u- i) S
  2825. (command ".array" "last" "" "p" c "11" "" "")# n' u0 R4 [5 g* {1 j2 B5 z
  2826. (princ))
    ; \3 J6 I( W' b+ |
  2827. . N  ^5 ?1 W/ L  a3 _% W7 m
  2828. (defun c:ga13 (); ]! p/ K& H$ T  W9 [' ^
  2829. (setq a (getpoint "\nChon diem: "))
    - s! Z9 S; E0 v9 k1 i- _5 {3 q
  2830. (setq b (getpoint a"\nChon diem: "))
    * Z; S0 }1 h. K
  2831. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
      g" g& M  O& m
  2832. (command ".circle" c a)- K5 m1 _/ ?1 P6 [, I( b% W
  2833. (command ".line" a c "")
    - m( E8 H4 }' ^
  2834. (command ".array" "last" "" "p" c "13" "" "")7 X9 t' V: X. v( Q7 K: t5 V: m
  2835. (princ))7 E8 Z. ~# z/ M1 f0 q- V
  2836. 7 K) z6 J6 v) t8 i* ~1 P
  2837. (defun c:ga15 ()
    4 l5 `" d$ O; D" J1 P
  2838. (setq a (getpoint "\nChon diem: "))0 g3 _6 S, h# [5 l* s
  2839. (setq b (getpoint a"\nChon diem: "))& F1 K9 i2 Q1 I5 d& ?8 Y  G: w
  2840. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))/ ]( Q1 @7 h$ t' J
  2841. (command ".circle" c a)% |% l0 \) ^1 ]1 T
  2842. (command ".line" a c "")" }& L) T6 ]$ a# k7 q1 A
  2843. (command ".array" "last" "" "p" c "15" "" "")0 C& r9 c$ `" A1 k6 |
  2844. (princ))
    , }+ v% f$ o& j2 e, x' I; Z' ]8 C  [
  2845. , J. T& m9 k+ ]7 q/ }7 U, b3 q
  2846. (defun c:ga17 ()
    ; B' P6 N- N# D/ R, p
  2847. (setq a (getpoint "\nChon diem: "))
    % @, i  m: U& e$ J
  2848. (setq b (getpoint a"\nChon diem: "))
    3 J: b3 m* \+ j: _. M( c
  2849. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))& M9 m& o/ |  `
  2850. (command ".circle" c a). d/ p8 a, Z" D. @9 q
  2851. (command ".line" a c "")) H- P; U, ?( ^; A+ j+ }* x6 C
  2852. (command ".array" "last" "" "p" c "17" "" "")
    * h* z- _. {7 ^. x) _
  2853. (princ))
    3 X( f! p( L# o% [1 B
  2854. ! i# f, r  |: s# B
  2855. (defun c:ga19 ()- A# M2 B% X* A" ~" S- T" a
  2856. (setq a (getpoint "\nChon diem: ")); ~0 f: A# |$ @' U! v: A
  2857. (setq b (getpoint a"\nChon diem: "))
    & g' d: b' ]" C
  2858. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    5 Y! U+ v! C5 d; {. I3 F. `
  2859. (command ".circle" c a)/ Z0 ~+ l$ b; p- L
  2860. (command ".line" a c "")+ n, R  @$ A- f9 j% I1 g+ ~0 Y6 d
  2861. (command ".array" "last" "" "p" c "19" "" "")
    ; x0 @8 ?1 p  G! n5 T' H7 O- {
  2862. (princ))3 e( M& E+ o$ z
  2863. 5 d8 U6 {# ]$ M: I. R7 t
  2864. ;=====================================================================
    % C2 C2 `2 b/ y. c7 D* o) W9 N
  2865. ;============== FUNCTIONS GA 2+4+6+8+10+12+14+16+18+20 ===============" L0 v, m7 c! d. Q% G' \
  2866. ;=====================================================================
    ; Z) U' |: |: m; A- c: n/ X# c
  2867. (defun c:ga2 ()* z1 U* N/ C- c% v% ?
  2868. (setq a (getpoint "\nChon diem: ")): _) Z5 {7 P1 O' g' X8 f, b7 r
  2869. (setq b (getpoint a"\nChon diem: ")), b* K+ T. S( A, J3 T
  2870. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))+ U5 g2 H& a9 x( z+ q5 a
  2871. (command ".line" a c "")' T& k4 N! a2 }' ?
  2872. (command ".array" "last" "" "p" c "2" "" ""). R) ]# i+ o1 z' K
  2873. (command ".circle" c a). R1 L: j% R& C; G( e. I$ g
  2874. (princ))( X! a/ F8 u$ f4 m: S) |& j* U

  2875. , N, F$ `/ m) Q" S# k
  2876. (defun c:ga4 ()
    5 n0 b4 p6 v+ Q! q! w9 N+ `/ \
  2877. (setq a (getpoint "\nChon diem: "))5 o2 I' p( }; J# l
  2878. (setq b (getpoint a"\nChon diem: "))5 d5 U0 S" C2 s0 l' [- V' _
  2879. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))7 ^' u/ T, e6 m. ?  E) u) }
  2880. (command ".line" a c ""); H/ N' j& J5 D3 ^. R) t. m5 S
  2881. (command ".array" "last" "" "p" c "4" "" "")6 n! a! O7 R4 ]  x" ^
  2882. (command ".circle" c a)4 ^6 {, e9 M. m4 O+ m
  2883. (princ))2 ~8 j9 _9 {0 u

  2884. & v6 O# d- Y1 Z# j% h$ K0 F! l4 x
  2885. (defun c:ga6 ()
    " B! ~- {4 ?2 h! a# W3 X
  2886. (setq a (getpoint "\nChon diem: "))" G7 I, K& x3 {4 }- m
  2887. (setq b (getpoint a"\nChon diem: "))& {! G4 _& i$ W  v1 [
  2888. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))). n0 N. ]" T6 e. P$ s3 H5 D
  2889. (command ".line" a c "")  L, i  J' n, @; c4 E; S
  2890. (command ".array" "last" "" "p" c "6" "" "")1 b. h; z* @1 o+ [. C- N
  2891. (command ".circle" c a): Q. ^+ U  S/ s5 [/ Z' D& |9 m# _" P
  2892. (princ))8 d5 H4 E' |$ U; u/ f" t& n/ F7 P
  2893. 0 E9 `  j; r, j7 d
  2894. (defun c:ga8 ()
    & a" ~* I' E" e
  2895. (setq a (getpoint "\nChon diem: "))8 B2 V* E, X- R3 m2 R
  2896. (setq b (getpoint a"\nChon diem: "))3 G$ @% \0 ^- Z$ s4 c2 ?$ y
  2897. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    + [0 n3 @! }; o
  2898. (command ".line" a c "")2 p; w* o  Y! [
  2899. (command ".array" "last" "" "p" c "8" "" "")( A- c2 n$ N+ v# |1 k" B# u; L
  2900. (command ".circle" c a)
    . I* d+ p( Z# ]6 M' g' A' [
  2901. (princ))) X& t. y0 O0 P: ^, M6 [
  2902. ) Q% Z1 v3 V( C
  2903. (defun c:ga10 (). h( j. S3 h& ^5 c) y+ Y2 \  p* W
  2904. (setq a (getpoint "\nChon diem: "))
    + O  N, K9 ^- H" }: s8 X. q5 R
  2905. (setq b (getpoint a"\nChon diem: "))
    & ]! Y3 M, t; q, s
  2906. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))" `2 t) s! S" p. J1 G3 r) ^; D7 ~
  2907. (command ".line" a c "")% m& ]3 Q3 Y& ~5 z- i: W
  2908. (command ".array" "last" "" "p" c "10" "" "")8 I/ O* U+ U; Z' B
  2909. (command ".circle" c a)
    & |1 V/ m$ H1 ?, V+ Y3 Q, E! I
  2910. (princ))  g1 v7 Y% k- w1 m
  2911. 9 ]  y+ }, @6 _0 ]6 ~; G" @4 }9 U; q
  2912. (defun c:ga12 ()9 U  t  N) C- F/ x
  2913. (setq a (getpoint "\nChon diem: "))
    8 q/ {4 j0 \4 P& I
  2914. (setq b (getpoint a"\nChon diem: ")), t+ r4 i: T3 A
  2915. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    . H  M7 h' y3 k# _7 N2 v1 Z1 O
  2916. (command ".line" a c ""), d" I, `: w# t# F) Y( E7 K
  2917. (command ".array" "last" "" "p" c "12" "" "")* s. |* |3 ^3 w
  2918. (command ".circle" c a)9 m4 L6 O7 H& q/ h6 h
  2919. (princ))
    6 R" e' E1 w1 C+ R1 o5 _! J

  2920. * u2 s& ~# O' d. P
  2921. (defun c:ga14 ()
    ! Z, g9 ^# c8 a: u; ~
  2922. (setq a (getpoint "\nChon diem: "))
    , [* A# E, ~/ M8 [0 V+ X& L2 J
  2923. (setq b (getpoint a"\nChon diem: "))
    : ~. E6 Z; @# M6 P
  2924. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    6 P* r/ z: W) ?1 }( Z
  2925. (command ".line" a c "")
    % ~& S4 d" w# m4 _3 a2 A% Z
  2926. (command ".array" "last" "" "p" c "14" "" "")
    / j. r( G+ X8 V/ _- a% U% P
  2927. (command ".circle" c a)
    * p5 E6 C- [# W, ]( O
  2928. (princ))1 z! l* I) S) X( H( L: D" H

  2929. * Q$ u- W  x# F: r' f
  2930. (defun c:ga16 ()
    # ~. Q& ~& l' o, m! |1 q
  2931. (setq a (getpoint "\nChon diem: "))
    2 E$ H  d* M% `2 \7 Z; J' H4 I+ U7 x
  2932. (setq b (getpoint a"\nChon diem: "))
    . U; I+ [6 E6 I" f
  2933. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))( p; Q' m% F+ O) d' |; {0 H4 }
  2934. (command ".line" a c "")
    & b) O" ]* s8 G6 s3 O. }5 f
  2935. (command ".array" "last" "" "p" c "16" "" "")2 Q5 Y( `. f/ F) ?0 Y) V
  2936. (command ".circle" c a), E: |/ |8 d8 [+ M
  2937. (princ))$ |: J; ]% F$ z9 y4 [$ b

  2938. 7 K7 d3 E, Z- ~4 B) E
  2939. (defun c:ga18 ()" C5 [9 H2 T5 k: K
  2940. (setq a (getpoint "\nChon diem: "))
      R2 M; \9 Q* e* d& F8 b
  2941. (setq b (getpoint a"\nChon diem: "))
    $ i# Z" A  g  X7 ]6 z7 m$ [3 m
  2942. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    3 N( {6 j* R5 v7 l8 x( o: |/ M
  2943. (command ".line" a c "")
    * Y  x0 B8 L6 Q3 x2 d
  2944. (command ".array" "last" "" "p" c "18" "" ""), B% ?* u9 Y, h. q# D. U% O( Y  H
  2945. (command ".circle" c a)  m  A: A1 ?' W* c% X& D
  2946. (princ))
    7 l/ r1 i+ y) ]) X! i. N' B: H, }

  2947. 1 n  f+ B% D1 J. P9 r$ J* @1 \" x
  2948. (defun c:ga20 ()
    6 V4 D, }3 V0 Y6 @2 L8 k, _
  2949. (setq a (getpoint "\nChon diem: ")), S, Y$ }- O3 @3 _" y
  2950. (setq b (getpoint a"\nChon diem: "))
      p# [! _$ r: F* c/ r& t5 o
  2951. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))- v4 q5 M/ G% j& c- ?) g
  2952. (command ".line" a c "")2 b- `: [" `6 a" s
  2953. (command ".array" "last" "" "p" c "20" "" "")
    3 R/ t' G6 N4 l8 q
  2954. (command ".circle" c a)
    * i; o- F  d) @  \) T1 K
  2955. (princ))3 k1 ~/ o0 a9 [6 N) J

  2956. 5 u. y3 F: z: W7 h$ `8 `2 O- R
  2957. ;=====================================================================
    # t" l$ J+ P6 U
  2958. ;============== FUNCTIONS GA TUY THICH : EVERYTHING IF ===============. L; a. ?% r$ M& O% c
  2959. ;========================== 06-11-2016 ~ 18h00 =======================! o% U5 a% i- f
  2960. ;=====================================================================
    - A( }9 C9 p+ B. a& y/ y" N
  2961. (defun c:ga ()3 Z( n# D% l- s. }# x+ l
  2962. (setq a (getpoint "\nChon diem: "))- n: D/ v- f" t
  2963. (setq b (getpoint a"\nChon diem: "))0 B2 q  o0 m  ^' p" }1 f
  2964. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    $ ]- m- O+ M+ w
  2965. (command ".circle" c a)
    % T% ~1 T4 h& p
  2966. (command ".line" a c "")
    3 ?% ]" k0 i8 Z
  2967. (command ".array" "last" "" "p" c "NUM" "" "")
    & ]: Y0 R, w" q+ ?
  2968. (princ))4 W; J  K7 m0 `4 `
  2969. 3 U* t; {" e. i' X6 k% r7 v3 T
  2970. ;=====================================================================2 h, x6 V4 Y. m4 c
  2971. ;=========== FUNCTIONS HOA THI TUY THICH : EVERYTHING IF =============
    & P! r! g9 ?3 r1 h
  2972. ;========================== 06-11-2016 ~ 18h40 =======================
    + J" w/ q- Q' \! G$ m2 t
  2973. ;=====================================================================
    - J( `$ s* Q6 |* u& |
  2974. $ b  |: z+ Y3 b5 n! U) T
  2975. (defun c:hoathi ()
    $ ^' ?8 I1 ^. z6 Z5 h# f! g2 }# H
  2976. (setq a (getpoint "\nChon diem: "))
    , f  ^/ V& Z, G9 b& t8 t- D
  2977. (setq b (getpoint a"\nChon diem: "))
    3 {: T; ~' }4 K" V% U
  2978. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))% c! ]' Q( b5 n# N2 E
  2979. (command ".line" a c "")# J* A$ {3 v! J4 k. n8 J
  2980. (command ".array" "last" "" "p" c "NUM" "" "")
    " G& {  a  |! R6 k# ]8 |7 j% D' o" y
  2981. (princ))+ V- V6 l0 k' \  W6 X3 H
  2982. 9 h( K: W' }* \6 y5 D
  2983. ;=====================================================================# `# F% `5 `# u  D8 u7 I
  2984. ;============= FUNCTIONS CUNG TUY THICH : EVERYTHING IF ==============
    * r2 _1 ~& O+ H0 Z: V: Z- w2 V, Y
  2985. ;========================== 03-11-2024 ~ 19h33 =======================
    4 y* e% i! Z; W% O* _  y! C8 f8 n
  2986. ;=====================================================================
    . @! h; m! @# y' }( }3 ]& z

  2987. 0 I1 l; N0 E( K( ^
  2988. (defun c:cung ()
    # d: n( h6 X9 Y: B
  2989. (setq a (getpoint "\nChon diem: "))/ b1 @3 _5 }3 O, O8 e
  2990. (setq b (getpoint a"\nChon diem: "))
    ! P& z% g- Q- U4 A# b0 J: ^
  2991. (setq c (getpoint a"\nChon diem: "))
    5 B/ r- m2 U- N1 z% Z1 D: G+ u
  2992. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    6 q8 \% U9 J7 Z% `% g
  2993. (command ".arc" a b c "")
    ' _8 e$ [! \$ D/ q) t
  2994. (command ".array" "last" "" "p" c "NUM" "" "")4 R2 J" o* g8 N6 I! {
  2995. (princ)); [' l. `# E. f# P5 Z" ~

  2996. 8 b$ ~, W7 i$ ]  d
  2997. ;=====================================================================& [; H% y% d' ]7 t1 H- p
  2998. ;============ FUNCTIONS HECLOIC TUY THICH : EVERYTHING IF ============
    : x9 [9 s# h1 h9 R+ D5 t
  2999. ;========================== 03-11-2024 ~ 20h02 =======================# r2 j! K3 K; d
  3000. ;=====================================================================* {" \* e# z& T4 F5 R0 F

  3001. 3 p6 `& C$ v3 f% g
  3002. (defun c:hecloic (): x& H: b; N& u/ F# `: F: L3 a
  3003. (setq a (getpoint "\nChon diem: "))
    # d' m# m$ t/ |4 p' o
  3004. (setq b (getpoint a"\nChon diem: multi "))( z" ]+ x" s2 b
  3005. (setq c (getpoint a"\nChon diem: "))(princ): I+ _: B: h' z! B2 v* t5 r5 B+ [  o
  3006. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    , |' m3 V8 [3 u* _8 P
  3007. (command ".arc" a b c "")
    7 y4 J& Y. L. G/ c) f, k- x
  3008. (command ".array" "last" "" "p" c "NUM" "" "")/ r# ~# N4 J* h( C* H6 v  A
  3009. (princ))4 `1 |: s: g' u6 w! @

  3010. ' n% o' j/ N1 O$ c& a. {$ f
  3011. ;=====================================================================; K! o# E9 g2 ^3 @
  3012. ;============== FUNCTIONS GAY TUY THICH : EVERYTHING IF ==============: c3 S: ~- L* a, `& ?
  3013. ;========================== 03-11-2024 ~ 19h38 =======================1 ?) `" y/ V+ A2 l( J3 o
  3014. ;=====================================================================
    3 N& `& k6 K/ z  U' X

  3015. " w& ~# {$ P- G: B" o0 k( K
  3016. (defun c:gay ()' ~$ j+ ]/ k% `, J: h! G3 n
  3017. (setq a (getpoint "\nChon diem: "))
    9 z, w. g9 T4 J8 @
  3018. (setq b (getpoint a"\nChon diem: "))# [( p, P8 {8 ~% x
  3019. (setq c (getpoint a"\nChon diem: "))(princ)$ P+ j4 `; D9 j: t& Y. `% ?0 K
  3020. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
      H- ?/ W% V; t; X: i. T
  3021. (command ".pline" a b c "")
    " U6 c5 q& L  W6 X5 Y; _
  3022. (command ".array" "last" "" "p" c "NUM" "" "")& T; A- b4 j9 x8 o! [4 _. ]
  3023. (princ))+ i' m6 u* F9 S6 E

  3024. 7 g9 z# }; z- s* F/ f
  3025. ;=====================================================================
    8 X5 y. {! Z$ K$ r, c  H
  3026. ;============ FUNCTIONS HECLOIT TUY THICH : EVERYTHING IF ============  K9 a* w9 l0 p& C% i2 O: _
  3027. ;========================== 03-11-2024 ~ 20h02 =======================
    1 v/ {; f: a5 h. w
  3028. ;=====================================================================
    $ S. p1 p' N, g. _5 {- W9 c
  3029. $ N: v4 n/ V7 ]0 V
  3030. (defun c:hecloit ()9 {. `) X5 M; L: s! E
  3031. (setq a (getpoint "\nChon diem: "))
    1 M  e' F2 e& |2 m* A& h  |$ `
  3032. (setq b (getpoint a"\nChon diem: multi "))* F4 q7 u4 a4 v: `3 d3 m" q! b
  3033. (setq c (getpoint a"\nChon diem: "))(princ)
    . \# E- [( L8 U* ]
  3034. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))" J5 o: ?& j& l' j
  3035. (command ".pline" a b c "")* N% g$ ^* |8 p4 \( g2 p
  3036. (command ".array" "last" "" "p" c "NUM" "" "")
    5 s8 C( C* k; v" }0 Z$ Z- \3 _. c
  3037. (princ))6 C& }1 e& v( i% m4 o2 }( C
  3038. ! @1 h/ ?2 \" f% Z6 z

  3039. ( M$ X, k0 a  ?. J  b! ^' i
  3040. ;;; ============================ Merge Hatch =============================' O2 [) J) g% C2 C

  3041. / D" L. [3 h& y
  3042. (defun c:mh (/ ss entht sl i dt dtht)
    9 X5 b& X) ~4 _. _6 M% u6 ]7 t# x
  3043. 7 U& x5 T/ b: x3 @3 N) F
  3044.   (princ "\nMerge Hatch - free lisp from CADViet.com")
    # a0 c) p/ q8 C; B

  3045. . |) Z9 `' e3 \2 t" _3 }6 M8 @
  3046.   (setq
    ) c' p* r& O  {4 N& j0 o& s/ x
  3047.     ss (ssget '((0 . "HATCH")))% U# d7 @$ ~1 J# a& g& ^5 F4 \$ O! J
  3048.     sl (if ss! z/ r+ I1 |1 d/ a, h; L4 c6 r
  3049.          (sslength ss)
    5 K8 X* `, x+ O, i
  3050.          0
    , o5 ]6 m8 Q7 n
  3051.        ), _$ K7 _) O7 ^/ w& B6 _. H9 w
  3052.     i  0% Y/ d4 H2 K% v- z' {" F
  3053.     l  0
    ; F1 [0 p1 H  _3 [4 z- c; R! N$ e
  3054.   )# m0 [- m% k. k

  3055.   Z5 [4 e/ S: F- z* N
  3056.   (repeat sl; B/ j: G- i/ P/ D
  3057.     (setq
    ( r9 Q2 i  a# z. @3 d$ M& x
  3058.       entht (ssname ss i)
    ) b6 w1 |0 [, p# s7 T* ]2 C
  3059.       dtht  (getbdata entht), W, W* w- I* e! N+ M/ k* L; b
  3060.       dt    (append dt dtht)( `' X3 S+ z5 p# p6 I. u
  3061.       l            (+ l (cdr (assoc 91 (entget entht))))' ~8 n( Z( l* A9 @2 j
  3062.       i            (1+ i)
    . |( M/ p' r7 K6 ]8 D6 _! s
  3063.     )
    2 ~+ u/ G4 M" t* k
  3064.   )9 R4 g: L6 j5 Q" V

  3065. 6 }8 Y' z, O$ L% O0 K" e( d  W
  3066.   (setq        ent  (ssname ss 0)7 w0 @4 F- ]6 y0 Y" q
  3067.         ss   (ssdel ent ss)
    & U4 l5 a! t, b. N& C! z9 W
  3068.         tt   (entget ent)
    , ^  d  Q# z% a# f0 k/ x" D
  3069.         duoi (member (assoc 75 tt) tt); @0 s$ C1 @$ T
  3070.         dau  (reverse (member (assoc 91 tt) (reverse tt)))
    ' ]) @- C# S8 o4 ^5 y: `0 L% i3 r  D
  3071.         tt   (append dau dt duoi)4 x, B. E2 }4 ]7 F
  3072.         tt   (subst (cons 91 l) (assoc 91 tt) tt)
    ' f" n& Y1 F( F' V- d2 k
  3073.   )
    ) b1 i$ H1 I/ I# K. g  M9 }
  3074.   (entmod tt)1 `% R  O( b7 I% @" x; T

  3075. $ |# V# s2 |% t
  3076.   (command ".erase" ss "")
    # T( ~: T' @% u! b$ ^: d! e
  3077.   (princ)
    4 F& I) F8 p5 P3 {) f: M  V
  3078. )# R" n+ u0 u  Q! _  A3 N1 [
  3079. 7 `! D) o" O3 g1 m- E& ]4 N/ ]* T
  3080. (defun getbdata        (ent)# d) \" F7 A, T( ]0 p& N
  3081.   (setq        tt (entget ent)
    & _  t& `" V$ a  T! B7 g+ P/ M
  3082.         tt (cdr (member (assoc 75 tt) (reverse tt)))" ?8 ^, K0 r9 o% G) R+ l
  3083.         tt (cdr (member (assoc 91 tt) (reverse tt)))! D3 i$ D' ]' V, J- C  g
  3084.   )( k1 J7 q( g* V3 U& K% ]3 Q
  3085. )
    . l! P, i8 l; V

  3086. # y( j6 @! m1 R$ S- n

  3087. : D: c5 D% z! ^
  3088. (princ)
    & S. i: L+ l' B
  3089.   \( ~& J  P/ S! [8 M* t8 s
  3090. ;;; =========================== CAC LENH LAYER ==============================
    ; e/ `' m0 h& p$ f
  3091. ;;; =========================== Layer hien hanh =============================
    0 x- @9 A  T2 C. N% K. ?/ |* m

  3092. 5 F3 C8 }, t( j! v# {+ Y. d- t
  3093. (defun layset (/ LAY) (setvar "cmdecho" 0)( P7 {- u, t" k: z$ \
  3094. (setq LAY (entsel "\nPick vao doi tuong muon Layer hien hanh la Layer cua doi tuong do : "))( t; x+ ]3 y4 U$ q
  3095. (if LAY     (progn     
    , X% N# U4 u- k# m( \
  3096.   (setq LAY (cdr (assoc 8 (entget (car LAY)))))1 i5 N9 Z, y9 Y4 d6 c- h
  3097.   (command "_.layer" "set" LAY "") (princ (strcat "\nLayer : " LAY " da la hien hanh."))  )
    ; e" h4 b$ |; q; _. n) Z; X' x
  3098.              (progn
    / Q& l: ^6 e1 Y3 A" h" F2 e
  3099.       (if (not ddlop) (load "ddlop"))  (if (setq LAY (ddlop)) * B( v  X5 Q3 n
  3100.              (progn  F, W) K* d/ i8 K
  3101.             (command "_.LAYER" "ON" LAY "THAW" LAY "SET" LAY "")  (princ (strcat "\nLayer : " LAY " da la hien hanh.")) ) ) ) )(princ) )
    2 @' P( a! C1 ~& U( W
  3102. (defun c:LLL     () (layset))(defun c:LAYSET () (layset))4 E; y4 P+ O0 d: |! P( `
  3103. 9 ?+ F9 H) U$ t
  3104. ;;; ================== Cap nhat doi tuong vao layer hien hanh ==================$ C! N& x3 R. Y7 u4 ~
  3105. ; M1 j9 s1 j0 m( \' S( S
  3106. (Defun LAYCUR (/ SS CNT LAY)  (setvar "cmdecho" 0)
    ) E6 D: j. r: g. E+ L) N/ Y
  3107.   (if (not (setq SS (ssget "i")))
    . r& g, I5 T6 w, }
  3108.     (progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: ")& d5 n0 i4 ]8 q, t7 i6 Z
  3109.       (setq SS (ssget))    )  )9 p9 U% L! Y3 E
  3110.   (if SS    (progn: E+ x: o$ ^7 _  [( N; _: H
  3111.    (setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " doi tuong tim thay."))                  (command "_.move" SS "")                      ; m, x  X& `' E: q4 G
  3112.       (if (> (getvar "cmdactive") 0)                3 {/ `! E2 p; l- I
  3113.         (progn! D4 W8 P8 |: R9 B1 F
  3114.           (command "0,0" "0,0") (setq SS  (ssget "p") CNT (- CNT (sslength SS))    )   )4 G; z* z& v% O' @
  3115.           (setq SS nil)     )  (if (> CNT 0)                                 
    . ~$ P2 I" D/ e
  3116.           (princ (strcat "\n" (itoa CNT) " doi tuong tren layer LOCK.")) ) ) )
    + K- l7 [) `9 R* E. [( i* a
  3117.   (if SS    (progn: Q4 {+ N+ s/ H5 x0 \
  3118.       (setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")% L* K: Y6 z9 ]% t% U" f
  3119.       (if (= (sslength SS) 1)
    ' P7 S' `6 Y& u! q2 ]" O
  3120.         (prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))5 v( m2 h. g" Y' U& m5 H
  3121.         (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) ))  (princ) );end2 u* ^1 q4 V7 C% p
  3122. (defun c:LAYCUR () (laycur)) (defun c:LHH    () (laycur))* _- A3 q) }3 z

  3123. 7 {2 v5 I% x* @; N4 M
  3124. ;;; =========================== Layer Iso ===================================, c5 Z# j+ g- E" Z
  3125. , W+ F. B% I5 J) b/ V" K
  3126. (Defun LAYISO (/ SS CNT LAY LAYLST VAL)  (setvar "cmdecho" 0)
    2 I6 W) A3 B1 N# v
  3127.   (if (not (setq SS (ssget "i")))    (progn: f+ m7 ~7 J7 ~0 @2 E2 o. Q$ Z% u
  3128.       (prompt "\nChon doi tuong tren layer(s) muon lam viec doc lap: ")* t0 Z2 ^+ m) X2 D
  3129.       (setq SS (ssget))    )  )" |, I$ o, E$ X' n% r, }
  3130.   (if SS    (progn      (setq CNT 0)
    6 C4 [  T2 u' @7 W: P- |
  3131.       (while (setq LAY (ssname SS CNT))
    " Q/ a4 v0 ]$ `  A+ F0 q
  3132.         (setq LAY (cdr (assoc 8 (entget LAY))))
    " Y& P5 a% n4 X7 E5 |' o6 |" V
  3133.         (if (not (member LAY LAYLST))' |4 C+ k6 m8 S4 C8 J# W3 I" r
  3134.           (setq LAYLST (cons LAY LAYLST))        )% t3 m$ L0 s/ S, F
  3135.         (setq CNT (1+ CNT))      )
    6 i* m$ V' Z) g/ A. _
  3136.       (if (member (getvar "CLAYER") LAYLST)+ n# }4 t" ~( _& C. U& H+ Z
  3137.         (setq LAY (getvar "CLAYER"))* t7 C5 K0 c  L: K4 H9 _' F
  3138.         (setvar "CLAYER" (setq LAY (last LAYLST)))      )
    4 m1 \3 Q: r5 s1 ]* F. Z, Q
  3139.       (command "_.LAYER" "_OFF" "*" "_Y")- L& J/ r) ^$ n9 f2 N8 u
  3140.       (foreach VAL LAYLST (command "_ON" VAL))
    * M+ V7 i& b, d# S. ~9 z+ p
  3141.       (command "")            (if (= (length LAYLST) 1)
    ! H0 I" j( \5 u1 `3 j! f
  3142.         (prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))
    - F  [! U8 M& N" `/ }
  3143.         (prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "& I; v* d, w; C; i# P1 G9 G
  3144.                         "Layer " LAY " la hien hanh."   )  )  )  )  )  (princ) )
    1 R  v  {9 M3 r$ e) ~" [
  3145. (defun c:LAYISO () (layiso)) (defun c:LI () (layiso))
    $ r9 d+ {0 `5 w% v  x: k2 ~  n$ _. B

  3146. 6 B7 i, S2 }* A- B
  3147. ;;; =========================  Layer Match ==================================! m$ B4 B9 \: ~: G- y
  3148.   B, Z2 x5 X+ T) I
  3149. (Defun LAYMCH (/ SS CNT LOOP LAY ANS)
    # H  @- m) E) ?7 H, a2 l6 ~
  3150.   (setvar "cmdecho" 0)8 L. C- p4 H) i+ a
  3151.   (if (not (setq SS (ssget "i")))    (progn! D/ X" \1 _9 V
  3152.       (prompt "\nChon doi tuong muon thay doi Layer : ")
    # h- p6 s4 n& \5 Y, a
  3153.       (setq SS (ssget))    )  )
    ) t3 i$ d; |: b8 j" @0 B
  3154.   (if SS    (progn
    6 N% v% r' \3 S* e$ e6 d
  3155.       (setq CNT (sslength SS))! o8 D3 b0 `5 j9 c- A
  3156.       (princ (strcat "\n" (itoa CNT) " found."))  (command "_.move" SS "")                        
    $ X) j& S  i2 B" k
  3157.       (if (> (getvar "cmdactive") 0)   (progn/ M  j+ ]! \5 Y: D* i( b* u; j/ P1 S7 w
  3158.           (command "0,0" "0,0")  (setq SS  (ssget "p")
    6 |( b' X$ K, }, Z! U5 `" t  \1 n( S
  3159.                 CNT (- CNT (sslength SS))    )    )+ T! A* V  Z$ r) t' n6 E5 N: \
  3160.         (setq SS nil)      )  (if (> CNT 0)                                    
    6 b, u! I$ ?; B: J+ f5 Y# z
  3161.           (princ (strcat "\n" (itoa CNT) " tren layer LOCK.")) ) )  )6 a$ C- e2 d9 w  J
  3162.   (if SS    (progn6 `9 Y3 B7 R7 b
  3163.       (initget "Ten")  (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")  LOOP T  )
    ) N3 m1 Y7 [1 L! y
  3164.     (while LOOP        (cond
    3 l( {! f% Y0 m5 i2 e
  3165.           ((not LAY)3 H1 v2 F; h9 o5 b5 ]' N
  3166.             (prompt "\nKhong chon doi tuong."), G0 Z* e* x# D% C9 W
  3167.             (prompt "\nSu dung layer hien hanh? <Y> ")
    ; M: v% _+ H* _
  3168.             (setq ANS (strcase (getstring)))/ s/ Y* h) I1 g7 o8 _# \- B% j
  3169.             (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))
    . p2 T6 |- f) ?. g: s
  3170.               (setq LAY  (getvar "clayer")  LOOP nil )  )  )* W1 _# C! [* c% c1 G* @' a' B% s
  3171.           ((listp LAY)  (setq LOOP nil) )0 l1 p8 K2 R0 m% T+ d. s1 _
  3172.           ((= LAY "Ten")/ g0 U: u" b8 [8 h! C; ~
  3173.             (setq LAY (getstring "\n>Nhap ten layer: "))
    * ?0 V! C& ~+ ?" b+ }, y, _( z6 `" D
  3174.             (cond
    ' |1 t, E& S+ M) G
  3175.               ((tblsearch "LAYER" LAY)  (setq LOOP nil)   )
    ; o2 _( i8 C/ I: ^& E5 q+ v
  3176.               ((/= LAY "")
    ! i. m% E% L2 Y& ^- v1 z
  3177.                 (prompt "\nLayer chua co trong ban ve. Tao layer moi? <Y>: ")# @0 N# o+ w4 Y+ P7 p2 C
  3178.                 (setq ANS (strcase (getstring)))5 u/ K7 L9 ^# s- S+ S9 g6 F
  3179.                 (if (or (= ANS "") (= ANS "Y") (= ANS "YES")), f5 `& o/ x4 c0 O; T' \" P  J, o
  3180.                     (progn
    / @/ i9 J* O. f& d
  3181.                         (command "_.LAYER" "NEW" LAY ""): H( N4 j6 q; R2 i4 l* R* V
  3182.                         (setq LOOP nil)   )
    4 z  ?) M  B9 B. N  [9 u& m+ i$ C
  3183.                     (prompt "\nLoi ten layer.")   )   )  )  )   ). O( `3 c2 K% B; X
  3184.         (if LOOP  (progn (initget "Ten")/ s$ ^, Y' \+ I
  3185.             (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")) ) ) ); while LOOP
    2 M0 ]4 v# v* Z' a7 E/ G% o- N# ^
  3186.         (if (listp LAY)
    & {  F% g, \1 t. f
  3187.         (setq LAY (cdr (assoc 8 (entget (car LAY)))))      )
    ( L3 w2 Y0 L" C- J; Z% E
  3188.       (command "_.chprop" SS "" "_la" LAY "")! ^1 a4 Y; W4 _" e3 E" n+ M' |
  3189.       (if SS  (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong thay doi toi layer " LAY )) )
    - w8 Q# A( w7 D
  3190.       (if (= LAY (getvar "clayer"))- w- g( ^' S9 x- A# J3 Z
  3191.         (prompt " (layer hien hanh).")  (prompt ".") ) ) )  (princ) )
    $ l% B7 A* v$ B+ \5 j& n( O/ d
  3192. (defun c:LAYMCH () (laymch)) (defun c:CLL    () (laymch))
    , T* T' A/ G6 C$ A9 L: R' w& v. @
  3193. * w. Q8 }8 S* z- |* L% A- \
  3194. ;;; ============================ Layer OFF =================================
    # u, R$ y/ z, K( A! d; [
  3195. ; l& k1 N7 S8 D0 a4 k
  3196. (DEFUN C:LJ (/ SSET SSL ENT LAY I MODE)2 T9 C  l0 H4 n/ [' w1 J' U# l/ P1 F
  3197.    (SETQ SSET (SSGET)): u( @+ w9 a2 _; y1 M
  3198.    (IF (/= NIL SSET) : h0 ]/ e+ T# W% Y8 R5 t( [' ?6 Y* F) H
  3199.     (PROGN4 t$ R* e* s1 y+ v7 }  d
  3200.      (SETQ SSL (SSLENGTH SSET))
    8 ]# M- Q0 M* n0 ?
  3201.      (SETQ LAY "")
    5 x* Q  z5 \% m4 M0 o4 i
  3202.      (SETQ I 0)3 K) y# _9 x6 m+ A: n
  3203.      (SETQ MODE 0)
    ) L  N6 X- T$ C, D2 Q! P" W- V* z
  3204.      (WHILE (< I SSL)" q4 M! t! n6 T
  3205.                  (SETQ ENT (ENTGET (SSNAME SSET I)))
    9 c8 m9 x$ L5 Q+ u
  3206.           (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
    0 j# L) V+ X1 E3 ], X7 Q* f( E* a
  3207.           (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) ))- Y2 C/ N; y! I  u! [
  3208.           (SETQ I (+ I 1))
    4 J% h- o2 Y+ V) I5 |( q6 j0 Y
  3209.      )% F$ z- B5 y3 O
  3210.      (COMMAND "LAYER" "OFF" LAY "")
    ! X; x1 C) P% O, n  @! N
  3211.      (IF (= MODE 1) (COMMAND "") )
    ' u# g+ H* T7 Q2 g& l
  3212.     )
    * s1 ]7 V, f3 h9 f9 S
  3213.    )
    $ `% v) H! ]. n/ ~
  3214.    (PRINC)) B: i! f" Q% C% \$ G
  3215. )
    / C9 {" X- C) N  P$ a
  3216. - K1 g0 Z" G, y/ `0 A
  3217. ;;; ================================ Layer ON ==============================3 h" l7 z6 s: n! m4 E
  3218. ' v; q1 A# G% Z1 X' W% r- f
  3219. (Defun LAYON ()  (setvar "cmdecho" 0)
    ( A/ P* f( i5 z
  3220. (setq Lay loff1) (setq Loff1 Loff2) (setq Loff2 Loff3) (setq Loff3 Loff4) (setq Loff4 Loff5) (setq Loff5 Loff6) (setq Loff6 "0")+ g# c, T' }  J/ x% G
  3221.   (Command "LAYER" "ON" Lay "") (princ (strcat "\n      Layer : " LAY " da ON."))  (princ))
      C" Q$ I7 B/ ^0 r+ ^
  3222. (defun c:LAYON () (layon)) (defun c:LOO   () (layon))7 K# k& E9 \( S
  3223. (Defun C:LO () (setvar "cmdecho" 0)  (Command "_.LAYER" "_ON" "*" "") (princ "\nDa ON toan bo cac Layer !") (princ))
    9 i% r% O; J% G* l' X  j% U4 v  n2 ]
  3224. 3 a  A. g# W4 M" y' F* O
  3225. ;;; ============================== Layer Freeze ===========================
      y3 b! r8 x0 v) L7 K4 k" C

  3226. 9 j2 e* \2 W8 ^* b" i
  3227. (Defun LAYFRZ (/ LAY TEMP)(setvar "cmdecho" 0)
    ; i/ X% \; S8 T/ c( s9 Z  G: ?
  3228. (prompt "\nChon doi tuong tren layer(s) muon FREEZE: ") (SETQ SSET (SSGET))
    & z/ c3 n0 g$ L; z0 x" Q
  3229. (IF (/= NIL SSET) (PROGN2 C) K" O1 }7 u, D
  3230.      (SETQ SSL (SSLENGTH SSET))  (SETQ LAY "") (SETQ I 0) (SETQ MODE 0)
      J& K- F) i0 e) @/ s
  3231.      (WHILE (< I SSL)
    , u  _  {! o7 @$ J3 o) q
  3232.        (SETQ ENT (ENTGET (SSNAME SSET I)))
    3 n/ Y% Q! y1 s* {- Z  c: j: l
  3233.        (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
    / t" L' J' R% z, U
  3234.        (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )) (SETQ I (+ I 1)))+ I. Q5 G/ `* f0 Z, y
  3235.      (COMMAND "LAYER" "FREEZE" LAY "")
    6 f+ t9 R7 d2 P* J6 b
  3236.      (IF (= MODE 1) (COMMAND ""))))6 N, ~0 m9 `4 o% a
  3237. (setq Lff6 Lff5) (setq Lff5 Lff4) (setq Lff4 Lff3) (setq Lff3 Lff2) (setq Lff2 Lff1) (setq Lff1 LAY)
    9 ]4 b. R/ Q" t+ a% \; `
  3238. (princ (strcat "\n      Layer " LAY " da FREEZE."))(setvar "cmdecho" 1) (princ) )
    0 L( L- H) P* g' X" j! v
  3239. (defun c:LAYFRZ () (layfrz)) (defun c:LF     () (layfrz)). G' J: C+ S6 ^/ m
  3240. 5 J, S& B, B! \7 i6 N
  3241. ;;; ============================== Layer Thaw ===============================( |+ }1 `8 @- b5 S

  3242. - T& T  n8 U. x% i+ h7 R
  3243. (Defun LAYTHW ()
    + {+ f4 q  H! x
  3244.   (setvar "cmdecho" 0)
    + M4 T" h( V- _
  3245. (setq Lay lff1) (setq Lff1 Lff2) (setq Lff2 Lff3) (setq Lff3 Lff4) (setq Lff4 Lff5) (setq Lff5 Lff6) (setq Lff6 "0")
    $ G: {4 N; v% V
  3246.   (Command "_.LAYER" "_THAW" LAY "")5 z/ P9 a: K0 q  o; Q6 I
  3247.            (princ (strcat "\n     Layer : " LAY " da THAW."))
    3 ~' c, h* Q" N6 l- X
  3248.            (princ) )4 M* P  N% L- o( N4 W% X
  3249. (defun c:LAYTHW () (laythw)) (defun c:LW    () (laythw))4 H  v* L  H6 y9 B' d! z) Z

  3250. % h1 N. V7 e9 h
  3251. ;;; ============================== Layer Lock ==============================
    ; B- u* E: a% K' M0 N5 t
  3252. 8 p$ R% e. \& }) i; V! }
  3253. (Defun LAYLCK (/ LAY)
    : C( R7 Y+ X5 U2 h2 ?
  3254.   (setvar "cmdecho" 0)
    : I  }7 w- {( m4 M; ~+ o/ g  D
  3255.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon LOCK: "))
    " U5 `6 D( `- Q6 x
  3256.   (if LAY# X4 o" f. l6 g- {  |  Z( }
  3257.     (progn. T  P3 p* u, @4 T1 A, {
  3258.       (setq LAY (cdr (assoc 8 (entget (car LAY))))): B: v; a8 Q7 ~
  3259.       (Command "_.LAYER" "_LOCK" LAY "")
    0 o2 I3 X( H2 `9 Y' v0 q7 K
  3260.       (princ (strcat "\nLayer " LAY " da LOCK."))    )  )  (princ) )
    & M8 ^$ n( W* R
  3261. (defun c:LAYLCK () (laylck)) (defun c:LK     () (laylck))
    8 Q" ^% m3 f* t0 Y) \6 U; k
  3262. 1 ?& t/ F: w0 J6 Y. F% ]
  3263. ;;; ============================== Layer UnLock ==============================: y) x3 N; l3 G3 V& w4 N

  3264. 9 y# t( |+ p4 y' j, A
  3265. (Defun LAYULK (/ LAY)/ V4 B/ @9 b3 ^2 Q. a0 l
  3266.   (setvar "cmdecho" 0)( X# \) ?8 o+ P8 k: G% @* G
  3267.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon UNLOCK: "))3 R6 S, F1 w6 a# R1 G
  3268.   (if LAY, o: |0 \4 d' M$ g- W
  3269.     (progn' e7 P, }" A9 X/ n; `2 w
  3270.       (setq LAY (cdr (assoc 8 (entget (car LAY))))): n, {  w! R. B* d# e
  3271.       (Command "_.LAYER" "_UNLOCK" LAY "")3 Y- t9 @3 @8 c" ]$ G
  3272.       (princ (strcat "\nLayer " LAY " da UNLOCK."))    )  )  (princ) )4 r7 B2 \" T; }  W1 |& a, T7 r' B
  3273. (defun c:LAYULK () (layulk)) (defun c:LU    () (layulk))4 N/ C: K2 K/ M
  3274. - l. `  q( Y4 w$ K
  3275. ;;;===================== Delete all objects of Layer ========================  s: ]1 h: j% ^

  3276. 8 D  T0 {: P! }+ m0 z* Z& d
  3277. (defun DELAYER (/ ocmd L S)
    ) S7 @1 C8 h/ r
  3278.   (setq ocmd (getvar "CMDECHO"))6 ~2 z& m7 h( y) k# w
  3279.   (setvar "CMDECHO" 0)
    9 O3 `6 r' a1 C$ o" j) u( k
  3280.   (setq L (strcase (getstring "\nLayer(s) to delete: "))), C+ E" A, ^! m
  3281.   (setq S (ssget "X" (list (cons 8 L))))
    3 I$ V% ?: W5 f7 L( I* Z  r( `
  3282.   (if S - S" ^/ W" B2 `) Y& T+ K) P
  3283.     (command "ERASE" S "")            
    4 _( _  C+ t( b4 ]# {# w
  3284.     (princ "Layer empty or not a valid layer name.")  ) : L# ^3 g( M+ }! X5 k- p3 m- q
  3285.   (setq S nil)                        
    " C7 N* V$ a! W
  3286.   (setvar "CMDECHO" ocmd)             . C( ^: u6 _0 P% m7 p! ?8 i
  3287.   (princ) )
    - F! P9 z. \+ ~5 ^7 Y( i
  3288. (defun c:DELAYER  () (delayer)) (defun c:DELLAYER () (delayer)) (defun c:DEL      () (delayer))
    3 l) M$ t: W; l7 O5 v
  3289. $ `/ A  Z0 }: ~% Z( d4 j0 C
  3290. ;;; ========================= HET CAC LENH LAYER ===========================
    + Z  ]+ n& v, b  K8 b, F. M
  3291. $ `4 @# |" e( B' h0 V# Y
  3292. ;;;====================== EXTEND NHIEU DOI TUONG ===========================
    ( r5 T$ W, y3 M) ^* B

  3293. 4 x: p! c. ^/ F# I6 Z
  3294. (Defun C:EET (). P5 [4 {& Y( D" M( T, B3 J. Z
  3295.   (Setq CVAR (Getvar "CMDECHO"))  (Setvar "CMDECHO" 0)+ |" G( C0 L+ x: c9 j) ~' k
  3296.   (Prompt "Chon doi tuong dich cua EXTEND :")  (Setq CUTEDG (Ssget))- E. E" Y" `5 Y4 s) o
  3297.   (Prompt "Chon doi tuong de Extend :")  (Setq SS (SSget))  (Setq LEN (SSlength SS))# A' o3 `. Z; C! w
  3298.   (Setq I -1)
    3 W4 {# H  x/ ^
  3299.   (Setq SIDE (getpoint"Chon phia de EXTEND"))  (Command "EXTEND" CUTEDG "")9 a0 x0 p" D, M% T2 j% }5 e7 y
  3300.   (Repeat LEN4 V  y7 e. E8 D# S! r  D; l2 c
  3301.    (Setq I (1+ I))
    " k% {( ^5 X: h2 z' b% F8 T+ o
  3302.    (Command (List(SSname SS I) SIDE))  )  (Command "")  [( C3 D2 v$ Z5 s+ y0 G* I6 a
  3303.   (Setvar "CMDECHO" CVAR)  (Princ "Da Extend xong moi ban lam tiep")  (Princ) )8 c/ R* J8 M  k+ G3 a7 S8 l
  3304. , Q1 {5 D. ?! y3 A
  3305. ;;; ===============  EXTEND 1 DOI TUONG THEO KHOANG CACH ===============! D" A8 t) k# x8 U7 `$ F# H

  3306. 4 s$ u4 }' X8 M* k& v$ g
  3307. (defun c:ETT ()  (setq os (getvar "osmode"))  (setvar "osmode" 512)
    7 F( h/ V9 @2 ]; B/ e. I  ^
  3308.   (setq pt1 (getpoint "\nKich vao 1 dau doan thang can EXTEND  "))
    9 ^: ^9 D6 U2 P: t; H, f4 }+ J- b
  3309.   (setvar "osmode" os)- q; e4 X0 p8 b& H" J* k$ [2 ^
  3310.   (setq dis (getdist pt1 "\nKhoang cach can EXTEND :"))* f6 ?8 e# I. Q* i
  3311.   (command "circle" "endpoint" pt1 dis)  (command "extend" "last" "" pt1 "")  (command "erase" "last" "") (princ))* {2 p  R+ ~) B+ S2 X* L( ^

  3312. ! [+ _3 M' P* |; v8 _: H  f% Y
  3313. ;; ================ Change width of polylines =========================* [" w2 L0 |, U; x% b3 y
  3314. / R$ P8 U1 S- y% @1 j
  3315. (DEFUN wp (/ a b sophantu sodem list1 ha:wid)$ D; W% S' X% `* @8 w; U6 C- X8 Q
  3316. (PRINC "\n         Chon doi tuong can thay doi do day (Width) !")
    ( D7 ^/ k4 C+ @0 W9 G' c( d; r$ }
  3317. (setq b (ssget)) 9 @% Z& p- l" ]* u
  3318. (setq sophantu (sslength b))   X* M3 D* O9 l1 q6 o6 C
  3319. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))/ R2 S8 b$ j4 v' K9 o+ \4 `
  3320. (princ "\nDo rong polyline <")
    & A1 U+ _; z% i  ~* `' F  v
  3321. (princ ha:wid)
    9 X/ x7 g( N5 j3 v3 N
  3322. (princ ">: ")
    . W5 `7 t; ?( v  a. {0 B6 o- N0 ]/ Y
  3323. (initget 4)
    " f$ `) J6 e& c6 f1 e0 N6 A
  3324. (setq ha:wid (getdist))  m/ r. F6 d1 k8 A, H4 c: v* P
  3325. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))9 x- e/ ]* s+ r& g, B4 j7 K
  3326. (setvar "tracewid" ha:wid)0 l" m# t) P; e+ Z! w
  3327. (setvar "cmdecho" 0)
    2 V& |: r& h% a) P
  3328. (setq sodem 0) 5 i; Z$ H9 d% \9 a3 t% o
  3329. (repeat sophantu
    7 s; h6 [2 J, u* q& C5 T6 e
  3330.   (setq a (ssname b sodem))
    ) o% ?4 f! {0 `* D
  3331.   (setq list1 (assoc 0 (entget a)))
    ( _" b( g/ `( A4 |- g/ c# m: P
  3332.     (cond7 v% c% B; Q1 z7 b! S3 M
  3333.      ((= (cdr list1) "POLYLINE") (command "_Pedit" a "w" ha:wid ""))
    9 H9 \$ _! [# a5 n9 P
  3334.      (PROGN (command "_Pedit" a "" "w" ha:wid ""))    ) 7 i7 ?( j" d6 {/ i. P! s" k: x, b
  3335. (setq sodem (1+ sodem)) )(SETVAR "cmdecho" 1)(princ))$ z1 `4 Y; w; b. x0 l
  3336. (defun c:wp () (wp)) (defun c:pw () (wp))
    ; M; |/ Q% [! Q4 Q. i$ U! g. x

  3337. ' A) Z5 q: H, ?+ W9 n% |* n
  3338. ;; ================ Change radius of circles ==========================
    ) |9 V: [: J& X5 f; D6 [3 \1 s$ ~

  3339. & l5 I: Y0 F9 D$ O7 M
  3340. (DEFUN C:CHR (/ SSET SSL M RD I)   (PRINC "\nSelect Circles :")   (SETQ SSET (SSGET))
    - c; c  ~' n% n; p0 h6 T
  3341.    (IF (/= NIL SSET) (PROGN  (SETQ SSL (SSLENGTH SSET))  (INITGET 4 "")  (SETQ RD (GETDIST "\nNew radius : "))
    + m, B+ {9 o/ I% I& o/ Y# k
  3342.    (IF (/= RD NIL)  (PROGN (SETQ I 0)
    & H/ Q' H3 B* K9 H  q
  3343.    (WHILE (< I SSL) (SETQ M (ENTGET (SSNAME SSET I) ) )+ o8 \! k* m) D
  3344.    (IF (= (CDR (ASSOC '0 M)) "CIRCLE") (PROGN
    0 g$ j1 n* v+ \. y
  3345.   (SETQ M (SUBST (CONS 40 RD) (ASSOC 40 M) M))  (ENTMOD M) ) )  (SETQ I (+ I 1)) )      )   ))) (PRINC) )4 Z, B/ j# K; M; X# d& B
  3346. & M5 r# e0 j4 X" ]3 N7 p1 S: t& Q
  3347. ;;; ============================== TEXT Hight ===============================6 w' I4 m# J2 M' r$ Y
  3348. & i8 v5 q" c. R6 q
  3349. (defun texthght (/ ent hght)2 O' S- ]& q) L" r& p* n4 I/ _
  3350.   (setvar "cmdecho" 1)6 E1 o% I: q* U, W4 D" l
  3351.   (prompt (strcat"\nSelect text entity with required text height"))# L' R7 T* r: O6 C  S! a! f
  3352.   (prompt (strcat"\n."))+ e5 n2 O( ^9 H8 {
  3353.   (setq ent (entget (car (entsel))))
    4 N' K; w$ ~' R
  3354.   (setq hght (cdr (assoc 40 ent)))
    / B: F4 F+ N+ p0 `# r2 p
  3355.   (prompt (strcat"\nText height now set at "))(prin1 hght)
    & ~( V, ~, p% C
  3356.   (prompt (strcat"\n."))
    1 ]: S; j" g5 Y. {; N+ t
  3357.     (setvar "cmdecho" 1)
    : z% Y* M4 n6 D9 P, t/ i' W& j) {
  3358.     (command "DTEXT" PAUSE hght "") )6 @# t6 }, k8 o" T; W5 Y8 D
  3359. (defun c:teh () (texthght))  (defun c:texthght () (texthght))
    + [, |. E" i0 S5 v

  3360. 7 w2 b4 f" f, D) `8 g$ e
  3361. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    0 @% k- D( E  S' h! O" N& k6 z

  3362. / A0 F* Z& A9 n# R* Q
  3363. (defun c:tuu ()  (setvar "cmdecho" 0)
    # ]% y, h& D$ y9 Q- z9 E3 |5 i
  3364.     (prompt "\nHay chon dong TEXT can gach chan ")
    8 ~- j9 G, A# U7 s! H
  3365.     (prompt "\nSelect objects: ")& d7 H4 @& ]7 G
  3366.     (command "select" "au" pause)
    ! o: S  o2 F: k8 A% t1 H* ^
  3367.     (setq sstxt (ssget "p")
      }+ Q; D9 Z  N0 I1 K( T  \
  3368.           sslen (sslength sstxt)% x9 v' F6 Q% `4 q7 |; h" _/ D
  3369.           ctr 0    )
    2 u3 Z& v; }6 i- D8 i# [
  3370.     (command ".undo" "mark")
    5 |* w( a6 P" s) U* R
  3371.     (while (< ctr sslen)
    + A/ g& j) [: p2 z3 c
  3372.            (setq listxt (entget (ssname sstxt ctr))2 e$ m, C* D# c+ L4 t
  3373.                  txttxt (cdr (assoc 1 listxt)): B" O) u/ k; q
  3374.                  enttxt (cdr (assoc 0 listxt))   )
    9 m1 S; y8 U, h1 Z0 p1 I
  3375.            (if (= enttxt "TEXT")
    1 \3 b  O, \  W9 S. l  u3 p
  3376.                (progn/ B& k' ]0 N2 H
  3377.                    (setq testxt (substr txttxt 1 3))& t* @& }; e6 I4 b
  3378.                    (if (or (= testxt "%%u") (= testxt "%%U"))
    - d' |" H% D/ B1 y, R6 }% C" B+ }
  3379.                        (setq newtxt (substr txttxt 4))) A& i; E4 _/ C
  3380.                        (setq newtxt (strcat "%%u" txttxt))    )
    4 W- c  j* u* X2 s  e/ ]6 j
  3381.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    9 {0 K# l! j; ~  M0 p" G2 N
  3382.                    (entmod listxt)                ) )
    8 M3 r0 N6 x; E0 b) G
  3383.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    $ U' _6 f: H; @$ C
  3384. 2 B0 V; z# a3 u" W8 m
  3385. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    - ?8 F% Q1 p8 I9 `7 p! v( i9 X

  3386. ( I- h3 {, l! ?/ g$ ]
  3387. (defun c:tob ()  (setvar "cmdecho" 0)
    2 c" }5 k, ~, c2 [9 m' |
  3388.     (prompt "\nHay chon dong TEXT can gach tren dau ")
    ) M$ W" A8 t- B$ ?$ @( P
  3389.     (prompt "\nSelect objects: ")
    . T0 P/ f9 O6 {* |$ z
  3390.     (command "select" "au" pause)0 Q( w5 L! r9 c, M
  3391.     (setq sstxt (ssget "p"): n* S/ O1 J5 t3 p
  3392.           sslen (sslength sstxt)5 J3 M0 j: V7 ~& K
  3393.           ctr 0    )2 B! u/ x7 P% l% u
  3394.     (command ".undo" "mark")1 K5 h6 S; `# ?8 [
  3395.     (while (< ctr sslen)- }/ ?% H6 V+ M7 ^+ U+ u1 w& I
  3396.            (setq listxt (entget (ssname sstxt ctr))
    " B7 m6 s/ {, I8 H
  3397.                  txttxt (cdr (assoc 1 listxt))
    : |" y4 {7 `8 u8 Y
  3398.                  enttxt (cdr (assoc 0 listxt))   )
    , X; a3 Q4 }  w! R, O) Q* b( p
  3399.            (if (= enttxt "TEXT")
    ( Q$ z  X  f1 h2 U
  3400.                (progn9 G$ s$ f1 w: K' q1 s
  3401.                    (setq testxt (substr txttxt 1 3))1 ^' `# I3 `# b+ X9 X/ f
  3402.                    (if (or (= testxt "%%o") (= testxt "%%o"))& G4 T" g" W$ ?. o
  3403.                        (setq newtxt (substr txttxt 4))
    - o, E  X6 ~3 N
  3404.                        (setq newtxt (strcat "%%o" txttxt))    )+ P/ \2 K; o: \$ v
  3405.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    ; x5 c% X6 Q  ]" \; {, y
  3406.                    (entmod listxt)                ) )/ h" @: z" j: u/ \7 ~
  3407.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    6 q1 z- `5 x$ U/ @# M) g8 `# U
  3408. ) F: h  @# I8 z+ D
  3409. ;;; ========================== Tim & thay the TEXT ==========================
    2 m7 P5 p0 D& u  O# G; V" Z* H
  3410. , S, J' Y8 X9 z7 m( h4 l2 k# h
  3411. (defun frstring (str search replace / str1 str2 index find)7 _2 l+ E3 Y/ q  A8 d
  3412. (setq index 0) (while  (<= index (- (strlen str) (strlen search)))  (setq index (1+ index))
    ' A; [  F  A4 \3 _/ j
  3413. (setq find (substr str index (strlen search)))  (if (= find search) (progn    (setq str1 (substr str 1 (1- index)))
    , y/ o- v  F7 b1 Y* T
  3414. (setq str2 (substr str (+ index (strlen search))))  (setq str (strcat str1 replace str2)) )  ) ) (setq str str)). R# `7 c4 G' D. s9 a$ S" p, g% P
  3415. (defun hai (/ dial)' _; f6 S  V( }, L2 M
  3416. (setq dial (load_dialog "hai.dcl"))       ;;goi dialog
    ) h0 N2 }! K7 _* A, R8 H
  3417. (if (not (new_dialog "find" Dial)) (exit)) ;;; z) r$ E2 C* u- U8 y! E! g2 v
  3418. (mode_tile "find" 2); Tao dau nhac tai hop thoai, T* h; U! q8 K6 c
  3419. (action_tile "find" "(hai1)")' Z  k6 k/ H4 n) D: p8 ]: y( A) k
  3420. (action_tile "replace" "(hai2)")# i$ a8 N4 l0 n+ F0 c' l: K
  3421. (action_tile "cancel" "(done_dialog) (exit)")
    , N/ g" O% C2 z  `: k9 l: h
  3422. (start_dialog)      1 k9 ?' b" a( D5 v. M
  3423. (unload_dialog dial))
    - {; A( r! N0 Q! `, q
  3424. (defun hai1 () (SETQ str1 (get_tile "find")))9 a7 Z- G! }$ H$ X* w0 L. S
  3425. (defun hai2 () (SETQ str2 (get_tile "replace")))- }. i1 E' {' P# S/ O' e: ?
  3426. : H/ ]% c& [* ]4 B5 }
  3427. (defun c:TTT (/ a str str1 str2 newstr taphop sodem)7 H& f* Y' ]( r3 X5 l& c
  3428. (hai)
    6 `1 T' G( q% L
  3429. (if (or (null str1) (null str2)) (princ "\nDu lieu khong hop le"), [" Z8 g  _3 u8 W  ?# W
  3430.   (progn' l# l4 v9 d+ z- d3 a
  3431.    (setq taphop (ssget '((0 . "TEXT"))))
    + I/ z0 x( ~5 s) N' I) Q
  3432.    (setq sodem 0)  m& x( ?; v% U0 ^, R& g
  3433.    (if taphop/ U  ^- r. r2 F: K- k
  3434.     (progn2 z' D1 v+ ?1 c. s0 |# c, b2 h
  3435.      (Repeat (sslength taphop)
    ; w" J5 l/ j0 R
  3436.       (setq a (entget (ssname taphop sodem)))
    4 c7 C! Y  X" k! }' x! j: u
  3437.       (setq str (cdr (assoc 1 a)))
    ' o7 \1 ^" m* h2 y7 A+ A0 c$ H
  3438.       (setq newstr (frstring str str1 str2))" V" D) k2 J: w0 a
  3439.       (setq a (subst (cons 1 newstr) (assoc 1 a) a))' S5 y4 t7 M5 Y7 ?+ Q2 i' E* t
  3440.       (entmod a); H+ h3 S* }3 {3 E& a
  3441.       (setq sodem (1+ sodem))     )    )
    3 E+ I) u3 g3 n( p4 i% t
  3442.     (princ "\nNone "TEXT" selected")   )  ) ) (setq *error* olderr) (princ))
    # }4 L  O7 h" q4 a6 o
  3443. & a' W) ^9 B- o8 ^% B7 b  C+ V
  3444. ;;;=============================  CHTEXSTY.LSP =============================% J+ z# L' l* J/ j

  3445. 3 b# k. T+ s8 a1 ?9 O  q1 ]' w
  3446. (Defun C:TXS () (Setvar "Cmdecho" 0) (Initget 1 "SE ST ")# q7 C$ S" b: {5 ^0 j. h  v
  3447. (Setq G (Strcase (Substr (Getkword "STyle/<SElection>:")1 2)))
    & y0 ?0 p* h( v2 g: O5 F5 Y
  3448. (Cond ((= G "SE") (Setq A (Ssget)) (Setq B (Sslength A))' n) J( D/ Y6 n  m3 `) w" q7 `  Y
  3449. (Initget 1) (Setq C (Getstring "\nEnter new text style: "))
    ( j$ Q7 P+ a  S* [% U2 u/ g
  3450. (Extang C) (While (> B 0) (Setq B (1- B)) (Setq D (Ssname A B))8 E$ A$ P8 g: Z0 M
  3451. (Setq D (Entget D)) (Setq E (Assoc 7 D)) (Setq F (Cons 7 C))+ N8 K: {. }( \* r
  3452. (Setq D (Subst F E D)) (Setq H (Assoc 51 D)) (Setq I (Cons 51 J))( e8 z0 E: M/ D  B) a5 C
  3453. (Entmod (Subst I H D))) (Setq A nil)) ((Or (= G "ST") (= G ""))4 {. J6 k- q9 q% t% u' H, D
  3454. (Initget 1) (Setq A (Strcase (Getstring
    0 N' s& ?3 \7 E/ _- n
  3455. "\nEnter text style to change: "))) (Initget 1)
    " h! u" T, _3 ~; @1 ^3 G
  3456. (Setq C (Getstring "\nEnter new text style: "))(Setq D (Entnext))
    : ?0 F# L% j  `2 `$ e+ H+ {
  3457. (Extang C) (While D (Princ ".") (Setq E (Entget D)) (If
    / M' K9 B  ?* d  a9 t8 F' g- ?
  3458. (And (= "TEXT" (Cdr (Assoc 0 E))) (= A (Cdr (Assoc 7 E))))/ s: e! D) O0 y6 o1 R
  3459. (Progn (Setq F (Assoc 7 E)) (Setq G (Cons 7 C))
    . Q/ ^9 G3 N* X
  3460. (Setq E (Subst G F E)) (Setq H (Assoc 51 E)) (Setq I (Cons 51 J))8 C1 U2 N' T+ g( N/ q
  3461. (Entmod (Subst I H E)))) (Setq D (Entnext D))))) (Princ))
    2 x, d2 P. u" `' ?9 f. w# H
  3462. ( w0 [1 c" k6 I3 ?- n) `3 W
  3463. (Defun Extang (A) (Setq A (Tblsearch "STYLE" A))
    ; i* h, H! s8 U! W( _. f$ @
  3464. (Setq J (Cdr (Assoc 50 A))))
    ( a6 F- E4 H/ i( k1 x

  3465. 5 C1 i6 t/ S- c* U% f) |3 C8 C
  3466. ;;; ============================ DRAW CLOUD =============================
    " X, Q: R  j* T  l
  3467. , j2 W. h  e8 \- `- d- E: Q
  3468. (defun CLOUD (/ pt1 pt2 arc1 cnt ss la)    (setvar "cmdecho" 0)
    & D6 K3 \- O, N+ B$ g
  3469.     (prompt "\nVe cloud (may) khong khep kin - Tu khep kin ve diem dau!"), Q; O8 p# B+ l! B8 d
  3470.     (setq la (getvar "clayer"))0 s2 R) B! m6 n4 w9 ^9 J! S
  3471.     (command "layer" "m" "cloud" "c" "5" "" "")4 t+ Y4 z' \4 K7 |* p
  3472.     (setq pt1 (getpoint "\nEnter first point of Cloud: "))9 b7 x8 Z5 F0 g% ~' {# i
  3473.     (if pt1 (prompt "\nProceed in a COUNTER-CLOCKWISE direction...")). r5 D8 N0 c# l; R. i
  3474.     (setq cnt 1 ss (ssadd))+ z. M# R1 n% a3 d$ u$ P
  3475.     (while pt1 (setq pt2 (getpoint "\nEnter next point - and close: "))5 j( W6 b7 a* h& I6 j& W
  3476.     (if pt2 (progn (command "arc" pt1 "e" pt2 "r" (/ (distance pt1 pt2) 1.75))- Y2 ^* c& }0 T! z+ g3 O7 [
  3477.     (if (= cnt 1) (setq arc1 (entlast) cnt 2) (ssadd (entlast) ss)) ))& _6 ]% W, t+ D4 n7 h( s6 Q2 |/ B: \! M
  3478.     (setq pt1 pt2) ) (setvar "highlight" 0) (if (> (sslength ss) 0)7 s6 H! Q8 M6 q# j
  3479.     (command "pedit" arc1 "y" "j" ss "" "x")& D% M( I8 I3 a0 J% i4 I- o
  3480.     (if arc1 (command "pedit" arc1 "y" "x")) ) (setvar "highlight" 1)
    , }1 U& Y3 g6 i/ M& X. J
  3481.     (command "layer" "s" la "")    (setvar "cmdecho" 1)    (princ))  & e7 m! E$ C+ s9 D; {
  3482. (DEFUN C:CLOUD () (CLOUD)) (DEFUN C:CLO () (CLOUD))
    # g3 n$ s* z" ?4 E: ]% V' n! v
  3483. 5 u4 [% N. l( N5 t! i
  3484. ;;; ================================ Funtion-Dulieu ========================
    ! A. s% O4 F: J5 F/ J- s
  3485. ;;; ================================ Funtion-Dulieu ========================7 z0 Q2 _; J: Y) i& A, M
  3486. ;;; ================================ Funtion-Dulieu ========================
    ; P9 X- h. {* h: a" D; M
  3487. 2 F# i; D$ C: u- Y% b8 o# U
  3488. (defun ha:nhap (kytu thamso) (princ kytu) (princ thamso) (princ ">: ") (setq key (getint)) (if key (setq thamso key)) (princ thamso) )
    ( }) z' C( J: C
  3489. (defun ha:thoat () (reinit) (setq Temp "Da thoat khoi chuong trinh"))
    9 I. i) V* G( i5 A! I! Y/ |; `
  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)), U4 }# L4 |5 ~# z/ j
  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) )
    * j# e2 W3 F/ c- t5 u- R
  3492. (defun hauon (hauon1 hauon2) (command "fillet" hauon1 hauon2))
    2 E3 `& m8 o2 i0 }. a
  3493. (defun init () (setvar "blipmode" 0) (setvar "cmdecho" 0) (setvar "angbase" 0))8 q: ]/ O8 @1 q+ W4 a0 l1 V
  3494. (defun reinit () (setvar "cmdecho" 1) (setvar "osmode" 0))
    5 |. ?* u9 n$ n, I0 P7 Q
  3495. (defun tichvecto (vecto1 vecto2) (apply '+ (mapcar '* vecto1 vecto2)))
    0 z* |) y  P3 a2 x2 r, G# v! ~. D
  3496. (defun vectophap (v01 v02 / vectochiphuong) (setq vectochiphuong (mapcar '- v01 v02)) (list (cadr vectochiphuong) (* -1 (car vectochiphuong)))), A" b. E5 i4 P. P) V' ?9 j2 X" I% a
  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)))
    - R5 r8 \- L0 l4 i( }5 H/ q
  3498. (defun dtr (dtr) (* pi (/ dtr 180.0)))
    * B4 d# {4 l6 A$ ^& p6 x: d/ O
  3499. (defun rtd (rtd) (* 180.0 (/ rtd pi)))6 @8 i% @7 [" B5 [* b) R- d

  3500. 1 C5 d. f1 x3 h( D. P
  3501. ;;;==============================PROGRAME===============================" P2 o1 g7 I5 m: q! U2 f
  3502. ;;;=====================EditDiM Hien Hop Thoai Dep======================
    + C6 n: D" w2 ]# Z' t7 a* p) w  D
  3503. ;;;==============================PROGRAME===============================
    . t3 T- L* }  l+ \# }4 j( v- J9 c

  3504. $ n7 V, E+ c4 V- w, _  C$ U
  3505. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)' _5 {. ]( T7 T; I
  3506. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl8 b5 _: f; l5 @$ C" n
  3507. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)/ X4 _* y  a* b4 W% M( n% e' ~9 E. L
  3508.   (Setq Oldlis (Entget (Car Chon))% k  l, @( E, }8 O  M0 [
  3509.         Pt10 (Cdr (Assoc 10 Oldlis)). D/ g- F0 f* q* G4 a
  3510.         Pt13 (Cdr (Assoc 13 Oldlis))
    ; D9 x  N9 z* g* s. k+ P
  3511.         Pt14 (Cdr (Assoc 14 Oldlis))8 a; B4 m& x5 S( j/ h
  3512.         St  (Cdr (Assoc 70 Oldlis)). ^/ q6 v. }  C  w- d5 A
  3513.         Dimdefault (Cdr (Assoc 1 Oldlis))' J% P' q5 b/ W4 i
  3514.         )/ t$ @# M( y% k' ^) G6 n" B
  3515.   (Cond
    0 Y% n1 U- V& ~8 r
  3516.     ((Or (= 32 St)(= 0 St)(= 160 St))
    ( V! `' A( S) S
  3517.      (Progn) q$ \  Y: Y# ?" v! A$ F
  3518.        (Setq Ang (Cdr (Assoc 50 Oldlis))6 R" t" ?2 E) Z& B0 Q
  3519.              Pt (Polar Pt13 Ang 500): `+ y) g3 |; T# ~4 k6 g8 q, c
  3520.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)
    ) e* m/ h' I" Z) t
  3521.              Dis (Rtos (Distance Pt13 Hc))& S- w  s1 O3 p# [3 Q
  3522.              )7 N) F: U$ S! T* T$ _1 P4 ~5 R
  3523.        )
    " O/ a- W7 c) H" S" D0 h3 V2 G; J
  3524.      )
    0 q- n! r2 u. u2 ?1 Z  G7 D, c1 X# w/ E
  3525.     ((Or (= 33 St)(= 1 St))
    , `) i# d, |4 X& V
  3526.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))
    5 |1 \1 W; Y# Z* f, J- X7 j
  3527.     );;End Cond
    ; h3 j6 v4 U) H; c0 H, l* r
  3528.   (If (= Dimdefault "") (Setq Dimdefault "<>"))
    3 g- a0 X4 E! }, }" `3 m
  3529.   (Setq Dial (Load_Dialog "Hai.Dcl"))
    - q" S5 b% C; E) t8 {+ N4 M5 ~
  3530.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    * [( W* X6 L) ?! z: q
  3531.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St)): \3 L6 c9 e4 ^7 f* s# J: I" g: F
  3532.     (Set_Tile "text" Dis))
    - Q+ p# h! t# r# h2 s3 r7 ]
  3533.   (Set_Tile "ha:edim" Dimdefault)1 {% K5 I# y2 G2 C2 Z
  3534.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai
    1 f* I% s: o  }/ ?  o
  3535.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")8 p# `9 q: a! S4 l/ j
  3536.   (Setq State (Start_Dialog))(Unload_Dialog Dial)9 C1 V4 u8 I# N* h8 L0 L
  3537.   (If (And Str (= 3 State))
    $ N* ^  j  v; f
  3538.     (Progn
    8 b' M* [- ^7 Y5 i0 T& x
  3539.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))" Q8 H6 L% H4 z: V- J1 @6 z
  3540.   )
    " H! y& H. ~# ?3 X
  3541. (Defun C:EH (/ Chon Name )% q+ U! m) }, c6 C5 m) @5 j
  3542.   (Defun *Error* (Msg)
    / U! t7 |1 T* ~6 P* ]
  3543.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")% f% Y4 p5 r9 Q* C3 p
  3544.     (Start_Dialog)(Unload_Dialog Dial)
    . _# P/ Q7 [$ \  E
  3545.     (Setq *Error* Olderr)(Princ)6 r4 i- v6 D* |  M$ j' ^
  3546.     )
    - W  l5 K! n; |, b1 e& Z3 D
  3547.   (Setq Olderr *Error*)- j9 D, ]% ^1 w( U- R
  3548.   (Setq Chon T)" i; B" n4 C4 B3 r
  3549.   (While Chon- ?) a# O; U3 i: e. K- L
  3550.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    4 T2 v9 k3 S/ }  I% ~
  3551.     (If Chon
    3 h4 p: D( l  d+ J
  3552.       (Progn5 N  a& y4 ?/ e* r9 g
  3553.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))! f' C" k" F/ B7 n5 i( s6 j
  3554.         (Cond
    ' K4 L! y: e" m( f
  3555.           ((= Name "INSERT")(Command "Ddatte" Chon))
    . v0 z3 L( R, _; r3 o. s
  3556.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon "")); H! H" a: G( W8 f% O7 ?
  3557.           ((= Name "DIMENSION") (Hai_Edim Chon))
    4 [' n7 ~  l5 d  r
  3558.           )
    4 k" I3 ~/ `* U( m' N4 [
  3559.         );End Cond- _  G7 o% @  Q4 o" h( y! R
  3560.       );End Progn
    ( C4 a' A  t" M% x: n. U
  3561.     );End While
      |- ~" U: w+ y! F% o3 f2 M+ f# t
  3562.   (Setq Olderr *Error*)(Princ)
    % i; V8 H! g0 v
  3563.   );End Program
    8 B* N5 k( Q3 z. i; B4 N
  3564. 6 O/ H0 F# {( Z2 k. L+ r% L
  3565. ;;;====================DDeditDim=====================
    ! X$ v7 I* m% f) q
  3566. ;;;=====================Hai.DCL======================# V8 c' ?+ S8 j  v8 m
  3567. ;;;====================DDeditDim=====================
    5 u. l. R% T. w; O' d

  3568. ( I) H% F2 c: X! \+ `7 e; w* m
  3569. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)
    : Q  ?9 g* X- \! W
  3570. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl! J. N& H0 q8 ^1 d% B* e
  3571. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)% W" h2 Q# [3 j
  3572.   (Setq Oldlis (Entget (Car Chon))
    - J6 L; _/ Z0 t; E6 U% h1 L( n+ T
  3573.         Pt10 (Cdr (Assoc 10 Oldlis))( O* o# j7 k2 q7 s+ o
  3574.         Pt13 (Cdr (Assoc 13 Oldlis))) k3 _3 e+ m5 y- m! H& [; e% t) }9 v5 Q5 C
  3575.         Pt14 (Cdr (Assoc 14 Oldlis))
    - `  L* m2 `% X1 K4 t0 ^' |
  3576.         St  (Cdr (Assoc 70 Oldlis))
    + Q, @* k3 \/ M  y* h3 y
  3577.         Dimdefault (Cdr (Assoc 1 Oldlis))
    & w  z8 X0 T* c  u
  3578.         )
    5 c# v8 Y" q6 L% v& b' t  V( R+ a/ {6 n
  3579.   (Cond
    , V$ m1 ~' q1 {& a
  3580.     ((Or (= 32 St)(= 0 St)(= 160 St))
    4 ]! {4 f4 c6 x0 g7 a
  3581.      (Progn) g0 N! l% e& \1 P
  3582.        (Setq Ang (Cdr (Assoc 50 Oldlis))9 s8 u% [& M6 b  `- K0 ?" {
  3583.              Pt (Polar Pt13 Ang 500)$ r! ^& _8 c: E+ X" ^0 @
  3584.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)
    3 i! h3 v( k1 w  Z
  3585.              Dis (Rtos (Distance Pt13 Hc))
    . G- e$ {  ?* V3 M4 B: t3 g
  3586.              )
    # o) X1 H9 o2 e( k
  3587.        )
    8 q. o8 ]9 a. N# [: x/ v  q' [
  3588.      )" X7 N$ A! T( L) B7 L7 k
  3589.     ((Or (= 33 St)(= 1 St)). A, y4 l1 h8 @& O( y( _
  3590.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))8 W& d  S. C% _
  3591.     );;End Cond
    9 ?% |# d8 ]. p' C) C( J
  3592.   (If (= Dimdefault "") (Setq Dimdefault "<>"))! f! B9 f3 n/ h  ^5 m2 b
  3593.   (Setq Dial (Load_Dialog "Hai.Dcl"))% y3 U$ Z1 N6 P# J7 {8 b
  3594.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    ) q1 X* K- n6 B2 p8 c
  3595.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))
    8 V* i. u' _/ l+ w- n4 r) y. s" L0 R
  3596.     (Set_Tile "text" Dis))3 h* f2 O( T2 k
  3597.   (Set_Tile "ha:edim" Dimdefault)
    5 k% u7 z& w3 G
  3598.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai
    + g  S( l+ C) L  }
  3599.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")* D2 ^  ]# n; f4 U
  3600.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    - N( i% A% U9 @) I- u/ I0 s5 b4 X. T
  3601.   (If (And Str (= 3 State))
    5 r1 a" Q& Q& F4 H& U* K
  3602.     (Progn4 U: W1 i  ]: [, ?1 p" |9 I9 X
  3603.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))2 v/ g; E; C) U
  3604.   )
    * e& {$ ~: Q8 Q- ^* i4 {/ q" l  N
  3605. (Defun C:EH (/ Chon Name )6 q; ~. W0 d& f, s5 A+ h5 y7 W
  3606. # s8 f. z1 X9 H9 D/ O) i
  3607. ;;;********************Du Lieu********************
    ; {) S) Y9 `3 u

  3608. / b! W5 g' V' L6 {6 k
  3609. (Defun Ha:Thoat () (Reinit) (Setq Temp "Da Thoat Khoi Chuong Trinh"))- a' x4 G; q, U, N$ B3 F* T8 Q
  3610. (Defun Hacat (Hacat1 Hacat2 / Hacat3 Chon)
    - r1 \& E# s5 P+ y
  3611.   (If (And (/= Hacat1 Nil) (/= Hacat2 Nil))
    3 k: k! X; d# N3 A
  3612.     (Progn, f- P+ [9 D6 R9 o6 P1 |! @
  3613.       (Setq Hacat3 (Polar Hacat1 (Angle Hacat1 Hacat2) (/ (Distance Hacat1 Hacat2) 2)))/ r) M" A: y* s4 u( g
  3614.       (Setq Chon (Ssget Hacat3))7 t5 @8 [* E4 }2 h3 a; T
  3615.       (Command "Break" Chon Hacat1 Hacat2)
    $ t+ D# l) B8 R1 g/ r& W1 i
  3616.       )
    / Q! I' v0 m$ J5 i  I8 D
  3617.     ). [8 m5 K. y) r* S+ a7 O
  3618.   (Princ)
    & t  T0 {$ e% `+ ^  D' z5 Q! B. M. @
  3619.   ): U; Z! r7 A2 ~2 h
  3620. ;;( D: W7 l0 Z6 [, v1 S4 c3 L
  3621. (Defun Hauon (Hauon1 Hauon2)(Command "Fillet" Hauon1 Hauon2))* ^7 Y9 |# y; l
  3622. ;;
    3 j0 K  l" T' p% l% G/ @+ 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))
    + _: ]& b5 k; G5 L7 W- R6 `
  3624. ;;' ]/ M# _" X4 V7 G5 w
  3625. (Defun Init ()(Setvar "Blipmode" 0)(Setvar "Cmdecho" 0)(Setvar "Angbase" 0))
    ; a$ P! d: {" c9 O' z. J
  3626. ;;
      r. Z# j7 z: t. Y- ]1 M% |
  3627. (Defun Reinit ()(Setvar "Cmdecho" 1)); d% a! _2 P4 {, B
  3628. ;;
      D5 ~* i5 @) X8 A0 l/ V
  3629. (Defun Tichvecto (Vecto1 Vecto2)(Apply '+ (Mapcar '* Vecto1 Vecto2)))$ d7 ~: S4 u" g. z% h4 z  |- P
  3630. ;;
    7 }) `  r6 V1 ^  G( U/ i
  3631. ;;Cho 2 Diem Tinh Ra Vec To Phap
    7 Q1 r7 G1 w9 ~  M
  3632. (Defun Vectophap (V01 V02 / Vectochiphuong)(Setq Vectochiphuong(Mapcar '- V01 V02)) (List (Cadr Vectochiphuong) (* -1 (Car Vectochiphuong))))2 N% x6 }# |6 v( \% o0 b0 l
  3633. ;;Xac Dinh Vi Tri Hinh Chieu 1 Diem Len 1 Duong Thang2 y  w- D$ L! v. `4 j
  3634. ;;Da Biet 2 Diem Thuoc Duong Thang
    ( w. T( a/ y: w* U
  3635. (Defun Lay_Hinh_Chieu (Dc1 P1 P2 / Hc Dc2); |  ?- e/ F  |) @0 C
  3636.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)# O) r$ N2 b, G# R1 s1 N5 P3 L
  3637.         Hc (Inters P1 P2 Dc1 Dc2 Nil)))$ i/ V. h# h9 \8 c7 H
  3638. ;;Xac Dinh Khoang Cach Tu 1 Diem Len 1 Duong Thang6 t; m! Q' T- r
  3639. ;;Da Biet 2 Diem Thuoc Duong Thang
    . [. O, a) n5 P
  3640. (Defun Khoangcach (Dc1 P1 P2 / Dc2 Hc)
    " g2 i- y8 c! g2 _. R7 ^0 B
  3641.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    4 v; b5 K& O- }. k. @$ o
  3642.         Hc (Inters P1 P2 Dc1 Dc2 Nil))
      q1 `7 s2 X( S7 u$ X2 j
  3643.   (Distance Dc1 Hc)6 r; }: [# S. L5 a0 k% d
  3644.   )
    ) h$ D! o" j2 c7 `- a) K8 \) L
  3645. (load "nhapcua.lsp")/ Q: i" w% {- Z6 M* J& D3 e
  3646.   (Defun *Error* (Msg)
    / {! U: v  ?: z
  3647.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")5 e6 t9 U+ E$ e1 l7 t3 d7 n
  3648.     (Start_Dialog)(Unload_Dialog Dial)' y9 n. x# d$ @: w
  3649.     (Setq *Error* Olderr)(Princ)
    3 g( K6 s' X" @3 C5 D
  3650.     )
      d* F& l" h2 X4 x- f' ?1 D$ `2 H! K! L
  3651.   (Setq Olderr *Error*)2 `* i8 F# {- X- j
  3652.   (Setq Chon T)8 s- ~* r) u* Z
  3653.   (While Chon
    3 ^( a/ {2 X! K# E1 J( }. M
  3654.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    3 z6 |7 T- E" W+ z6 Q6 r: |
  3655.     (If Chon
    ! f$ `: l3 a/ m
  3656.       (Progn
    / `6 U8 ~" W8 B
  3657.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))
    6 o0 g6 q) t: b, A: ?
  3658.         (Cond
      m4 g( D8 [0 |* {* {; F- R& h
  3659.           ((= Name "INSERT")(Command "Ddatte" Chon))( [( U8 U) R$ m' o; P- A9 v  l
  3660.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))
    0 b: O# ^: z3 d
  3661.           ((= Name "DIMENSION") (Hai_Edim Chon))+ z" V& z- e' k1 c3 z4 c( R% v
  3662.           )
    ! Q+ i% U4 `) f" {  p% b1 t
  3663.         );End Cond
      O2 J# u1 t, P( ^8 Y
  3664.       );End Progn* J# f( E, T  }0 Q
  3665.     );End While
    ! J1 [+ S6 M0 a) I
  3666.   (Setq Olderr *Error*)(Princ)9 B6 s+ ?4 _/ C6 e. C* `
  3667.   );End Program
    ! }7 @- C& }, H- K( W! X+ Q) x

  3668. 6 z3 t# H5 S" w! E' A  P+ W
  3669. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================/ C+ p' J$ ~0 P( ^
  3670. ;====================================Nhapcua.LSP====================================
    / P3 d8 {' y" x  ~
  3671. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================* |0 ^- f. F+ B1 w! K

  3672. ! j# v0 X( D' Q. o
  3673. $ r% v! C7 Z/ \4 o: H* w% L; o

  3674. , C% |, X# S& s: v' _6 c
  3675. ;*******************;*******************;*******************;*******************) t3 c1 b) q! J1 Y9 n, b+ o
  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****
    / z% X$ b' r* [4 d+ q
  3677. ;*******************;*******************;*******************;*******************# m( x2 d6 h8 n
  3678. " T2 h8 I9 ^$ M% Q* P/ D* u) h
  3679. ;VE HINH BINH HANH$ _3 E7 o1 a5 F; a+ K

  3680. 3 b1 n( A( ~& ~% w3 f
  3681. (defun c:binhhanh (/ p1 p2 p3)
    . ?5 S& Y- x1 }/ g0 [/ r
  3682. (setq p1 (getpoint "\n Nhap diem thu nhat:")). P  X+ R) c2 t6 p" p6 m
  3683. (setq p2 (getpoint p1 "\n Nhap diem thu hai:"))4 d& R1 Z) i; N2 k2 j8 ~3 X4 S
  3684. (setq om (getvar "osmode"))+ B; N) b: h  k& ]* l
  3685. (setvar "osmode" 0)8 q  g- h- l1 Q; `# }# h, p% t
  3686. (command "line" p1 p2 "")9 R2 [& r3 h* [$ L
  3687. (setvar "osmode" om)
    5 I' G& j6 T5 d! R" d
  3688. (setq p3 (getpoint p2 "\n Nhap diem thu ba:"))# ?0 K6 j/ [# [6 d- a3 x& o
  3689. (setq a (angle p2 p1))( @1 h( M1 D; Y$ t3 c7 v7 _
  3690. (setq d (distance p1 p2))
    * U. k+ ^. b# q( f
  3691. (setq p4 (polar p3 a d))
    * @/ q5 u: }+ p! {1 k- o
  3692. (command "OSNAP" "none")
    5 d$ ], h: [3 f+ Q6 l+ V  T# F
  3693. (command "erase" "l" "")
      N/ F* R0 f' E
  3694. (command "pline" p1 p2 p3 p4 p1 "")
    4 F* S# h  ?- Y6 L# l4 k0 U
  3695. (setvar "osmode" om)
    - b! ?! s% d+ t, t1 l
  3696. )
      Q* M6 l# {! o; D6 G" D6 d# U
  3697. 8 r4 \! w' [: f5 U* Q3 J8 E
  3698. ;VE LUOI COT0 k+ E1 R# O( H  A4 }
  3699. ; J1 p6 e1 U9 d& B! i/ {
  3700. (defun c:LuoiCot ()3 p/ m1 m) t$ Y) M. y. i
  3701. (setq om (getvar "osmode"))$ {9 [5 s+ |3 t3 Z/ T$ G$ z
  3702. (setvar "osmode" 0)
    / T/ V/ \; t0 k( D
  3703. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    " x' o( V/ V1 c9 L, c
  3704. (setq p0 (getpoint "\n Chon Basic Point:"))) b) t4 c; S; K
  3705. (setq nc (getreal "\n Nhap chieu ngang cua cot : "))" q) ?: S8 Z; U8 f8 U, y$ f
  3706. (setq dc (getreal "\n Nhap chieu doc cua cot : "))
    + }; ?" T3 \% T* l7 q& |
  3707. (setq p1         (polar         (polar p0 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    7 v' j* `- V) W9 ]
  3708. (setq p2         (polar         (polar p0 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )
    " @# W* j' i& i" Y3 y; a4 L- g
  3709. (command "rectang" p1 p2)
    0 b5 E( c5 B% ~; ~' ]6 S! n
  3710. (command "hatch" "solid" "l" "")7 M* l# n  P' V
  3711. (setq bcn (getreal "\n Buoc cot theo phuong ngang : "))
    7 P* F( P3 a" U+ s1 a
  3712. (setq nn (getint "\n So buoc cot phuong ngang : "))0 z+ ~1 A7 v, `- H: n
  3713. (setq w1         (polar         (polar p1 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    + E$ O5 w  }+ G3 j( D
  3714. (setq w2         (polar         (polar p2 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )
    + t; W+ s! [+ |2 s9 }  U; F
  3715. (command "select" "w" w1 w2 "")/ z3 H7 J  \0 w; L. R
  3716. (command "array" "p" "" "r" "1" (+ nn 1) (/ (* bcn hstl) tile) )! ]& H& L/ h. [6 i' V$ C
  3717. (command "line" (polar p0 pi (/ (* 1000 hstl) tile)) (polar p0 0 (/ (* (+ (* bcn nn) 1000) hstl) tile) ) "")
    3 ?# m- _8 f, P  Y: `  s3 a7 `8 N
  3718. (setq w1 (polar (polar p0 pi (/ (* hstl 2000) tile)) (* pi 1.5)  (/ (* hstl 2000) tile) ))
    2 i) C5 U+ F9 y" p0 l# U: p
  3719. (setq w2 (polar (polar p0 0 (/ (* (+ (* bcn nn) 2000) hstl) tile) ) (* pi 0.5)  (/ (* hstl 2000) tile) ))" j2 i; i7 }& n4 i& c9 P! ?! C. Z
  3720. (command "zoom" "w" w1 w2)
    * G* s0 v. X' z- s: l% A
  3721. (command "select" "w" w1 w2 "")" F) h# s9 I( g3 b
  3722. (setq bcd (getreal "\n Buoc cot theo phuong doc : "))6 V; z2 b; S- i  E5 \% M6 w& u
  3723. (setq nd (getint "\n So buoc cot phuong doc : "))
    - y' K- ]/ c& l1 ]' j5 Q3 |
  3724. (command "array" "p" "" "r" (+ nd 1) "1" (/ (* hstl bcd) tile) )2 h, W  T: c3 G5 I( J4 s
  3725. (command "line" (polar p0 (* pi 1.5) (/ (* hstl 1000) tile))  (polar p0 (* pi 0.5)  (/ (* (+ (* bcd nd) 1000) hstl) tile))  "")8 o5 O! H3 ~( s% R% m0 ~6 b
  3726. (command "array" "l" "" "r" "1" (+ nn 1) (/ (* hstl bcn) tile) )
    * Y3 ^4 y- d4 H* i- z* K' F
  3727. (setq w2 (polar w2 (* pi 0.5) (/ (* (+ (* bcd nd) 2000) hstl) tile))  )  
    , E- h7 }6 x' k! _3 u
  3728. (command "zoom" "w" w1 w2)
    ) Y9 Y( x% ?9 N
  3729. (setvar "osmode" om)1 _) n& p0 m+ c/ |3 y( E0 J
  3730. )
    ) V9 V+ e+ x$ `/ l3 Y
  3731. 6 u# b0 G  v1 e5 U. V& F5 O9 V* ?
  3732. ;VE CUA DI- A( A7 d. O+ P/ a% i

  3733. 1 L5 N% T" c* R8 G' e2 o$ |
  3734. (defun c:cuadi ()
    & _1 s; U5 A8 \; V; Q# H+ _
  3735. (setq om (getvar "osmode"))3 Z0 @1 \6 ^3 o6 g! l. M' R
  3736. (setvar "osmode" 0)
    5 l# g1 y0 ]" N) f. M! e

  3737. ' A0 k; z/ C/ l& S7 @, B
  3738. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    " R% T% L6 P$ }# a" T
  3739. (setq b (getreal "\n Nhap be rong cua : "))6 c2 E0 U' T5 G/ P1 w  f  t0 |' B
  3740. (setvar "osmode" om)
    * U* s& Z6 N' j* R
  3741. (while (< 0 1)4 c" n6 f9 Q& z6 ^! O
  3742. (progn
    9 Q! G; B& \3 e1 c8 s- ?4 p# y" e
  3743. (setq p0 (getpoint "\n Chon Basic Point:"))6 }  A! y5 s" p6 _' d* G* }1 o
  3744. (setq p1 (getpoint p0 "\n Chon diem de xac dinh huong cua cua:"))1 u% I# `( m" @( b* l$ x
  3745. (command "osnap" "none")* w& y3 a4 p/ f, r
  3746. (setq p2 (getpoint p0 "\n Chon diem de xac dinh huong mo cua:"))+ R+ X7 E& ~3 _6 o. ~8 |
  3747. (setq a1 (angle p0 p1))8 u! T& C: \( i: D5 ~) M
  3748. (setq p1 (polar p0 a1 (/ (* hstl b) tile)))
    2 v0 S5 j7 n7 R# g' Y
  3749. (setq a2 (angle p0 p2))
    # v. z# z/ \4 ?& H$ \
  3750. (if (< (- a2 a1) pi) (setq a3 (+ (/ pi 2) a1)) (setq a3 (- a1 (/ pi 2))) )
    4 N& a7 o, i- Q  ^2 ^
  3751. (command "pline" p0 "w" "0" "0" p1 (polar p1 a3 (/ (* hstl 40) tile)) (polar p0 a3 (/ (* hstl 40) tile)) p0 "")
    . V) {- u& V) H( a$ a
  3752. (command "rotate" "l" "" p0 (/ (* (- a3 a1) 180) pi))
      C/ s" H8 B, j- v2 h  L3 V  c
  3753. (command "arc" "ce" p0 p1 "a" (/ (* (- a3 a1) 180) pi)) ( z; x) X# T. Z% T
  3754. (setvar "osmode" om)
    ; L4 Y8 V* u: S
  3755. ))
    5 t/ F. a# ^! o$ A
  3756. )
    8 f' h" y9 u$ R

  3757. # e" M7 U* y( B6 q9 e; B0 ?
  3758. ;VE CUA SO, z' B6 X+ p0 |- |% h# T6 m; T) O

  3759. ; J3 M9 I/ y: l# r3 O
  3760. (defun c:cuaso (); p  N# J! g" J( n+ {7 `, Y
  3761. (setq om (getvar "osmode"))* M" w& Q- u: n/ g* i
  3762. (setvar "osmode" 0)
    + C. U8 l% X! _4 u$ ^4 j
  3763. 7 u$ t* {5 ]6 Q7 k
  3764. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x=")); }/ f3 q+ P2 t/ D1 K+ g$ Q/ K
  3765. (setvar "osmode" om)4 ~/ c" m3 t, b7 `, r0 }$ ^( b- n
  3766. (while (< 0 1)
    0 W. H& a' O5 H6 o' |  O
  3767. (progn* A: S$ z$ e$ S8 R$ b/ w  t
  3768. (setq p0 (getpoint "\n Chon Basic Point:"))
    2 |0 G; f+ E# v3 A+ H" p' u
  3769. (setq p1 (getpoint p0 "\n Chon diem de xac dinh be rong cua:"))( m& e3 F) F7 c6 R
  3770. (command "osnap" "none")# |8 z" l+ L7 H% m8 z( s. i2 j
  3771. (setq p2 (getpoint p1 "\n Chon 1 diem o trong nha de xac dinh huong cua so:"))$ [5 d! j- U" ~5 Z& I* Y
  3772. (setq b (distance p0 p1))
    5 q" Z+ ?8 `. P3 j9 D( v
  3773. (if (< b  (/ (* hstl 600) tile)) (setq du 50))
    " e/ E: Y6 @/ b2 X
  3774. (if (> b  (/ (* hstl 600) tile)) (setq du 150))
    1 w( L% Y+ p7 o9 H# c# n
  3775. (if (> b (/ (* hstl 1800) tile)) (setq du 200)). ^. D9 P0 y( I+ b; E0 l0 Z5 u
  3776. (setq a1 (angle p0 p1)). G1 e7 d& r# w& e4 W4 ~0 Z
  3777. (setq a2 (angle p0 p2))
    7 A- x# }7 O9 s) p+ |
  3778. (if (> a2 pi) (setq a2 (- a2 (* pi 2)) )  )) S; w$ I; p. l8 H) k
  3779. (if (> (- a2 a1) 0) (setq a3 (+ (/ pi 2) a1))  )' g7 c% w2 b0 f0 ^4 T
  3780. (if (> (- a1 a2) 0) (setq a3 (- a1 (/ pi 2)))  )( v; d$ J; E. |/ x! e) ^
  3781. (command "pline" p0 "w" "0" "0" p1 "")
    2 c9 @: c8 n/ L5 b8 s  j: n
  3782. (command "pline" (polar p0 a3 (/ (* hstl 50) tile)) (polar p1 a3 (/ (* hstl 50) tile)) "")
    1 u$ ~" [: F* m
  3783. (command "pline" (polar p0 a3 (/ (* hstl 100) tile)) (polar p1 a3 (/ (* hstl 100) tile)) "")
    + F& s+ w, o% C; ~: c6 `) y6 ~
  3784. (command "pline" (polar p0 a1 (* (- du) (/ hstl tile))) (polar (polar p0 a1 (* (- du) (/ hstl tile))) a3 (* -100 (/ hstl tile)))
    $ Y; }8 m( s6 i( m# h* k
  3785.                 (polar (polar p1 a1 (* du (/ hstl tile))) a3 (* -100 (/ hstl tile))) (polar p1 a1 (* du (/ hstl tile))) "")
    1 o5 u  W7 B, l) N* H4 e
  3786. (setvar "osmode" om)
    8 ^0 X) C- C  ^# W- h
  3787. ))
    : L5 q. S3 O) ]
  3788. )
    $ Q/ i7 ]) r7 ]4 f% b; F7 _! f* V

  3789. / m8 S+ I% ]( q# Y& x
  3790. ;;;=== General Utility Functions ===
    ( _" [. y3 O8 e% g: |
  3791. 9 k& ?+ b3 g9 I' d: j1 b& k
  3792. ;   R12 compatibility - In R12 (acad_helpdlg) was an externally-defined
    & A3 g. B. \" m- R3 |
  3793. ;   ADS function.  Now it's a simple AutoLISP function that calls the
    ( Z5 O0 f3 N) q, o
  3794. ;   built-in function (help).  It's only purpose is R12 compatibility.  
    " P% P1 Z4 f7 A0 s' y
  3795. ;   If you are calling it for anything else, you should almost certainly
    2 l! D2 H* x  X' w0 w- v/ o; r0 U4 k
  3796. ;   be calling (help) instead. # Z  d. Z/ w/ \' X! C" `9 G8 U

  3797. ; s7 O/ ^& ~, g5 z5 C
  3798. (defun acad_helpdlg (helpfile topic)
      b! I0 {# T3 Q  z5 C6 A
  3799.   (help helpfile topic)7 Z* i0 G5 k4 ~! L0 P
  3800. )7 a/ o) {' V9 C+ D, n" F

  3801. 7 {4 u; c" N+ O# \8 S

  3802. " w9 p0 X# v& P6 h. c! g6 U
  3803. (defun *merr* (msg)& L! _1 K; y) [' q$ E' Y5 i
  3804.   (setq *error* m:err m:err nil)9 R5 N5 _, P+ [0 j* Y* ^
  3805.   (princ)1 \- y& _3 q* t9 D
  3806. )# @* k) X. K8 m

  3807. 5 U$ e0 X* ?# Q8 c4 ^
  3808. (defun *merrmsg* (msg)
    $ ^4 N# M1 r% `5 E2 T6 a! P
  3809.   (princ msg)
    0 ]5 g$ Q  i3 q0 W
  3810.   (setq *error* m:err m:err nil)
    7 i) Y: i' I; b, K! s/ J5 S3 `- |0 w
  3811.   (princ). k6 a# n' P4 b" ~
  3812. ), }# R, a* b; I6 V/ p" g; ^& t
  3813. 6 H$ b( ?5 z$ p4 Z9 c2 T
  3814. ;; Loads the indicated ARX app if it isn't already loaded
    7 m: x( s& k/ Z5 E! E6 [8 @1 z2 e) |
  3815. ;; returns nil if no load was necessary, else returns the
    / o! n* B! }! X: ~
  3816. ;; app name if a load occurred.7 T! @5 c$ R. ?0 q/ c  M9 ]
  3817. (defun verify_arxapp_loaded (app) 1 r" D" V  N  V: L
  3818.   (if (not (loadedp app (arx)))( S- \! `$ E/ ]5 G+ G
  3819.       (arxload app f): w. e  a2 N& r! G
  3820.   )) q1 ?& M& v0 {) A( g
  3821. ), v! _! c" H- n) ~0 _  K) G

  3822. , K/ |; _- F; N7 M+ `& V
  3823. ;; determines if a given application is loaded...: K7 U1 ~$ F* x9 i# r9 Q
  3824. ;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....! F  [6 t+ o5 F4 t: _2 X
  3825. ;;
    4 a% c$ F1 n" a4 J# |9 v* A
  3826. ;; app is the filename of the application to check (extension is required)5 Y" Y4 y. s- g! t# Z  y
  3827. ;; appset is a list of applications, (such as (arx) or (ads)
    0 G+ ?; P9 U+ _) W7 ]! p
  3828. ;; ! [: B; ?- R! a7 l
  3829. ;; returns T or nil, depending on whether app is present in the appset
      l. m, n1 v7 E9 g8 `6 E
  3830. ;; indicated.  Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"5 D6 T, Q9 W7 ?" p9 D* @9 a7 [5 U
  3831. ;; Also, if appset contains members that contain paths, app will right-match* }2 q0 Q+ A- G0 w4 g3 z: B1 }
  3832. ;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that; M) w2 E/ @5 G- g8 W
  3833. ;; "bar.arx" will *not* match "c:\\path\\foobar.arx."
    1 c; o2 d6 A/ P$ E4 `; ~2 j8 X8 E: K& p8 W
  3834. (defun loadedp (app appset)
    7 W6 o8 @% B+ o3 r8 f+ F
  3835.   (cond (appset  (or - ^5 b% ?6 Y8 [
  3836.                      ;; exactly equal? (ignoring case)
    ( S- }7 i' V8 F- {. a) @
  3837.                      (= (strcase (car appset))
    + H+ Q4 V. ~5 H" Z+ \
  3838.                         (strcase app)). U6 Q6 b! G, E; B4 P8 V
  3839.                      ;; right-matching? (ignoring case, but assuming that
    9 T3 C+ x/ X! k+ z5 T- m2 e- z1 I
  3840.                      ;; it's a complete filename (with a backslash before it)% x8 m* E8 D* J$ k
  3841.                                          (and
    : |/ l) F/ x" |2 H2 I1 [- k
  3842.                                              (> (strlen (car appset)) (strlen app))- F+ Q# O8 K; }6 r7 o+ m
  3843.                              (= (strcase (substr (car appset) ' X/ G! ]$ ?; b$ K% l  a( Z8 F
  3844.                                                  (- (strlen (car appset))
    2 F8 a4 q; p5 F% u) c
  3845.                                                     (strlen app) " l- @! ^, ^& V# G1 Q, u& {
  3846.                                                  ) 4 ?1 K9 L4 u/ s& M, A) g
  3847.                                          )7 x4 Z+ g, f! c" S. ?
  3848.                                 ) % T! q9 Y- t& V# I
  3849.                                 (strcase (strcat "\\" app))/ k8 I* T6 ?& L  P9 L
  3850.                              )1 X3 H( W" g, b5 ]" F$ a
  3851.                                      )! s! f) o+ L- C; F+ m
  3852.                      ;; no match for this entry in appset, try next one..../ d  e& F- I! X/ t8 I, T. |
  3853.                      (loadedp app (cdr appset)) ))); T7 u* U; _. z+ x/ h
  3854. )
    & X0 ^% p  D. n' F. ]7 S

  3855. 0 c7 l3 u/ @1 F' H: U7 c5 P* R7 k

  3856.   l4 r& W/ x$ \! p- s+ F& i. `
  3857. ;;; ===== Single-line MText editor =====
    2 t# \* b/ x( }8 ?' j
  3858. (defun LispEd (contents / fname dcl state)! z, c( X8 }7 G  |8 F" R
  3859.   (if (not (setq fname (getvar "program")))
    3 Y8 |/ y# P5 Z( R0 K
  3860.      (setq fname "acad")4 x# B6 j' u; Z$ ~7 k
  3861.   )
    0 n. T/ @& c% j8 V6 ^8 w+ f0 z
  3862.   (strcat fname ".dcl"): u  }6 L' m& d! p5 A" u
  3863.   (setq dcl (load_dialog fname))
    0 d* l; y4 v2 ?" U/ i
  3864.   (if (not (new_dialog "LispEd" dcl)) (exit))5 z" \6 d- g6 N) Q+ k$ p+ @  \
  3865.   (set_tile "contents" contents)
    4 Q$ C* t2 C* S2 H: O1 V
  3866.   (mode_tile "contents" 2)
    " m3 A7 r1 N! m: r
  3867.   (action_tile "contents" "(setq contents $value)")1 \, n& S: q0 k6 [" w
  3868.   (action_tile "accept" "(done_dialog 1)")0 ^! y/ n6 F! g- ~( L# P1 Z
  3869.   (action_tile "mtexted" "(done_dialog 2)" )( {0 E) M  k( }- ?1 n
  3870.   (setq state (start_dialog))' N4 e: r/ _1 Z; s- t
  3871.   (unload_dialog dcl): B5 `' d/ Z0 a8 i- A0 t7 y
  3872.   (cond
    % g- V7 h8 Z& ^4 x2 N" v. l
  3873.     ((= state 1) contents)
    # ^5 r1 q6 l9 v+ ^4 x0 |0 R
  3874.     ((= state 2) -1)
    ; v" |7 u3 K9 |( C
  3875.     (t 0)
    7 D2 F: t0 t4 ~$ H$ v1 ?8 H
  3876.   )
    + {+ A' p; M! S7 e; @
  3877. )
    * B' a/ V5 w. Q4 C9 {( J

  3878. & j2 a: I0 t5 k" h
  3879. ;;; ===== Discontinued commands =====
    ! U* c. M! l+ N7 @3 n: }
  3880. (defun c:ddselect(/ cmdecho-save)& p( K7 ^* T6 T7 P
  3881.   (setq cmdecho-save (getvar "CMDECHO"))9 m1 B6 Z6 D: S& {! a
  3882.   (setvar "CMDECHO" 0): J! u, B+ w* V3 ]& y$ u8 E+ L
  3883.   (command "._+options" 7)- u* B1 i4 ~5 U4 ~9 R6 f6 B- D
  3884.   (setvar "CMDECHO" cmdecho-save)+ B" v/ `9 t& J8 R% e) ~/ L
  3885.   (princ)
    : r" e% \% C; R6 x1 b4 i
  3886. )
    / ^% O- f% R& _; h7 S9 g- F
  3887. . a" @4 }  E% O1 z2 `3 L  f5 N
  3888. (defun c:ddgrips(/ cmdecho-save)# w; Y, v. A* I' v3 {! e3 ?4 @
  3889.   (setq cmdecho-save (getvar "CMDECHO"))% P0 Q/ z$ p" o! Z3 V
  3890.   (setvar "CMDECHO" 0): O' G6 a9 P5 e
  3891.   (command "._+options" 7)
    - ]5 ~8 p& ]$ \: S+ a5 s
  3892.   (setvar "CMDECHO" cmdecho-save)7 b. V& n/ q4 ^8 j$ T! X
  3893.   (princ)$ D( o) G/ ]# P
  3894. )
    $ ^% {: x- H7 i- n6 U7 H

  3895. 4 {2 X2 b- q- Q6 C# F
  3896. (defun c:gifin ()
    ; c3 F3 K* ?% H% Y5 z
  3897.   (alert "\nThe GIFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")) L* Z) {  h# j  }) X; v6 w
  3898.   (princ)5 m( l( d9 _" Y2 k3 V9 X
  3899. )
    . H* j. A% A2 U! p" D' ?

  3900. 3 x$ I/ u- @; R( Q- L0 E
  3901. (defun c:pcxin ()
    ! D( a" p, t( d. B, E% {
  3902.   (alert "\nThe PCXIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")3 }' @2 o0 P1 @0 _8 R  n0 O
  3903.   (princ)
    9 v7 r7 S- j# ^' m' b7 `) C
  3904. )
    ! s/ U3 n( c  C  t0 X: g, f4 c# J

  3905. 1 ]- m6 L/ c8 F" r
  3906. (defun c:tiffin ()
    6 H  ^, L; }3 d! s7 E7 G
  3907.   (alert "\nThe TIFFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")! n9 U1 b5 |% C1 ]- d" g$ _4 z. o
  3908.   (princ)
    , f" d/ ~: C' J  z* A: U/ D" ^
  3909. )- P$ b, z/ B$ w

  3910. * l* C1 T$ C4 \# K8 T
  3911. (defun c:ddemodes()7 f7 D; [" Z. _, M& d2 `
  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.")
    * u3 _. K' ?* I  M" y
  3913.   (princ), s5 c& M# D, L3 j
  3914. )
    + f& Z0 v4 d) r/ g; J! W  u
  3915. 4 \6 |) [3 M4 G
  3916. (defun c:ddrmodes(/ cmdecho-save)0 t2 L' g) C$ f" U6 ?: d- k
  3917.   (setq cmdecho-save (getvar "CMDECHO"))  X# V% I. L& v5 q! ]
  3918.   (setvar "CMDECHO" 0)
    8 P1 b* @: `* f: [+ K
  3919.   (command "._+dsettings" 0)0 s: x/ Q  g; o1 E' W; B
  3920.   (setvar "CMDECHO" cmdecho-save)" C3 W1 G2 p9 U- Q7 C0 p" U
  3921.   (princ): D% i( E) |* O
  3922. )
    $ ^$ m( `* A( V! T3 \4 L

  3923. 9 r0 k1 h2 |8 y+ k" L' }5 v
  3924. ;; HPCONFIG
    9 A4 O; Q9 }% y) y2 y6 F6 Z
  3925. (defun c:hpconfig (/ hlppath)/ z! V& u6 E" h7 A8 \
  3926.   (if (not (setq hlppath (findfile "acad.hlp")))
    7 ~5 y& v; Y, A  q3 U+ z4 d
  3927.     (setq hlppath "")); F$ X) H1 C; W. V- j0 L) B
  3928.   (help hlppath "hpconfig")
    + B, v  L) L# U, V, G2 E9 S
  3929.   (princ)
    8 N9 b/ c3 O" r. C5 E0 J  W
  3930. )
    * L: ]# C, M. @0 e6 d5 P" d
  3931. ! n* W! l" V3 z
  3932. ;; OCECONFIG
    % j; `5 m& @5 I$ F
  3933. (defun c:oceconfig (/ hlppath)
    2 R! }5 N! h) d, w
  3934.   (if (not (setq hlppath (findfile "acad.hlp")))
    # V5 C4 Y/ X6 ]
  3935.     (setq hlppath ""))
    . c1 x2 h2 m4 K/ |' b+ i) L7 ?) a
  3936.   (help hlppath "oceconfig")
    0 r) b& c( }4 O
  3937.   (princ)( W, u$ Y9 y2 W4 \! M
  3938. )
    1 g0 y# |8 u) N* g, C1 M
  3939. ) y) Z: q; o* X! U5 B
  3940. ;; CCONFIG; x9 L- d& I& t; L$ [; U+ h
  3941. (defun c:cconfig (/ hlppath)7 _! n( \' {. W9 w
  3942.   (if (not (setq hlppath (findfile "acad.hlp")))2 e9 I. ]: f7 e. ^
  3943.     (setq hlppath ""))* l% v  t$ N/ n: R  _" Y( E- d
  3944.   (help hlppath "cconfig")+ u4 f) B# p2 F0 |4 c3 W
  3945.   (princ)( E% r" H: ^0 ^- I  b
  3946. )5 N5 b0 ]9 \2 H: ^$ w" m4 _% P/ @

  3947. 3 _, b4 u$ Z4 c* y
  3948. ;;; ===== AutoLoad =====. o% l/ p+ A) R# r) H8 I
  3949. ; \& q6 L, W' V, g* ^$ |' I
  3950. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
    ) A1 k) h6 _6 X  ]' k/ M* g
  3951. ;;; for the name of a certain appplication <appname>.
    6 ^* a" w  A; ~# s! _+ C1 n
  3952. ;;; Returns T if <appname> is loaded.
    ; h  C* l) l& W8 I

  3953. 1 w4 G7 d$ s8 D5 `- ^
  3954. (defun ai_AppLoaded (appname apptype)6 ~  l- V( A6 A  r6 H$ y% o2 k
  3955.    (apply 'or
    & |& V0 ^- @6 Q/ R
  3956.       (mapcar 6 I7 X2 A' A2 b: {! t
  3957.         '(lambda (j)0 Z2 K" W0 r8 I" ^( m* h
  3958.             (wcmatch
    + w8 {2 T0 f8 B( ]) V3 Q
  3959.                (strcase j T)
    2 i7 B' ?  }9 `2 c3 d
  3960.                (strcase (strcat "*" appname "*") T)
    , ]$ B6 X% a( L4 c
  3961.             )   4 _  K" N$ V; r0 s- H
  3962.          )
    " {. d4 s: @. ]/ o, E  p7 k' [8 S: }
  3963.          (eval (list (read apptype)))
    ! f5 u* F: h1 P. _
  3964.       )
    : b, k- @& B( X) s7 X/ x. K- U) G
  3965.    )+ V; a7 w' ?$ D1 }& V) ^( V
  3966. )
    - k3 L/ b7 _( h6 d: z

  3967. 8 c( p% i- T) ?! D' Z7 K' y
  3968. ;;  ; v* y  m# l8 q/ s! _* i
  3969. ;;  Native Rx commands cannot be called with the "C:" syntax.  They must 5 R, t9 s! k3 }, _- X, y, N
  3970. ;;  be called via (command).  Therefore they require their own autoload
    ' G4 g! g( A3 x" r! K. M
  3971. ;;  command.
    7 j- f6 V: f9 d  F/ H1 Z- o
  3972.   m. _: O2 N3 x8 z* ^
  3973. (defun autonativeload (app cmdliste / qapp)
    5 x, W! V, _% l
  3974.   (setq qapp (strcat "\"" app "\""))0 S* v( W( _2 s1 J0 n' i) b, ^! I9 p
  3975.   (setq initstring "\nInitializing...")
    + A: {3 a+ U" N
  3976.   (mapcar
    * y( D% U/ a% e$ N2 _
  3977.    '(lambda (cmd / nom_cmd native_cmd)
    - g: J1 ?7 r4 R! H
  3978.       (progn. s1 I4 ]" d' g/ k& Z% F4 c5 u# J/ a
  3979.         (setq nom_cmd (strcat "C:" cmd))
    # V7 S+ Z6 {7 S* K0 Q" b
  3980.         (setq native_cmd (strcat "\"_" cmd "\""))) U8 F  |* K2 l7 F; v4 N- k8 c7 n6 w
  3981.         (if (not (eval (read nom_cmd)))( E: ?& F  W0 S; @0 U
  3982.             (eval
    3 ~; M  t, a1 [  z4 L2 ~! v1 z
  3983.              (read (strcat! u/ ?8 g, R1 l+ D
  3984.                     "(defun " nom_cmd "()"
    3 N8 V! j1 d. M) ?
  3985.                     "(setq m:err *error* *error* *merrmsg*)", t* A/ ~% S& o1 O' k0 b! X6 S
  3986.                     "(if (ai_ffile " qapp ")"
    4 j5 T$ E$ T7 L% ]
  3987.                     "(progn (princ initstring)"
    6 Y: ?2 n: P" Z9 m" ^
  3988.                     "(_autoarxload " qapp ") (command " native_cmd "))"
    * P" N, O+ }2 K7 c& c
  3989.                     "(ai_nofile " qapp "))"
    + c9 t4 d, ~( D
  3990.                     "(setq *error* m:err m:err nil))") _  M3 V: W2 P- u/ ~9 n
  3991.                     ))))))
    # R; o$ q. R7 |" j3 ^  \
  3992.    cmdliste)# ?9 {, W: ?/ D" Z9 J
  3993.   nil
    ( q4 C7 H# t9 ~- B
  3994. )
    7 x2 R( c: l+ D" H

  3995. 7 C+ ]) P2 A: s* j( _
  3996. (defun _autoqload (quoi app cmdliste / qapp symnam)+ f: s$ H4 i$ |! u" n
  3997.   (setq qapp (strcat "\"" app "\""))
    $ W9 r. {  `+ P9 h# M2 l5 Z! n
  3998.   (setq initstring "\nInitializing...")
    7 z- ~  y( t% X+ Y" `; x
  3999.   (mapcar
    & \$ q6 q! k7 K# h
  4000.    '(lambda (cmd / nom_cmd)
    , a) y* \, p9 B  y
  4001.       (progn
    " K; ?( V5 B" ?' s, A! h( M
  4002.         (setq nom_cmd (strcat "C:" cmd))
    ! w3 G) ]) l4 {6 Y, i
  4003.         (if (not (eval (read nom_cmd)))
    & ]4 R8 _1 ^% P9 S7 v! B- S- M3 ^$ J' C
  4004.             (eval% m0 ^) m8 y, @0 d+ m% P
  4005.              (read (strcat
    ! Q- F8 c1 K1 i+ ~
  4006.                     "(defun " nom_cmd "( / rtn)"7 j2 z5 b/ s; L
  4007.                     "(setq m:err *error* *error* *merrmsg*)"
    + {3 A/ B/ R3 G1 ?9 n  V8 p
  4008.                     "(if (ai_ffile " qapp ")"5 V$ S% I3 P! ?0 v, |
  4009.                     "(progn (princ initstring)"
    + U# O. L* Z0 _- m5 B' t1 i$ q* P
  4010.                     "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"' r  ~3 u$ B- T- l  J& [6 L
  4011.                     "(ai_nofile " qapp "))"% ]( F+ n; Z3 W, n
  4012.                     "(setq *error* m:err m:err nil)"
    0 N/ A# ?0 w7 p7 x* y+ w
  4013.                     "rtn)"0 T( w/ c2 T, ~. C5 p3 _9 T
  4014.                     ))))))
    4 c) t0 U/ ~$ p
  4015.    cmdliste)
    5 g& e( C  W3 X' K2 ]$ Y* R
  4016.   nil
    & a' }+ Q; K1 b- ]% H* n4 Q
  4017. )0 e8 ^6 }, C5 ~/ n" e
  4018. + d6 x4 \: K, X% R$ ?
  4019. (defun autoload (app cmdliste)" u8 Y+ _8 ]" N- i/ b
  4020.   (_autoqload "" app cmdliste)
    # P' a! m2 X6 O  `# f2 k$ J
  4021. )0 ^' k$ k7 _3 g5 U& `
  4022. ; B9 v% R* C( A5 v# G+ c& k
  4023. (defun autoarxload (app cmdliste)
    ; o# S  u9 v4 |1 l4 m
  4024.   (_autoqload "arx" app cmdliste)) ~' b  X" J( v/ R. \& _& n$ s
  4025. )
    ; f* U/ K% k! g7 H3 N
  4026. 2 v) `5 y& @1 o2 ?3 L- j2 L
  4027. (defun autoarxacedload (app cmdliste / qapp symnam)% L! d3 h/ I4 _" p$ v
  4028.   (setq qapp (strcat "\"" app "\""))/ G$ C4 y5 k) T. G3 d( b
  4029.   (setq initstring "\nInitializing...")
    / j% ?5 h: M1 b
  4030.   (mapcar
    ( A' a0 _/ p9 r6 F3 S& D4 w1 X5 t
  4031.    '(lambda (cmd / nom_cmd)
    5 ]; u4 e; S9 U4 K9 g
  4032.       (progn9 I+ {: Q0 S) |6 V% e" J
  4033.         (setq nom_cmd (strcat "C:" cmd))
    - e  A- ^: C& _$ T
  4034.         (if (not (eval (read nom_cmd)))
    # q. Y$ e2 y9 \* p+ B
  4035.             (eval
    2 b, i' W' h) F+ \
  4036.              (read (strcat
    " e5 o$ |7 z9 B) R! ^* w+ Q
  4037.                     "(defun " nom_cmd "( / oldcmdecho)"
    2 J- }# H6 [  h
  4038.                     "(setq m:err *error* *error* *merrmsg*)"
    5 ]6 w1 a7 C4 X$ f: A
  4039.                     "(if (ai_ffile " qapp ")"! C; S5 A' H* w
  4040.                     "(progn (princ initstring)"
    6 ~4 N. s' D; Y" g2 q& k
  4041.                     "(_autoarxload " qapp ")"
    + j' I5 t8 Q, Z; h. A! a
  4042.                     "(setq oldcmdecho (getvar \"CMDECHO\"))"9 Z' ?$ _  L8 m7 [3 |0 @. L& z: G
  4043.                     "(setvar \"CMDECHO\" 0)"7 K( ?( ?) R" B( Y( B. L
  4044.                     "(command " "\"_" cmd "\"" ")"
    + B4 U  P/ M; G! h7 B* J1 h, B8 @
  4045.                     "(setvar \"CMDECHO\" oldcmdecho))"+ G- w  x( m! k
  4046.                     "(ai_nofile " qapp "))"
    8 Z$ X8 J% `, D% I" a
  4047.                     "(setq *error* m:err m:err nil)"
    4 l- C0 p$ I4 H9 n2 w7 f
  4048.                     "(princ))") A/ ^( F, \. k! d9 U8 a! K! j6 g1 i
  4049.                     ))))))& [. H! J9 w1 Z* v$ a( x1 D
  4050.    cmdliste)7 _: J5 ?  e8 w; J- f2 w/ C
  4051.   nil
    . c0 |/ E( A) H1 B8 D! X
  4052. )  g( B( J, x8 C

  4053. + m& x* w5 }  @9 o: A, V/ @
  4054. (defun _autoload (app)
    . w! L3 r6 b! c* E
  4055. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)
    2 r( ~$ l& l2 @# e* k
  4056.   (load app)
    1 @0 Z/ V. M2 s. d/ Y
  4057. )
    . b6 M& ]" `& j9 i7 O

  4058. # e! ~# y9 o/ X* H4 n$ r8 ~# P
  4059. (defun _autoarxload (app)
    * l4 h% L8 ?+ g
  4060. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)
    5 l1 ]+ s4 M8 A# D; a
  4061.   (arxload app)# U% Y$ z; E" w! U: l# y
  4062. )3 S" y. y* G6 Z. q
  4063. : b+ X; X( f$ Z, Q; t
  4064. (defun ai_ffile (app)- I. ?5 p5 ~6 J( G
  4065.   (or (findfile (strcat app ".lsp"))8 d' x7 g5 d% \
  4066.       (findfile (strcat app ".exp"))
    5 q! a, U: Y# `1 v: ?) c
  4067.       (findfile (strcat app ".exe"))
    6 N9 u: i" m& N% w8 {" K
  4068.       (findfile (strcat app ".arx"))
    4 c, N3 M  l' E0 }" h+ p+ i# x
  4069.       (findfile app)
    7 \' C+ x5 _. |: Z
  4070.   )/ v. R5 o  e6 @$ S) o# b4 U0 u- }
  4071. )  Q& L4 l0 `4 F! {2 ~5 _- N
  4072. ' `- ]; {7 `8 g; h
  4073. (defun ai_nofile (filename)% l& I9 D2 c: M% {7 ]( p
  4074.   (princ
    3 k/ _& [6 H$ @4 O7 o
  4075.     (strcat "\nThe file ", j% d5 A8 @- J+ l4 J1 E  X
  4076.             filename
    - x+ x7 l2 m  e1 m8 {
  4077.             "(.lsp/.exe/.arx) was not found in your search path folders."  ?& F# n, w/ o: v
  4078.     )& O( f& R2 Y! H& o' b
  4079.   )+ M. U- H/ r: w$ q/ B5 C
  4080.   (princ "\nCheck the installation of the support files and try again.")
    1 C2 D+ \; H0 A* h0 P
  4081.   (princ)& ?7 B' M6 O3 C3 v- k1 @
  4082. )
    3 i, o2 V4 S3 l8 R4 L$ v

  4083. / K& ^" z3 w' P' b1 O* T

  4084. % L8 d( |4 H' v% g1 Z" ~; v
  4085. ;;;===== AutoLoad LISP Applications =====
    7 ]6 S' u$ I9 N* r
  4086. ;  Set help for those apps with a command line interface$ M0 l5 A- E( M% L1 z' a
  4087. # k9 @5 ~. o1 K/ }
  4088. (autoload "edge"  '("edge"))
    ' d; q. @7 z9 b6 O* Z7 u) A
  4089. (setfunhelp "C:edge" "" "edge")
    9 j0 E5 ^6 J( Q. v! {2 \: \
  4090. ! N! V, c8 S+ F8 z" t' y  j  z
  4091. (autoload "filter" '("filter " "filter"))) k, z; h& V/ V: A/ {0 T) @

  4092. 3 A/ X' M) K- {; a7 t" X
  4093. (autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"
    & d# d7 c% I' x9 C! i, S; H) Q
  4094.                  "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")
    & o) K+ B9 L) Z3 `% D) o
  4095. )3 q2 Z  ~9 z% x8 p3 X! P: A
  4096. (setfunhelp "C:3d" "" "3d")6 }6 ]" ?' s) g7 ?; M
  4097. (setfunhelp "C:ai_box" "" "3d_box")
    & |$ |' |- z) _7 \, t3 }4 F$ m( c; u- t
  4098. (setfunhelp "C:ai_pyramid" "" "3d_pyramid")
    9 g* e! S; O: N0 |
  4099. (setfunhelp "C:ai__wedge" "" "3d_wedge")
    , J3 v+ f& F0 l. g
  4100. (setfunhelp "C:ai_dome" "" "3d_dome")9 m; f. `' }+ z! i  a
  4101. (setfunhelp "C:ai_mesh" "" "3d_mesh")' A) D5 f. K* d6 z- C5 G
  4102. (setfunhelp "C:ai_sphere" "" "3d_sphere")
    9 j* q' j5 z2 t* {% V! k; P5 C
  4103. (setfunhelp "C:ai_cone" "" "3d_cone")
    / X4 E: F" O8 ?9 Y4 s
  4104. (setfunhelp "C:ai_torus" "" "3d_torus")" O0 {- \. W. O! X( L: ^
  4105. (setfunhelp "C:ai_dish" "" "3d_dish")* F$ J- ]: ^8 {: z9 Z

  4106. , ?! O5 V7 z* U% `$ J! N
  4107. (autoload "3darray" '("3darray"))
    # `6 z  [# G7 Z! h; o) t! @3 O3 R
  4108. (setfunhelp "C:3darray" "" "3darray")8 z6 w1 d/ n" N: W

  4109. " g/ ]( W* Y/ z: |, U' L/ c
  4110. (autoload "ddvpoint" '("ddvpoint"))
    2 Z4 w7 D1 D8 S* ?2 y+ v
  4111. 5 O! u1 S8 Z8 f7 d4 B! i
  4112. (autoload "mvsetup" '("mvsetup"))
    4 B: X5 C. A9 ^5 _" u+ i6 g8 L: q
  4113. (setfunhelp "C:mvsetup" "" "mvsetup")
    ; v5 ]$ v/ w) o+ k9 C+ e3 g
  4114. , F3 d, W* c& y2 L
  4115. (autoload "ddptype" '("ddptype"))
    + ]1 k3 \: Q9 K' q7 X+ l$ y
  4116. . C3 d$ I$ y4 y, G. Y" n6 p8 ?5 C
  4117. (autoload "attredef" '("attredef"))0 |" m  a; F8 k, m, F
  4118. (setfunhelp "C:attredef" "" "attredef")+ t7 w, o3 M% a

  4119. : a, k0 H" c* f5 y' D& p
  4120. (autoload "xplode" '("xp" "xplode"))
    / o: q( }. |7 [0 e' Y( {7 M
  4121. (setfunhelp "C:xplode" "" "xplode")
    / m3 L6 D1 F5 G  C& D' P0 g
  4122. $ u6 J4 _7 F/ _- ?- U
  4123. (autoload "tutorial" '("tutdemo" "tutclear"
    - Q$ H; [& O0 `( }6 o
  4124.                                        "tutdemo" 3 x% K7 y! Y& M4 l$ G" G
  4125.                                        "tutclear"))
    2 j, P0 Z. D" j9 K
  4126. - Y. {; g' t' f0 Y' f% w" ~
  4127. ;;;===== AutoArxLoad Arx Applications =====
    + T2 s- ^& S; p: {# A0 l6 I
  4128. ; R5 r) Q8 W2 M# M4 ^+ O
  4129. (autoarxload "geomcal" '("cal" "cal"))3 ]9 w0 s! J. u7 p
  4130. ; q5 v) Q- h4 o/ M8 I- y
  4131. (autoarxload "geom3d" '("mirror3d" "rotate3d" "align". C. O+ u# h$ r; T) k1 H9 V
  4132.                       "mirror3d" "rotate3d" % [+ l5 N" ]  x& m4 |
  4133.                                  "align"))* t8 W( e) ]  e" p. O9 |* b1 j# C
  4134. 1 s1 |: ~5 Y- w9 C3 S, Z

  4135.   k# F# k3 h. h; N; j. r
  4136. ;;; ===== Double byte character handling functions =====
    " ~+ u/ A0 O9 t: y/ C! O

  4137. # z9 o: K; Z3 c- S4 M5 I
  4138. (defun is_lead_byte(code)# }+ K; Z8 [- q/ t+ W' {9 f! j
  4139.     (setq asia_cd (getvar "dwgcodepage"))& R" \9 R/ @$ Q
  4140.     (cond
    $ w5 \  _+ B: F, _
  4141.         ( (or (= asia_cd "dos932")
    * L4 f3 i$ G. D% g
  4142.               (= asia_cd "ANSI_932")7 j- r3 Y9 m! E1 }% k
  4143.           )
    7 ]$ }) Q: N$ @" ^
  4144.           (or (and (<= 129 code) (<= code 159))( L  C+ E5 U; f; x1 Y
  4145.               (and (<= 224 code) (<= code 252))2 ~( v5 Z, [6 U% z5 N+ s
  4146.           )7 Y8 R# g" {) J% i. K- v) h1 p5 {: P
  4147.         )8 Q# I" N3 P# A* i% W
  4148.         ( (or (= asia_cd "big5")  Y' a4 F/ T/ ]
  4149.               (= asia_cd "ANSI_950")
    2 J0 b% ?" G1 S: a% ?4 s
  4150.           )6 B( j! k% `( h
  4151.           (and (<= 129 code) (<= code 254))  W: N* h* o4 X5 u/ p4 U3 s
  4152.         )5 m, T# A% j) d5 G  V/ G
  4153.         ( (or (= asia_cd "gb2312"); t- i4 U; ]+ [* }: R/ h& x
  4154.               (= asia_cd "ANSI_936")" q! Q' T9 ]4 M- v; M
  4155.           )3 {: ]# Z  x. P  c  |
  4156.           (and (<= 161 code) (<= code 254))
    + p1 d: a( B3 G& D, q2 Z% t
  4157.         )
    . P' U; c4 k3 j) K; P. j
  4158.         ( (or (= asia_cd "johab")* _3 I2 Q4 q. [/ a
  4159.               (= asia_cd "ANSI_1361")5 q* {1 J% h/ a" t* [7 [
  4160.           )
    + r% T" n1 R1 m% I* ~
  4161.           (and (<= 132 code) (<= code 211))
    5 V9 h4 w$ m3 m( ~) U- L, A
  4162.         )5 B5 C8 l5 R6 ^/ o4 Y  H+ d
  4163.         ( (or (= asia_cd "ksc5601"); Q  D" i3 c# U& G- N
  4164.               (= asia_cd "ANSI_949")) N7 H9 D+ C0 B) c# O- t2 X  m
  4165.           )
    # }% ^  U9 m$ ?/ ]+ j
  4166.           (and (<= 129 code) (<= code 254))
    ' {9 P- m5 h4 v, f
  4167.         )
    2 B8 J9 _% Y. t9 t: F
  4168.     )
    6 q6 a9 k. G; l# T$ H* ]* f; [2 Q
  4169. )7 y: M/ z- K# \

  4170. 3 [9 v4 G6 l3 G" W5 ]3 F+ T8 Z' }
  4171. ;;; ====================================================
    $ }% l( A* n- P7 u6 U

  4172. 9 t& N- F; }5 O0 d) l$ S# j5 @, B& I

  4173. 4 q5 A: T8 [1 c/ }+ \# c- G
  4174. ;;;
    9 ]4 h5 a1 Q8 S8 x: u* D" `
  4175. ;;;  FITSTR2LEN
    4 X" o. p8 a3 T: h
  4176. ;;;3 i5 P6 T0 K* C; A: [" \- O
  4177. ;;;  Truncates the given string to the given length.
    # d! g1 l7 C$ K9 w: Y: Y
  4178. ;;;  This function should be used to fit symbol table names, that
    $ ]" \6 _) B0 K& }
  4179. ;;;  may turn into \U+ sequences into a given size to be displayed
    * v/ n4 A1 R+ E) |
  4180. ;;;  inside a dialog box.3 e  K9 V' m7 D0 y+ B4 @9 Y% W% n( M9 H6 a
  4181. ;;;8 {) r4 |" L$ _
  4182. ;;;  Ex: the following string:
    3 U5 ]4 W) t7 p2 k0 b7 w0 `
  4183. ;;;
    % e: m7 l  Q6 n% Q9 n
  4184. ;;;      "This is a long string that will not fit into a 32 character static text box."
    6 `: m% u* R: l+ W! z; y
  4185. ;;;) W) K- g+ ^* ?. F1 q1 O0 |
  4186. ;;;      would display as a 32 character long string as follows:, @  Q- J% C4 n" W# v6 p& s
  4187. ;;;
    * N/ d9 S/ d# k
  4188. ;;;      "This is a long...tatic text box."
    # S) |5 k% o+ T& Y3 t: b# ?
  4189. ;;;
    ( u; S6 _& l6 @9 ~3 E/ E
  4190. ) E; f9 G' A2 v0 F2 C! Q
  4191. (defun fitstr2len (str1 maxlen)
    . _6 O' b$ U2 Q. P. O
  4192. 2 ]& q; x, r) Q3 t0 b
  4193.     ;;; initialize internals
    8 ^% S& d) t* h/ c
  4194.     (setq tmpstr str1)2 I- [# L# z! O2 {% F" \, B8 X- l
  4195.     (setq len (strlen tmpstr))
    5 O& z1 S( |* c  b% Z4 A
  4196. ' G) ^) C" |/ Z! Y7 l
  4197.     (if (> len maxlen)
    2 ~/ X7 K: u* \  w: m- f
  4198.          (progn
    9 V) S7 c3 g$ R' v& ]
  4199.             (setq maxlen2 (/ maxlen 2))
    - l# _' B6 k1 m1 k3 m4 ?
  4200.             (if (> maxlen (* maxlen2 2))
    ( A. O, E0 T4 E& Z
  4201.                  (setq maxlen2 (- maxlen2 1))
    ; X  e+ r+ d: o
  4202.             )
    & q' l- O! t' }" L' c& p
  4203.             (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))
    " G5 u5 e7 r% j9 i/ s. k( |
  4204.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))
    , p1 h: e0 U9 d+ O) ~
  4205.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))' Y1 T6 r6 H7 {2 U6 Y/ X9 j. q
  4206.             )  ]9 l* z/ [6 z
  4207.             (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))
    : f' o1 k, u5 D0 W' @/ Z& f! m
  4208.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3))))4 \) l3 c9 Y' }
  4209.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))* {/ W0 {9 r% F1 g
  4210.             )
    . K$ P, y/ y3 c: I3 m
  4211.             (setq str2 (strcat tmpstr1 "..." tmpstr2))! Q  t% Z0 p% L6 M* }
  4212.          ) ;;; progn( ^' t7 ]& Q7 z- E4 V/ k/ u
  4213.          (setq str2 (strcat tmpstr))
    ; C1 N- W- z0 @  i" y
  4214.     ) ;;; if
    - m1 @5 |1 i) U5 J  H% |& I
  4215. ) ;;; defun
    % P; T; s1 `6 k! q8 R
  4216. ' z% P7 F$ b. _8 [5 W% c- h* l
  4217. + z2 s  d! h3 A0 p+ T' l* M
  4218. ;;;2 ~# Y% R8 o. q) ~
  4219. ;;;  If the first object in a selection set has an attached URL
    ( `) A# u: ?" S( e8 l  Z& n7 P
  4220. ;;;  Then launch browser and point to the URL.
    1 Q. w. ?1 ^2 i7 l9 u6 I4 k9 u
  4221. ;;;  Called by the Grips Cursor Menu+ {" N. g7 J& G. W
  4222. ;;;% l4 ]2 O+ a  k  F4 p
  4223. % l& b  x0 T* S* l
  4224. (defun C:gotourl ( / ssurl url i)
    1 S* j1 _8 B4 i8 a; M
  4225.    (setq m:err *error* *error* *merrmsg* i 0)
    # C( ~/ A! Q& Y  U' \
  4226. . k! k) N0 c  `' B, f/ y  h
  4227. ; if some objects are not already pickfirst selected, # \2 J5 g! L1 r( v
  4228. ; then allow objects to be selected6 c7 {8 ]6 |. G& `; Y$ q

  4229. 9 R( b6 }  @, C% r8 W: A! u8 j
  4230.   (if (not (setq ssurl (ssget "_I")))
    5 W6 H, K7 @2 |  G4 T) B
  4231.       (setq ssurl (ssget))
    3 D* W/ u  n. u  ]' M7 g- A% c
  4232.   )$ j" A7 i* x2 U0 y0 m% T( L$ t, ]

  4233. * G6 a3 T- O6 S5 n* r* z. k' o6 n
  4234. ; if geturl LISP command not found then load arx application' x& w3 P# J1 `' z. u3 C3 r2 ?. t

  4235. ; [1 a  n7 U7 q4 g( q0 [2 P. z/ ~  Q
  4236.   (if (/= (type geturl) 'EXRXSUBR)
    $ _1 j: e+ K0 e, d# H  P3 W
  4237.     (arxload "dwfout")$ C4 p+ R; Q* i' }1 i% _1 _
  4238.   )
    / a5 O( b# U5 _  z" e: T
  4239.   
    7 q8 p, {) m& p. ?& i
  4240. ;  Search list for first object with an URL
    ' H4 {, P. o+ G+ z. [3 A: P
  4241.   (while (and (= url nil) (< i (sslength ssurl)))4 t) @8 C1 ]+ B& ^
  4242.     (setq url (geturl (ssname ssurl i))
    8 `0 a7 _8 W7 z# x# b) N. [& K
  4243.           i (1+ i))
    6 t6 B! e1 }9 ?7 h+ j
  4244.   )
    2 j/ o' s0 n5 n, I3 X7 H" F% M
  4245. . m2 C. L% D7 D! U( e
  4246. ; If an URL has be found, open browser and point to URL( ]1 V1 |4 Q  `- e9 W( E# _
  4247.   (if (= url nil)7 K; h% m1 g; E( d# [' u0 r
  4248.     (alert "No Universal Resource Locator associated with the object.")
    : W/ d" Z% S) [, Q0 l
  4249.     (command "_.browser" url)
    + s* K. K5 s! J. ]! l8 B
  4250.   )
    * s7 Q+ V, e! o4 r, M3 T2 h

  4251. ' R) j" b3 v' K- q3 c: \
  4252.   (setq *error* m:err m:err nil)0 @& ~, M" F8 J8 r. q' X' L) |% I$ @
  4253.   (princ). m# q: d( R; F$ ^- j
  4254. $ r9 y) J2 P2 m0 ]7 l* b7 H4 ~
  4255. )4 p6 {% G0 d' E

  4256. ( L8 _+ o9 h: {7 [$ ?7 K
  4257. ;; Used by the import dialog to silently load a 3ds file
    4 J' ~- O( |% \
  4258. (defun import3ds (filename / filedia_old render)0 k8 t( l# G5 @& J2 ?
  4259.   ;; Load Render if not loaded4 l) s$ L  N+ a
  4260.   (setq render (findfile "acRender.arx"))
    - ?3 K' _4 b; ~% Z
  4261.   (if render8 {( t8 f* q, O" n0 F3 E7 @
  4262.     (verify_arxapp_loaded render) & F# B! D6 T7 x# `" j- h; o3 _
  4263.     (quit)
    ) w: h; t. o! P0 U( M: s  I
  4264.   )8 N1 N6 H+ ^3 E& y* S- z+ E

  4265. 6 J2 }; G! a/ H) K6 f
  4266.   ;; Save current filedia & cmdecho setting.
    5 `3 L1 S! v& Y* Z/ D( @
  4267.   (setq filedia-save (getvar "FILEDIA")). F5 x' ]8 M; @  n% K- ^) W6 j
  4268.   (setq cmdecho-save (getvar "CMDECHO"))
    5 N/ J& O9 k3 p' Z
  4269.   (setvar "FILEDIA" 0)# U3 n. P/ P) V: T) g/ y! H
  4270.   (setvar "CMDECHO" 0)9 A1 o+ i0 U$ P' v! N: k' m' ]+ z: l

  4271. 3 y, {* Y5 _6 S
  4272.   ;; Call 3DSIN and pass in filename.
    ; F/ ]. B" p4 @  A  q
  4273.   (c:3dsin 1 filename)
    + z; j/ `6 ?* R" t4 R

  4274. 9 A( F+ w1 C, ~2 J3 [9 l
  4275.   ;; Reset filedia & cmdecho0 X* F9 n& k9 e' D0 n5 Y% b% Q
  4276.   (setvar "FILEDIA" filedia-save)
    * P  t0 t0 ]  i0 J5 a7 a
  4277.   (setvar "CMDECHO" cmdecho-save)- |: v. U) `0 M! J
  4278.   (princ)+ }2 M; W" B# y; ~% N1 `/ P. d
  4279. )) w1 q6 G  S0 H" w. S

  4280. 4 P" z6 r. @5 x$ |3 Z
  4281. ; @) q2 o7 P& r& L3 Z* }7 F
  4282. ;;;=== Menu Functions ======================================& _0 K( w' E5 Y" r/ h4 Q+ h! _& l

  4283. 0 T3 q/ ^1 L3 Y) E
  4284. (defun ai_rootmenus ()
    ! w9 l7 [, M# w
  4285.   (setq T_MENU 0)- B+ v1 i2 s* j- g) _9 r) H
  4286.   (menucmd "S=S")
    / G' o3 ~# ~1 y! x: m  W+ m& b
  4287.   (menucmd "S=ACAD.S")# O) o7 v# ]( A- J+ M6 O
  4288.   (princ)- D& ]4 p/ A( I$ ?+ [" v5 |' e
  4289. )7 M2 R: L2 g) d6 O! i/ U
  4290. 6 b* |. E7 N" n! V$ i
  4291. (defun c:ai_fms ( / fmsa fmsb)  Q1 F) \# D! V2 _( B8 J
  4292.   (setq m:err *error* *error* *merr*)3 H" v, q) V  V" w, j
  4293.   (ai_undo_push)6 ]5 L2 c% ]0 }. I' {- H
  4294.   (if (getvar "TILEMODE") (setvar "TILEMODE" 0))$ t/ A8 M7 n, E+ n5 p* F
  4295.   (setq fmsa (vports) fmsb (nth 0 fmsa))  k9 j" `# K' c" N: x; l
  4296.   (if (member 1 fmsb)6 W- a7 [9 K+ g) G; e( d/ ]3 m
  4297.     (if (> (length fmsa) 1)" W- m: J% e5 L8 L
  4298.       (command "_.mspace")# B  ]6 f6 q/ O) g( J+ e
  4299.       (progn
    ( ~& ]1 f3 Z1 k  R2 k  g9 u! R
  4300.         (ai_sysvar '("cmdecho" . 1))
    * X0 f, e8 S8 j
  4301.         (command "_.mview")4 c0 m% g. S& k4 k- L, d7 {) m
  4302.         (while (eq 1 (logand 1 (getvar "CMDACTIVE")))1 \8 z' U9 s( K6 v. G% y
  4303.           (command pause)
    ' {1 l' S$ Q3 x3 L/ m, o4 m0 J
  4304.         )& A; D' g$ g/ W
  4305.         (ai_sysvar NIL)
    4 i( A8 T8 {! X3 P# d
  4306.         (command "_.mspace")/ c' W. h1 y# C4 b3 }8 r: z
  4307.       )
    0 b" j! h  N; T$ i3 f& e
  4308.     )
    ; t0 B% ]/ T! i" @0 g
  4309.   )
    $ L9 r! a3 I$ S7 U4 L; a5 L
  4310.   (ai_undo_pop)( c5 @4 O' W$ d
  4311.   (setq *error* m:err m:err nil)) Z# [" H- M( k/ g; u1 d
  4312.   (princ)
    7 G* J  M0 u% f! g
  4313. )
    0 Q* H8 T- G  d: z- ]
  4314. . i& Y9 q* W8 k7 b! g3 e
  4315. (defun ai_onoff (var)
    ; |# u9 U% d& g- P4 P' @
  4316.   (setvar var (abs (1- (getvar var))))
    . k; d  o7 s2 M. O1 u
  4317.   (princ)
    $ g7 G0 F. o4 m
  4318. )
    * i3 B# t+ [, D5 n* }
  4319. & O. B. S0 x. j4 A# Y* u
  4320. ;;; go to paper space& v* _7 v0 l; e' n1 T7 q. Q8 i
  4321. (defun c:ai_pspace ()
    ) ]! C6 {/ f: I; I# n
  4322.   (ai_undo_push)
    $ i% \% a) h( L4 _, S" `& W2 {
  4323.   (if (/= 0 (getvar "tilemode"))
    * u0 s* Q% I+ i1 \" r2 F
  4324.     (command "_.tilemode" 0)# m6 g% L2 k" n3 K
  4325.   )9 Y9 T8 C- V& g% z; o
  4326.   (if (/= 1 (getvar "cvport"))' j& _" l2 `- l6 J# _0 Q. {
  4327.     (command "_.pspace")
    , a9 n2 m, S. W8 j* ~
  4328.   )  p$ t& d3 F, f+ V
  4329.   (ai_undo_pop)
    ) B& i4 n0 m) m. r9 [
  4330.   (princ)
    % f/ P- o% N! D/ C
  4331. )
    2 w- R' z' I! f5 K8 j

  4332. & }: m$ Q3 @* |% ?- v
  4333. ;;; go to tilemode 1  y, d$ ?3 @5 s
  4334. (defun c:ai_tilemode1 ()
    9 i- ^  }' P& T
  4335.   (ai_undo_push)6 `5 y% u! k  q, [
  4336.   (if (/= 1 (getvar "tilemode"))
    ) w! V' |$ @% B5 g
  4337.     (command "_.tilemode" 1)7 W( g4 e5 \. K2 a% ~0 Y
  4338.   )( E3 y! L1 y  R% p8 C9 ]) B
  4339.   (ai_undo_pop)
      c6 F" \/ M5 g% P2 J! K
  4340.   (princ)
    $ ]7 y$ L' `) Y
  4341. )
    3 w% i! ]# B2 l: r6 c

  4342. # g+ I9 }5 h( x! u' v
  4343. ;;; Pop menu Draw/ Dim/ Align Text/ Centered
    # n% U: w0 U3 y
  4344. ;;; Toolbar Dimensions/ Align Text/ Centered+ I: a; p6 c7 f' V; l

  4345. 4 M2 G) c% A  @7 h4 s: i
  4346. (defun ai_dim_cen (/ ai_sysvar ai_dim_ss)( ~' _4 d7 ]& n% C0 x2 G3 X/ c5 Y- W% w
  4347.   (setq ai_sysvar (getvar "cmdecho"))
    / V9 \& G3 y2 F6 h' W; Z
  4348.   (setvar "cmdecho" 0)
    0 @0 |, `4 O" c
  4349.   (cond
    9 k4 Z$ a5 |$ _2 m2 L: O& N
  4350.     ((setq ai_dim_ss (ssget  "_P" '((0 . "DIMENSION"))))% u# s4 L7 m0 x
  4351.       (command "_.dimoverride" "_dimjust" 0 "" ai_dim_ss ""
    & @4 E) \; m% g( b! L
  4352.                "_.dimtedit" ai_dim_ss "_h")
      @9 t2 s' v5 f8 Z0 X1 G* k! ?
  4353.     )
    0 m8 s2 x7 G  y/ K
  4354.     (T nil); M) S1 A8 T, E* x& h4 A2 Q& w
  4355.   )
    8 U2 X% E( n) ]6 Z
  4356.   (setvar "cmdecho" ai_sysvar)
    . e& o6 P+ D/ U; V7 H/ \& F
  4357.   (princ)
    7 ]- V0 r0 \2 d) g
  4358. )
    / R. i. j8 W. E" T
  4359. & G) g2 Y1 M" c6 h) O! R
  4360. ;;; Shortcut menu for Dimension Text Above % I" z! E( u. s; p4 L9 d! R$ H

  4361. , X9 i! k9 G5 o! j6 o, l7 E
  4362. (defun c:ai_dim_textabove (/ ss)
    2 s/ K; M. r8 ]6 G8 L* R: c
  4363.   (ai_sysvar '("cmdecho" . 0))
    6 k6 u  x: M6 z1 Z1 |1 q* \
  4364.   (if (setq ss (ssget "_I"))7 L4 @2 Z$ J0 f
  4365.     (command "_.dimoverride" "_dimtad" 3 "" ss "")  N0 X  G8 g. R9 N1 z" C, b
  4366.     (if (setq ss (ssget))
    7 a  b, v2 i5 V
  4367.       (command "_.dimoverride" "_dimtad" 3 "" ss "") 6 E0 O5 A! O+ C5 r3 B$ O
  4368.     )8 v7 O8 P: v4 i8 N1 y
  4369.   )
    : h/ u% @0 g( Q8 Z+ }1 U1 |' @1 x
  4370.   (ai_sysvar NIL)4 |) F7 Z% R5 h6 n3 X
  4371.   (princ)2 l" |. z0 l' I  }, k
  4372. ); w/ U6 x- o  E  h" o9 L" m

  4373. . {* J9 y- S2 V- U9 Q' }/ R
  4374. ;;; Shortcut menu for Dimension Text Center
    7 W! v8 X5 A2 Z4 ^8 k: ]: Y; l
  4375. 3 L- I- y2 e0 ~; V
  4376. (defun c:ai_dim_textcenter (/ ss)
    9 q' L; ]7 F( T8 Q- F' G* O
  4377.   (ai_sysvar '("cmdecho" . 0))
    . `( a: q$ B- s# B
  4378.   (if (setq ss (ssget "_I"))
    ; y2 u" M% D7 X6 [9 ~, q
  4379.     (command "_.dimoverride" "_dimtad" 0 "" ss "")
    7 u. L$ R& D( e4 J. w+ O( l
  4380.     (if (setq ss (ssget))& i" e& r' r! g
  4381.       (command "_.dimoverride" "_dimtad" 0 "" ss "") 7 U9 A( q6 r- [6 Y5 `; g; B1 a; b/ P# O5 b
  4382.     )3 z& [+ s# \3 O
  4383.   )* o0 m$ `3 U1 H! q* A
  4384.   (ai_sysvar NIL)
    " B/ Y$ N" ^% p' u6 {0 t
  4385.   (princ)% D- q( ~/ |5 b8 [; H  F- P. `
  4386. )1 F& O: e# M5 I7 \  q

  4387. 8 [" a/ J& \1 @% b$ U
  4388. ;;; Shortcut menu for Dimension Text Home # U) M! [% M$ ~* E$ I& n( g% t

  4389. " F$ g! f% }0 W8 M8 W5 y
  4390. (defun c:ai_dim_texthome (/ ss); G2 C- m  J/ Y1 s
  4391.   (ai_sysvar '("cmdecho" . 0)), t( q& ~6 r% J: @, x* @8 d) ]
  4392.   (if (setq ss (ssget "_I")), @3 D9 x: ~$ o& z1 T, b4 Y, L
  4393.     (command "_.dimedit" "_h")4 ]- Q5 d3 t) r2 i# J4 u+ Y
  4394.     (if (setq ss (ssget))2 O& o2 K+ V% w- f
  4395.       (command "_.dimedit" "_h" ss): k& s, N1 X3 S9 e8 D9 O; D) H  w3 K
  4396.     )4 i- q: G% r3 N7 ?
  4397.   )
    ' g1 o# y$ F( c6 ~) C
  4398.   (ai_sysvar NIL)6 R; g' h+ v8 C+ V- M4 F$ ?
  4399.   (princ)( ?; m  _4 N3 ?* J6 F/ i
  4400. )
    ; M: ]& C: Q; W. i5 \$ a3 L
  4401. % ]/ C  s; v7 H  ^1 Z% q9 K

  4402. , H* G) H/ T: x  F& Q1 l
  4403. ;;; Screen menu item for CIRCLE TaTaTan option.
    8 [+ Z5 C8 `( \; h* \: b  E! \
  4404. ;;;     first, get points on entities
    2 e; y; x$ K* Z* A5 {0 F/ b
  4405. (defun ai_circtanstart()  Y1 _1 T/ R' ^* ^4 Z- G
  4406.    (setq m:err *error* *error* *merr*)8 O" W5 E, o. C. }
  4407.    (ai_sysvar # B0 v3 l( y/ s/ D# c
  4408.       (list '("cmdecho" . 0)$ |8 F; a9 S! @) m
  4409.          ;; make sure _tan pick for CIRCLE gets same entity
    4 s+ }( C+ f7 m
  4410.          (cons "aperture"  (getvar "pickbox"))' t8 l0 }# y2 x
  4411.           )
    * @! y& Z* X  D0 h! f
  4412.    )7 f" S/ R; R/ n
  4413.    ;; prompts are the same as CIRCLE/TTR command option
    . u* t. H- h0 l5 b* x  l) K/ R
  4414.    (setq pt1 (ai_entsnap "\nEnter Tangent spec: "  nil))" o; G' |" m' Q9 K- t0 {, z
  4415.    (setq pt2 (ai_entsnap "\nEnter second Tangent spec: " nil))# L# ?8 g$ Y* T+ w- D+ b" t, |! d- ^
  4416.    (setq pt3 (ai_entsnap "\nEnter third Tangent spec: "  nil))& |* x+ r; n; w  L$ ^
  4417. )
    5 a, F; m4 A. r! U; a$ c8 O
  4418. ;;; Command-line version
    1 B4 F2 ~  S6 W$ u3 c: b$ p4 a' o
  4419. (defun c:ai_circtan (/ pt1 pt2 pt3)
    ; B& k4 `+ t4 W
  4420.    (ai_circtanstart)9 U2 U& f) [' s
  4421. 0 ^% c% ^! Q' T
  4422.    (ai_sysvar '("osmode" . 256))
    ) w; ]; }$ ~( |8 t0 ?+ S# B- T
  4423.    (command "_.circle" "_3p" "_tan" pt1 "_tan" pt2 "_tan" pt3)
    : T$ h; ?% q/ A% Q2 _5 L4 V
  4424.    9 F9 y* ?; y! ~
  4425.    (ai_sysvar nil)- {/ v4 l: I/ ]8 w
  4426.    (setq *error* m:err m:err nil)
    # g* K! u- Y& b% ^4 n, ~
  4427.    (princ)
    / A1 X' m: b  D6 F
  4428. )" y9 Y3 p2 z5 D9 o( e9 m; c
  4429. ;;; Use this if CMDNAMES == CIRCLE# @- b( k( f8 d8 F2 ?1 e
  4430. (defun ai_circtan (/ pt1 pt2 pt3)
    $ D' ?$ F* Y  E3 V
  4431.    (ai_circtanstart)9 s: y5 o. N0 y% H
  4432. # o' F. @$ n+ B2 D+ K
  4433.    (ai_sysvar '("osmode" . 256)). U, x0 W; H/ Y; Q& c, l) f5 K
  4434.    (command "_3p" pt1  pt2  pt3); P, b1 X' l) R4 {' I. }- A+ L
  4435.    ; N% I! k- T3 o. r) J+ p5 P
  4436.    (ai_sysvar nil)
    & D: v( F4 g8 w. j! y
  4437.    (setq *error* m:err m:err nil)0 F3 |$ Y; y& o5 k9 t1 X8 r
  4438.    (princ)
    & K, v8 e4 t3 V
  4439. )
    2 ?: b' L5 O$ u
  4440. 1 e0 \9 q# ]. n8 }

  4441. " p7 x: h9 }$ c9 J. I+ K+ u7 J, T
  4442. - }( p4 W* P, |" ~" @3 e
  4443. ;;; Shortcut menu Deselect All item.
    . Y4 {' u+ i0 S) F! D/ G: r

  4444. 0 h# D' K9 R+ [% O1 B# D1 u' h9 [4 s
  4445. (defun ai_deselect ()
    1 G1 a! ^( x4 C: Y- j- g
  4446.    (if (= (getvar "cmdecho") 0)                        ;start if# I( s  ?5 L7 {' K' s) Z% G/ U
  4447.        (command "_.select" "_r" "_all" "")* l% Y: ?, Z* z/ j. V1 J4 C
  4448.        (progn                                        ;start progn for cmdecho 1; l$ @0 b1 a2 l( \# A
  4449.            (setvar "cmdecho" 0)+ b2 ~9 k" O+ ^9 k. z
  4450.            (command "_.select" "_r" "_all" "")
    0 b! _, `  A& I. j1 O0 G
  4451.            (setvar "cmdecho" 1)
    . E! S8 ?% O, `. o
  4452.        )                                        ;end progn for cmdecho 1
    8 Y; N' |7 T3 T. f/ \
  4453.    )                                                ;end if, }: a- m7 Q; t) v8 `7 @4 }1 K
  4454.    (terpri)0 F+ ~- ?! ?' d
  4455.    (prompt "Everything has been deselected")
    & v; E& ]( K3 r3 i8 U; Y. c
  4456.    (princ)
    7 q- }$ O+ b. o8 P
  4457. )- V; p1 E( l4 A& x" b5 b
  4458. ( u+ ]5 z6 g% l
  4459. ;;; Command version of ai_deselect to be called from the CUI
    0 d; S( X1 Y( T! K" w
  4460. ;;; so it gets properly recorded by the Action Recorder
    ' x' b/ n& y0 @( M
  4461. ;;;
    ( F3 g  I5 g$ c7 Q0 a+ e( ?# ^
  4462. (defun c:ai_deselect ()' O3 [, }3 Z( y3 Y3 @
  4463.   (ai_deselect)! l: r+ w3 X( d  Z
  4464.   (princ)
    , ~" g4 M* l# S3 ^/ v- |
  4465. )
    : [1 u/ V& k" H9 {- n0 @# S3 T7 a$ F

  4466. 8 Y2 }/ R. D) u# f& N0 t! w. B. u
  4467. ;;;
    ; g% P0 a' A" w4 d3 u. I& O& I6 }7 |
  4468. ;;; Enable Draworder to be called from a menu. X) d( Y0 O, y0 O& n; I) p
  4469. ;;; Checks for Pickfirst selected objects
    9 w  C* n/ h4 i% s. Q) M
  4470. ;;;' n7 _8 o  {; g
  4471. & y& R3 C8 R9 H7 t: A. A
  4472. (defun ai_draworder (option / ss )6 |" P! I  H! _% G
  4473. 8 ?% ~4 Z+ w  H5 o6 u
  4474.   (setq m:err *error* *error* *merr*)5 H; V2 S) ?) |; r. _; E% A& @# m
  4475.   (ai_sysvar '("cmdecho" . 0))
    & o4 M' K4 s& {  f
  4476. 7 l$ I# V% d7 G& s, m
  4477.   (if (setq ss (ssget "_I")); H  }. o+ K! [
  4478.     (command "_.draworder" option)
    5 w0 W# S5 s( E. G4 l
  4479.     (if (setq ss (ssget)). r7 A0 i' z/ ^. W  a
  4480.       (command "_.draworder" ss "" option)6 l. F) j0 @# I) C
  4481.     )' r% |3 ?! v- @
  4482.   )
    1 D5 ?/ U, f( O7 ^% m3 d- Y) }
  4483.   (ai_sysvar NIL)
    ! w; n" `7 t, Q% J
  4484.   (setq *error* m:err m:err nil)
    0 X* g  r2 i2 U  f+ x

  4485. : d  m0 f9 P( U8 s% V
  4486.   (princ)
    + d3 h3 s. V- ?1 e& h
  4487. )- U9 T9 D/ }- I4 [

  4488. 4 `; V' c7 x% u
  4489. ;;; Command version of ai_draworder to be called from the CUI0 p+ d; E* C1 L% O! ?
  4490. ;;; so it gets properly recorded by the Action Recorder
    * k8 }/ {7 L$ x  T4 \; G; F6 O) t
  4491. ;;;
      {% Q% a  C2 b  R
  4492. (defun c:ai_draworder ()
    7 I4 k6 U% \4 Y! j  m: `( y: |! s
  4493.   (initget "Above Under Front Back")
    3 L8 m# z  h* \$ W4 D
  4494.   (ai_draworder (strcat "_" (getkword)))
    ( N. p" t4 h9 n
  4495.   (princ)
    " J# ~* l! @! F
  4496. )9 O9 t- R* s1 S, b7 k( \: q
  4497. 7 H4 W; N) z2 h' E3 v# D
  4498. (defun c:vlisp ()! p8 @4 Y) S0 v( f8 C2 Q$ M- z
  4499.   (if (/= nil c:vlide) (c:vlide))! E2 z7 U+ h7 ]9 j& T
  4500. )" O4 a0 B0 y6 B% M
  4501. 2 F. v0 F. F) P2 t/ S$ u
  4502. (princ "loaded.")2 n$ i9 A$ V/ A  l0 V
  4503. 6 E: I* @8 ?' }
  4504. ;; Silent load.; F$ M  F1 B/ ^( j( i! S* M
  4505. (princ)$ v( y( }7 S+ w& f8 D
  4506. , R8 u" `: x9 N# o
  4507. ;;;----------------------------------------------------------------------------  z3 ^! C& e4 z) K
  4508. ;;;
    ) ^, O, p+ E2 O2 g; u* v( V+ [8 i
  4509. ;;;   DDCHPROP.LSP   Version 0.5
    1 L6 V$ E: F, ~$ H/ L
  4510. ;;;* n8 p( r5 C0 o' @( M8 g! D
  4511. ;;;   Copyright (C) 1991-1993 by Autodesk, Inc.! }7 h& Z6 L  c# X, u3 V
  4512. ;;;
    6 j% |( a/ k& I; ]4 b
  4513. ;;;   Permission to use, copy, modify, and distribute this software5 x1 X  M& H* s& l# Q3 D
  4514. ;;;   for any purpose and without fee is hereby granted, provided$ A" b$ F" ?. t6 J9 B; |
  4515. ;;;   that the above copyright notice appears in all copies and that) _* A$ x' e; l
  4516. ;;;   both that copyright notice and this permission notice appear in
    ! B( w9 ~% n% _9 _( g9 x
  4517. ;;;   all supporting documentation.: n, Z' ?$ m  t) H# e8 G
  4518. ;;;. i; R( o7 s1 K$ q) t8 a
  4519. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
    3 W! W2 [( I* k  _' H3 f; e6 e% I) y
  4520. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR/ N6 b& b% Y' J
  4521. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.$ K; g( k6 e! h2 X) I
  4522. ;;;. T; D: M6 F" }' m; u! \! i
  4523. ;;;   2 February 1992
    0 M' T( p! _  x3 Z+ m* ^! d0 a$ x
  4524. ;;;   8 O! g, a8 N6 [  e9 o
  4525. ;;;----------------------------------------------------------------------------( e7 N. d6 R1 g) n0 g5 Z
  4526. ;;;   DESCRIPTION  U. l5 M' h3 a8 E
  4527. ;;;----------------------------------------------------------------------------/ u8 |8 L( b9 L% H7 t+ u' I% z2 R
  4528. ;;;   C:DDCHPROP is a dialogue interface for the CHPROP command./ f; g' r( w( h. e  D. R9 s+ U$ ]
  4529. ;;;
    0 W" V7 {* b6 @+ A4 E
  4530. ;;;   The command looks similar to DDEMODES.  The main dialogue has an image 4 O, R& \" y7 l9 l% S, O6 z  @
  4531. ;;;   tile, 3 buttons (layer, color, linetype), and an editbox (thickness).   
    - E! C1 s0 q7 u4 d
  4532. ;;;   The 3 buttons each launch a sub-dialogue containing a list and edit box.  7 B6 H) w; W3 B+ _
  4533. ;;;   The dialogues are all defined in the DDCHPROP.DCL file.) q! O3 r4 d( T( }2 y5 y, g& G! w
  4534. ;;;
    6 ]( n* O/ M/ G4 v
  4535. ;;;# X/ E4 P7 y+ O% V2 f
  4536. ;;;----------------------------------------------------------------------------$ N. w/ e0 l2 D+ t( d
  4537. ;;;----------------------------------------------------------------------------
    " V; ^! v4 m( C! L/ H8 M. h% [
  4538. ;;;   Prefixes in command and keyword strings: : e% A: L. I5 f* u) k2 x
  4539. ;;;      "."  specifies the built-in AutoCAD command in case it has been        . n1 ]8 \0 S: ^3 C" A
  4540. ;;;           redefined.: K& U+ ~2 N8 U9 S. l: v1 M2 c; l
  4541. ;;;      "_"  denotes an AutoCAD command or keyword in the native language* V5 ~1 q* f% X& z4 F/ {
  4542. ;;;           version, English.
    ) P9 P6 D8 Q6 f* q
  4543. ;;;----------------------------------------------------------------------------
    6 a% \) Y5 U. }) v7 j& T; ~2 w
  4544. ;;;6 n0 Y% v# N. T% d2 j; |) p  i
  4545. ;;;
    - t5 N6 k4 R) b: C$ U5 U
  4546. ;;; ===========================================================================+ _# R9 b+ M% q: u& Q$ O. _+ E
  4547. ;;; ===================== load-time error checking ============================
    1 J9 ]) P' q& W1 r' H
  4548. ;;;9 j+ i% |  o$ B# t
  4549. ' d9 W; w1 b! t" o( P/ F, C/ `  z1 ]
  4550.   (defun ai_abort (app msg)
    6 x0 z1 p# t% r9 _
  4551.      (defun *error* (s)
    1 @8 z0 z( {' ]- v. `6 [' Q; B$ A2 c5 s
  4552.         (if old_error (setq *error* old_error))
      E0 \/ d! G" z0 k
  4553.         (princ)
    1 Y2 B! o, N& H: @5 N1 W+ |8 I
  4554.      )* m5 A' M% |5 K2 b5 f) Z0 f8 H* S
  4555.      (if msg
    & U! Y" w! I! w3 z
  4556.        (alert (strcat " Application error: "2 a8 w6 z& u8 Q4 _3 ?0 B
  4557.                       app+ m1 w' x% p6 G# E# C6 |% \
  4558.                       " \n\n  "; B7 Y  L: d/ ]4 Z  X
  4559.                       msg
    9 o" ]: B4 c* a/ ]
  4560.                       "  \n"
    , `% ~$ F. I0 B. Q
  4561.               ): z; g8 e: y8 M5 V2 ], f" H) K4 P# A  R
  4562.        )
    * k' z5 _* O8 A, m( f3 K+ r
  4563.      )0 r- k  t$ S  C) o% }: Z$ {; T7 k
  4564.      (exit)
    , a+ Z* u8 Q" G$ T1 H2 G" P
  4565.   )
    : e$ k1 \' b7 O! P

  4566. 8 w( V' Y3 w  ^# q+ A/ V
  4567. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    5 V9 P. F# v, J  j2 H9 E3 u
  4568. ;;; and then try to load it.* f1 `2 r: _' U
  4569. ;;;
    ( M& H5 f1 a4 S9 Z9 c3 Y
  4570. ;;; If it can't be found or it can't be loaded, then abort the8 J& O4 F! m. o
  4571. ;;; loading of this file immediately, preserving the (autoload)4 ]9 r2 G% k, v( s! f) S
  4572. ;;; stub function.
    & N2 u- T: x8 N( Q/ {& V& i8 v5 y

  4573. ( c5 W1 q8 E6 P0 B" w
  4574.   (cond
    7 c9 n# N5 w! k& R) }
  4575.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    % c& m; x& J9 h
  4576. ( [) \  a. j! N: s& C
  4577.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    " _: i0 L6 S3 V! u2 p7 M
  4578.         (ai_abort "DDCHPROP"
    9 x: ?- N6 O8 m# y
  4579.                   (strcat "Can't locate file AI_UTILS.LSP."
    9 h5 R3 |) }9 w; J$ T4 o
  4580.                           "\n Check support directory.")))
    ; r8 i) d! X. h. P# A' R
  4581. ! B3 P0 n* ~9 S# m# v+ F  b
  4582.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it, ~" Q) D* K3 O' ]# V5 O
  4583.         (ai_abort "DDCHPROP" "Can't load file AI_UTILS.LSP"))8 a" F8 z- ], |
  4584.   )
    + H0 l3 y7 Y5 R' n
  4585. # l' p4 j7 @% u" y  H  N& u4 b
  4586.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP( P! n- l* {+ B7 P  a; s& h
  4587.       (ai_abort "DDCHPROP" nil)        ; a Nil <msg> supresses
    7 E# r# l, e* M! K
  4588.   )                                    ; ai_abort's alert box dialog., D7 [6 x3 v$ f4 R' l
  4589. . z% w; q4 n2 G8 ^
  4590. ;;; ==================== end load-time operations ===========================
    . l7 K4 W4 L. }" L6 E% Q" x

  4591. $ q$ N4 r/ p$ N6 Z) ^" D! D  C" X
  4592. ;;; Initialize program subroutines and variables.3 d! k4 n2 _6 m# \

  4593. ' I7 [. x8 b# z1 m* O5 G
  4594. (defun ddchprop_init ()" |  w: c  Q( l7 p$ U3 f
  4595. 0 C  @" T5 T3 X: A; p
  4596.   ;;
    9 `: {/ ^! [: A
  4597.   ;; Define buttons and set values in CHPROP dialogue box % ~3 q; S6 D( d) ~
  4598.   ;;5 g3 r" P& ?/ ]' I! G6 {
  4599.   (defun call_chp ()
    3 X" v! \. d! R8 G% W/ D
  4600.     (if (not (new_dialog "ch_prop" dcl_id)) (exit))# l' M' Y- r. r- {: m6 m. t
  4601.     (set_tile "error" "")% |0 l5 n! `, b% i! f
  4602.     ;; Set initial dialogue tile values
    # [5 b' O9 ^* o: v+ g2 Z
  4603.     (set_col_tile)
    2 x$ Q/ h9 ~0 o! W% v
  4604.     (if (= lay-idx nil)
    # J6 ?! D8 q+ T- ?8 v
  4605.       (set_tile "t_layer" "Varies")8 j0 F) `7 Z% y, l5 U: {" I
  4606.       (set_tile "t_layer" (nth lay-idx laynmlst))+ `0 ]) Q' Z; O' @7 p" E; N
  4607.     )
    0 B+ x& o( V% `
  4608.     (cond
    1 c: x* S" k, d) @# P$ D( G7 T
  4609.       ((= lt-idx nil)6 M: T, z# w& N7 |- v. Z3 l6 H
  4610.         (set_tile "t_ltype" "Varies")7 v+ u: {1 m- f1 `/ f$ m
  4611.       )+ m" d  a) Z2 d; `
  4612.       ((= lt-idx 0) ; set tile "By layer & layer linetype". ~$ \8 o* P, o6 Y
  4613.         (set_tile "t_ltype" (bylayer_lt))3 J( U5 `2 y2 e; {% Y9 g
  4614.       )
    " R2 \- k3 @2 Z' n: T/ Z7 N9 i
  4615.       (T
    0 m& r" N3 Y8 ^% p0 k* h, B
  4616.         (set_tile "t_ltype" (nth lt-idx ltnmlst))% n3 k# \5 V+ l6 M3 ]  E
  4617.       )2 @: h8 P7 ~! l! W
  4618.     )9 R) y' p* U; q' Z! E8 h% D
  4619.     (if (or (= ethickness nil) (= ethickness "Varies"))* Y% d" V: r% z. K
  4620.       (set_tile "eb_thickness" "Varies")( q& I9 G& d0 T$ W
  4621.       (set_tile "eb_thickness" (rtos ethickness))
    1 u" R3 z+ K" [6 A
  4622.     )5 j2 B! _5 B: b7 [
  4623.     ;; Define action for tiles& Q2 s2 L, O7 C: r+ B
  4624.     (action_tile "b_color" "(setq ecolor (getcolor))")
    ! _: t# {( z" I) s
  4625.     (action_tile "show_image" "(setq ecolor (getcolor))")
    6 N" I1 f" A3 R( \# y  B9 D
  4626.     (action_tile "b_name" "(setq elayer (getlayer))"). k# O4 R$ K% w0 x3 T
  4627.     (action_tile "b_line" "(setq eltype (getltype))"), V  M) \3 `4 ?5 t0 I
  4628.     (action_tile "eb_thickness"  "(getthickness $value)")
    4 |3 S& h0 @( g
  4629.     (action_tile "help" "(acad_helpdlg \"acad.hlp\"  \"ddchprop\")")3 T" ^* T; W$ n
  4630.     (action_tile "accept" "(test-ok)")
    ( R+ R9 I% B1 Y4 N' b
  4631.     (if (= (start_dialog) 1)) q- z0 r) z( `
  4632.       (progn. z( b8 m% h! j! p- s6 ?
  4633.         (command "_.chprop" ss "")) ?5 |  y+ O2 m9 p# P4 B) Z" L
  4634.         (if ecolor
    - ?4 B: t1 d. F+ x8 o
  4635.           (progn* ?, X4 ~) r5 D0 e6 C( B
  4636.             (if (= 0 ecolor )   (setq ecolor "BYBLOCK"))& s8 |/ i2 x: V' U/ U
  4637.             (if (= 256 ecolor ) (setq ecolor "BYLAYER"))3 T* z. m# [6 m  ?- _# q/ z& n
  4638.             (command "_c" ecolor)$ D: x; h  R5 \* ~+ k
  4639.           )
    7 i1 l3 f: P# V: u. q# L/ w
  4640.         ): u; ]: m2 ~( J0 b2 Z- h7 }; W* N
  4641.         (if (and (/= eltype "Varies") lt-idx)% r3 A' M% S( ]* c
  4642.           (command "_lt" eltype)
    $ y+ W2 v) R, R/ p8 {5 C
  4643.         )
    7 c0 L' B1 V# n; _! y" h
  4644.         (if (and (/= elayer "Varies") lay-idx)) z: G+ _- E$ w  X
  4645.           (command "_la" elayer)
    - k  }0 U7 {) N6 v/ t
  4646.         )
    . t; D6 E& B( u7 [* e
  4647.         (if (and (/= ethickness "Varies") ethickness)
    / y! Q9 R/ F5 D/ H& g: Y. R
  4648.           (command "_t" ethickness)
    ' Y: e$ Y7 [8 J0 G1 [: b+ A
  4649.         )3 S3 _: ^# _" O) A6 l) ^
  4650.         (command "")
    * @9 y- ]* {3 T- @8 \! B
  4651.       )  F+ f# f* n) |" _
  4652.       (princ "\nProperties unchanged")+ {( k) m3 {4 T+ J/ r
  4653.     )
    & O7 z6 n! G2 @  O* C8 l
  4654.     (princ)
    * ?; p5 Z! R: Q: j3 P# u4 M2 |3 y
  4655.   )
    ' R. ~+ S! _5 _- M' a! x
  4656.   ;;
    2 R- c" _( R' C4 a& _  ?
  4657.   ;; Function to set the Color text tile and swab to the current color value.
    - r: K7 [8 h( y5 X( x7 ~, a
  4658.   ;;
    - R$ b2 l/ f2 V7 ~2 G2 c# z. ]
  4659.   (defun set_col_tile()  Z' L8 R; Q+ @8 F1 D
  4660.     (cond
    6 ^  N8 u3 {6 R9 |8 i' N9 ?- j
  4661.       ((= ecolor nil)0 p: F8 ]. z+ G0 T
  4662.         (set_tile "t_color" "Varies")3 _& \! z2 C5 ^# v1 v* M  K8 b  c
  4663.         (col_tile "show_image" 0 nil)
    ! I+ J8 X$ ?4 m' G7 c! U
  4664.       )
    * _6 g; k* F4 p
  4665.       ((= ecolor 0); o8 Y* U, m$ V- c. U
  4666.         (set_tile "t_color" "BYBLOCK")8 o: |( S$ @0 \. v
  4667.         (col_tile "show_image" 0 nil)0 @; p6 F% ?6 D* e6 U
  4668.       )
    2 v, Y! m1 \9 S+ X. N7 f2 w7 U
  4669.       ((= ecolor 1)
    & G' L! J) |6 s7 ]5 S! J! o" U
  4670.         (set_tile "t_color" "1 red")
    2 P1 C5 j, q3 g  C$ M' a# I% I
  4671.         (col_tile "show_image" 1 nil)' M1 r* C1 A* B9 G4 x
  4672.       )  P6 B2 {4 w& w! ?0 I
  4673.       ((= ecolor 2)6 k$ O% N* M' r2 M0 X' G
  4674.         (set_tile "t_color" "2 yellow")
    7 m* C6 Y' k% {5 c
  4675.         (col_tile "show_image" 2 nil)
    $ D0 E$ ]6 w* p% L3 c9 ]' f
  4676.       )0 H+ C2 W9 p+ @; M. B& X6 J5 A
  4677.       ((= ecolor 3)
    2 e& O* r- f2 `* U
  4678.         (set_tile "t_color" "3 green")# e  k; u) a. z: Z" N/ @+ |6 C
  4679.         (col_tile "show_image" 3 nil)6 K3 t8 O) H! j4 k" w9 N
  4680.       )! d5 C6 L4 k9 c
  4681.       ((= ecolor 4)
    3 Q; P2 t5 b. w- ]6 p* e
  4682.         (set_tile "t_color" "4 cyan")
    ' G3 q6 l& j; s
  4683.         (col_tile "show_image" 4 nil)  |  i& r+ b9 _4 j
  4684.       )
    $ ~- J3 S8 {( L  Z6 t
  4685.       ((= ecolor 5). @. h5 h- b* {
  4686.         (set_tile "t_color" "5 blue")
    7 e+ R% D0 R; f; d7 ~) I
  4687.         (col_tile "show_image" 5 nil)7 a+ G, |+ I" ?
  4688.       )1 U7 ]; p, s! n. R2 A! g3 f; }
  4689.       ((= ecolor 6)3 D; w+ [# U; W( t; e; ^
  4690.         (set_tile "t_color" "6 magenta")
    0 Y" {. Q: X7 |2 s
  4691.         (col_tile "show_image" 6 nil)
    " D/ u, a" F3 g4 y% T8 z7 Q
  4692.       )
    7 e- o+ |4 {( |" x+ z
  4693.       ((= ecolor 7)1 [, P+ a+ ?1 C1 C3 ^+ w( Z- Y
  4694.         (set_tile "t_color" "7 white")
    3 d$ G+ S1 V& \+ n
  4695.         (col_tile "show_image" 7 nil)
    0 F" ^" y  K( G, I
  4696.       )
    5 h9 L  z0 C8 K0 q* e/ A4 w
  4697.       ;; If the color is "BYLAYER", then set the tile to. ~- j! ]# s3 k+ N# j3 T
  4698.       ;; show it's set By layer, but also indicate the  s* {7 H, M) A$ S  ?/ P
  4699.       ;; color of the layer - i.e. By layer (red)" g5 B# n/ V( C# ~( e
  4700.       ((= ecolor 256)0 N/ n8 q. B( Y' }8 y; W! j; ]
  4701.         (set_tile "t_color" (bylayer_col))
      s# t2 z" A3 ~+ P; k) K# a9 v
  4702.         (col_tile "show_image" cn nil)
    9 d: @, R+ S* c4 _" e6 S+ e7 v% q
  4703.       )
    1 k: Y, w+ i& d* F. ^5 F2 _5 d/ u
  4704.       (T 5 H! @5 Z( K9 R
  4705.         (set_tile "t_color" (itoa ecolor))/ `/ o# p2 O' i% ]9 ?3 I! y
  4706.         (col_tile "show_image" ecolor nil)
    0 x) i6 B* h/ g$ H; B. j- ^
  4707.       )/ `2 u. K; W/ s, O
  4708.     )
    7 e+ `) n) T0 ^: D4 t+ E+ L( W
  4709.   )
    $ {. W+ N' d7 w; d6 w* l
  4710.   ;;
    - i0 k( u* w6 W- F* W
  4711.   ;;  Function to put up the standard color dialogue.! n8 r9 Y4 y5 j# ], Z8 u! ~
  4712.   ;;
    9 l2 b8 d0 C# Z, }$ J4 z# ?
  4713.   (defun getcolor(/ col_def lay_clr temp_color)# z" y$ J0 k& l) c, r
  4714.     ;; col_def is the default color used when rq_color is called.  If ecolor : N5 \; ]+ D  y8 ~  f
  4715.     ;; is nil (varies) then set it to 1, else use the value of ecolor.
    $ Z" r7 D: J7 J
  4716.     (if ecolor
    - N/ G/ D- A4 L7 q# M1 u- E
  4717.       (setq col_def ecolor)
    ( ]3 u& ?0 y4 V) [$ ]4 b  x" }" M# o5 `
  4718.       (setq col_def 1); F# E* m6 t9 u+ n: D
  4719.     )
    % ~- V! i: T% A: u* z9 I, z
  4720.        " `# s1 g4 G* s( K7 ~) I) E
  4721.     ;; If we're working with a single layer, get its color. n# ^: B2 Q0 w% j9 s/ f
  4722.     ;; for use in the color swatch if the user selects color BYLAYER.2 q8 r! m' K, b, o
  4723.     (if (/= elayer "Varies")
    ; @% \- Q. c+ Q3 j: B* N* \
  4724.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    ( h5 q4 |" [" f4 p! b5 G5 s+ k, n2 J
  4725.       (setq lay_clr 0)3 S% Q! ]1 n, I
  4726.     )2 u5 K0 W3 m3 \1 g
  4727.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))8 {5 ?: m/ ^* w& u' ?9 V8 l
  4728.       (progn% F, I( E* ~5 R; @4 j
  4729.         (setq ecolor temp_color)" s& M+ j0 h7 R5 D$ [) I1 N0 H
  4730.         (set_col_tile)
    4 d" U2 d6 e2 k+ X
  4731.         ecolor2 [: R+ }, o, d8 E7 r& h
  4732.       )
    , f/ a- o3 H) W; B3 \
  4733.       ecolor) R( R! n; m# d$ m
  4734.     )  ( j2 r; T) o0 A& ~0 t+ T3 D. L% [
  4735.   )5 J3 M" l0 M- C' d5 n9 v& U
  4736.   ;;
    7 N' l! B- k3 t8 T. p
  4737.   ;; This function pops a dialogue box consisting of a list box, image tile, # w8 e: p9 Z8 C1 {# O- @9 `/ d0 y! F
  4738.   ;; and edit box to allow the user to select or type a linetype.  It returns
    7 C3 C, W* A4 W$ G- M( _$ T
  4739.   ;; the linetype selected.& U# ~  c% X/ F& m7 X3 `
  4740.   ;;+ B+ f7 d' T+ c$ Z" c
  4741.   (defun getltype (/ old-idx ltname)
    ; w3 R9 D3 Q7 _2 Q
  4742.     ;; Initialize a dialogue from dialogue file% F' _- c3 N% {, t
  4743.     (if (not (new_dialog "setltype" dcl_id)) (exit))
    5 R# q  p7 h4 i1 V7 L9 e
  4744.     (start_list "list_lt")2 L$ j* c9 m; [3 o
  4745.     (mapcar 'add_list ltnmlst)         ; initialize list box/ j4 P; G" ~9 V3 S" n+ @
  4746.     (end_list)1 `- V" t- j0 L. c! Z0 O
  4747.     (setq old-idx lt-idx)) P4 w% s: g& O8 P8 C
  4748.     ;; Show initial ltype in image tile, list box, and edit box. E* H9 L3 Z: F- U
  4749.     (if (/= lt-idx nil)" m: v0 b+ l7 C* k
  4750.       (ltlist_act (itoa lt-idx))% i; j+ u. O6 Z! B; G( @* o2 Y
  4751.       (progn( n4 R. f1 m/ ?3 ^! p: d
  4752.         (set_tile "edit_lt" "Varies")0 f* R) U* I' e8 r+ S; Q1 D; b
  4753.         (col_tile "show_image" 0 nil)& a! W! t+ q& H; {5 A
  4754.       )
    , g# m9 _# C9 D
  4755.     )
    : I* O8 Y6 B6 F' [0 `
  4756.     (action_tile "list_lt" "(ltlist_act $value)")
    7 _9 q* |/ P1 N* G: C5 R7 m
  4757.     (action_tile "edit_lt" "(ltedit_act $value)")/ I: {7 i6 }2 _3 m+ j
  4758.     (action_tile "accept" "(test-ok)")
    # h% x& g7 [4 e  V" k
  4759.     (action_tile "cancel" "(reset-lt)")
    % i" B  s9 ?/ o. b! w. N. A
  4760.     (if (= (start_dialog) 1)           ; User pressed OK3 i2 Y; N. T0 `% j* f' \
  4761.       (cond
    " C6 f6 |; `# n! h8 d
  4762.         ((= lt-idx nil)
    1 |8 L2 F1 ?: `8 C) g& d: }
  4763.           (set_tile "t_ltype" "Varies")' D5 R( ]/ I. y7 O! r# {  w9 L
  4764.           "Varies"
    ( S9 W9 K' h# a2 n1 }5 \; W
  4765.         )( s6 v: N9 ^8 \
  4766.         ((= lt-idx 0)' [) g0 t" I1 l, a, H# j" s: v
  4767.           (set_tile "t_ltype" (bylayer_lt))  w1 b, N0 t: F1 h0 R4 n" x$ g
  4768.           "BYLAYER". H1 m4 K" a6 b1 `) e
  4769.         )
    $ ?( x9 t/ S; j" w2 O
  4770.         ((= lt-idx 1). R6 |+ I; ?4 y# n" Z
  4771.           (set_tile "t_ltype" "BYBLOCK")
    3 F  I8 g# K& }6 z9 l
  4772.           "BYBLOCK", x: p( Q* ^& d% y
  4773.         )
    $ w( F# @! C% T8 b. J+ X, k$ O
  4774.         (T  
    ' b3 m- O9 J" \; B
  4775.           (set_tile "t_ltype" ltname) - h; [: ]0 k$ w
  4776.           ltname
    " l$ H6 g& F. y  E1 ~
  4777.         )
    & p# t0 X7 j# I+ h: l! @4 q
  4778.       )* S% ]2 S: ^# S4 p. ~1 C  i6 D
  4779.       eltype- L& n  H2 q1 c; C6 I+ N
  4780.     )" C( F; n0 e3 `. o/ l
  4781.   )
    4 f9 x, v' }: O# S; G
  4782.   ;;
    $ u2 r8 x$ |* A; H8 h5 U
  4783.   ;; Edit box entries end up here) k! e: C$ T' Y/ X. y! I. s
  4784.   ;;; s! S; X1 G" a4 t! d; g/ s
  4785.   (defun ltedit_act (ltvalue)
    # s1 |% m0 o! c* D
  4786.     ;; If linetype name,is valid, then clear error string,
    ; e" f1 K) H$ @! l
  4787.     ;; call ltlist_act function, and change focus to list box.
    ' T2 g! J0 A$ n* @% \
  4788.     ;; Else print error message.
    , K, ~% U: Z, ~8 R! W8 q+ C
  4789.     (setq ltvalue (strcase ltvalue))
    ) h/ j0 q- A- \) [0 x
  4790.     (if (or (= ltvalue "BYLAYER") (= ltvalue "BY LAYER"))
    : A- B; J5 I' c
  4791.       (setq ltvalue "BYLAYER")
    $ s, L5 e5 d+ y8 I# H
  4792.     )
    1 F# Q% i" q% ^4 I6 Z
  4793.     (if (or (= ltvalue "BYBLOCK") (= ltvalue "BY BLOCK"))* c+ N$ j9 [! S4 W) D
  4794.       (setq ltvalue "BYBLOCK")
    & T1 B+ x$ y  B8 f9 f- x+ X
  4795.     )3 E$ f2 U2 e8 l8 O
  4796.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    : f) A2 R, Z" D) \
  4797.       (progn, S7 y1 s$ t7 u' J, }# {
  4798.         (set_tile "error" "")
    # p6 e5 |- B2 u7 ?8 G
  4799.         (ltlist_act (itoa lt-idx))- A7 M4 r+ U6 k( D8 F; ]
  4800.         (mode_tile "list_lt" 2)
    - o- J7 P% H0 N
  4801.       )
    $ d# S. u6 o0 U1 |$ L6 S
  4802.       (progn
      a" |7 f; v% p  c6 \
  4803.         (if (/= ltvalue "VARIES")
    " W$ ]2 I1 w3 @) \
  4804.           (set_tile "error" "Invalid linetype.")
    9 q: h0 D3 K0 d8 [& [+ c- d
  4805.         )
    9 O: R# O8 h3 }7 u
  4806.         (setq lt-idx old-idx)
      z9 Q3 i7 z1 R) @7 K" W0 r
  4807.       ) 3 R) d  d' E' b& a- {5 v
  4808.     )$ ?: U; n4 p; l: ?0 Q- m) I
  4809.   )3 W6 r0 G1 o8 l1 u
  4810.   ;;
    # g: n  S2 A) [
  4811.   ;; List selections end up here% y( l& O0 B& _  b% \# H% a& x
  4812.   ;;
    ' x8 H0 X6 O6 s' @/ d$ i4 I* D
  4813.   (defun ltlist_act (index / dashdata)2 V/ _# c( ^4 I# l  h: @! E
  4814.     ;; Update the list box, edit box, and color tile
    . g% x" a5 W( T% Z% ~- G  i
  4815.     (set_tile "error" "")
    % p) W7 F( M  Q2 t
  4816.     (setq lt-idx (atoi index))
    / E4 Y9 z/ _, `
  4817.     (setq ltname (nth lt-idx ltnmlst))0 H+ o) |9 U" P. @
  4818.     (setq dashdata (nth lt-idx mdashlist))
    1 i6 H( }* q; z2 y+ a& a
  4819.     (col_tile "show_image" 0 dashdata)9 k) x/ L# f9 J1 D8 ?! o" |
  4820.     (set_tile "list_lt" (itoa lt-idx))
      _" j$ h+ S8 I: N
  4821.     (set_tile "edit_lt" ltname)
    + y. i4 d5 q# Q  J5 X4 x
  4822.   )- B" d/ e2 L8 k9 V
  4823.   ;;. X$ Z0 _4 O2 @) K& D
  4824.   ;; Reset to original linetype when cancel it selected
    2 h$ t" Z' I8 I" j/ Y' U
  4825.   ;;2 Q  E9 ~  U1 N& F( g7 s% }5 N
  4826.   (defun reset-lt ()$ c4 U0 F* o, _2 L1 q! `
  4827.     (setq lt-idx old-idx)! A' R/ O( V! Z- v7 u
  4828.     (done_dialog 0)
    6 e+ `. j! F6 Q% M  M# c
  4829.   )8 g0 [) v( P' A( N
  4830.   ;;8 k9 w* J/ y' U4 B6 d  K8 Z" M
  4831.   ;; This function pops a dialogue box consisting of a list box and edit box to ) z* d! u2 ^, u; C
  4832.   ;; allow the user to select or type a layer name.  It returns the layer name ; L, Q7 s/ F! J; w; ]
  4833.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the . m* S6 A! i# E! Z" x9 }& T& U
  4834.   ;; drawing.
    & Q2 y! F1 ]3 r( g$ f) I
  4835.   ;;
    9 R8 x: _3 ]+ e8 j& ?# c; k& L
  4836.   (defun getlayer (/ old-idx layname on off frozth linetype colname)
    - Z1 u  ~4 V2 Y: ~$ K$ Z& ]
  4837.     ;; Load a dialogue from dialogue file
    / H9 n$ A$ \- m. V; J5 k& c
  4838.     (if (not (new_dialog "setlayer" dcl_id)) (exit))
    ; N- U% [4 N3 y+ J
  4839.     (start_list "list_lay")- w) r+ f3 t, |! a6 q
  4840.     (mapcar 'add_list longlist)        ; initialize list box
    : e$ h: \" W% V% I1 }: E7 E4 j
  4841.     (end_list)
    3 V  s6 f0 |' \2 g2 `& P9 w
  4842.     ;; Display current layer, show initial layer name in edit
    8 m2 k* e2 z5 d) I5 w& h8 z, r( ]
  4843.     ;; box, and highlight list box.
    2 M( l2 i9 M* y9 {3 s: J# j+ V8 a6 O; R
  4844.     (setq old-idx lay-idx)
    + D' w% k* _! a/ m. d% g
  4845.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))+ U9 x4 M/ D. _+ _0 @# M8 x* M
  4846.     (set_tile "cur_layer" (getvar "clayer"))
    " B! P% x& b% a% s5 ~6 {
  4847.     (action_tile "list_lay" "(laylist_act $value)")0 \" d* {  h3 _8 U5 H
  4848.     (action_tile "edit_lay" "(layedit_act $value)")
    1 ^/ p! k/ J" q  y) \. U
  4849.     (action_tile "accept" "(test-ok)")
    3 D& t; a- q  z& e2 T% M
  4850.     (action_tile "cancel" "(reset-lay)")
    3 v5 M6 c' {4 A
  4851.     (if (= (start_dialog) 1)           ; User pressed OK5 V3 N0 g5 x1 G+ U( ]8 I6 H# r
  4852.       (progn
    & V& m4 }. X& E! r- H! @
  4853.         (if (= lay-idx nil) (setq layname "Varies"))0 E) V* E& X0 F) S' ^
  4854.         (set_tile "t_layer" layname)
    * D0 ~9 U1 d7 Q4 S+ {- i& y
  4855.         ; If layer or ltype equals bylayer reset their tiles$ T6 a( B) x0 [3 F' g
  4856.         (if (= lt-idx 0)
    1 z$ `8 @/ z  D6 @2 i$ D
  4857.           (set_tile "t_ltype" (bylayer_lt))
    ' r# L' H/ W6 m2 v- Q
  4858.         )+ Z" x. ?* z9 s! r2 m* C. o5 ]
  4859.         (if (= ecolor 256)
    # n4 p+ |+ o5 x" C) e' s9 `
  4860.           (progn& w5 \7 g8 f- K4 g' |1 m0 Z
  4861.             (set_tile "t_color" (bylayer_col))1 x7 U6 I% p+ @4 V2 V3 d7 K
  4862.             (col_tile "show_image" cn nil)
    % M+ L' @' O& t1 B
  4863.           )
    6 ~: b7 O- P3 x4 S+ Y4 {
  4864.         )! T# y$ z8 J, w, r' M* p
  4865.         layname! \7 d7 p7 @0 _' f1 |  A: N
  4866.       )8 a% a! n, w7 p6 e  Q
  4867.       elayer
    # N) |, D) Z2 t( ]
  4868.     )
    ' U0 y! e' Z5 P3 y1 B1 b5 F
  4869.   )
    & m, ]4 d% k  P6 A+ |/ ^
  4870.   ;;
    , v/ A% b( S- C. p1 K; b
  4871.   ;; Edit box selections end up here
    # `9 a. z4 D" ?9 y5 A
  4872.   ;;2 h" a6 F8 U1 L) {
  4873.   (defun layedit_act (layvalue)8 q" h) C5 ?/ w
  4874.     ;; Convert layer entry to upper case.  If layer name is
    . C3 ]& \1 `0 }5 D1 r
  4875.     ;; valid, clear error string, call (laylist_act) function,
    5 ~0 G3 c3 T3 L$ Q
  4876.     ;; and change focus to list box.  Else print error message.
    ; G1 M% e1 c  g) G- T# i" C' k6 m
  4877.     (setq layvalue (strcase layvalue))
    7 S1 q- D" E6 ~2 O& M
  4878.     (if (setq lay-idx (getindex layvalue laynmlst))2 I+ |% @4 q1 a7 n  j2 D
  4879.       (progn
    ( u5 ]: q6 B+ Y+ L8 w- E2 `
  4880.         (set_tile "error" "")/ K, Z0 H. E: E
  4881.         (laylist_act (itoa lay-idx)), q: j7 n$ c+ i- F  r2 w3 I
  4882.       )
    ' z# i4 b- N5 i
  4883.       (progn
    / [! O9 X, ]- P$ J
  4884.         (set_tile "error" "Invalid layer name."); q. h0 ]- }9 A5 a9 x' D8 Z- {
  4885.         (setq lay-idx old-idx); m" i; d; A! A3 B: f+ e! T
  4886.       )
    ( C/ b4 E4 G2 S
  4887.     )
    ! ?& z' y# z  r2 N- x5 {
  4888.   )
    & R( Q! S) O2 R
  4889.   ;;
    # }6 J; P& K4 p4 p% p) y
  4890.   ;; List entry selections end up here
    8 c3 \* z) G% A. [( r
  4891.   ;;2 ~3 t$ Y* b+ b8 U7 v+ W
  4892.   (defun laylist_act (index / layinfo color dashdata)
    3 F9 Q# V$ F  G9 ]# w
  4893.     ;; Update the list box, edit box, and color tile
    . G+ ]/ m# S# K5 p
  4894.     (set_tile "error" "")+ |/ R" F' D8 f6 G0 o' R* Z
  4895.     (setq lay-idx (atoi index))- }- h% |7 ?2 n$ j) w# Y3 Q! K0 }
  4896.     (setq layname (nth lay-idx laynmlst))" P& ]; P( p) A$ j6 ^7 |0 L' d
  4897.     (setq layinfo (tblsearch "layer" layname))
    9 O* i' h& `" l" Z
  4898.     (if (= (logand (cdr (assoc 70 layinfo)) 4) 4)
    , @! S$ l0 q* o- F/ ?
  4899.       (set_tile "error" "Cannot change entity to locked layer.")
    7 ^3 K/ R, f* F
  4900.       (progn1 C. {% w) l" G
  4901.         (setq color (cdr (assoc 62 layinfo)))
    + K2 A$ f6 A: x; Y
  4902.         (setq color (abs color))6 N, O9 X# g! m8 j2 U* J
  4903.         (setq colname (colorname color))) R/ S; A" ]2 v2 J2 T! J6 q4 v+ l; @
  4904.         (set_tile "list_lay" (itoa lay-idx))
    8 c7 M( J: @6 ]8 O( m
  4905.         (set_tile "edit_lay" layname)% ]6 t" G- q4 D! t$ V
  4906.         (mode_tile "list_lay" 2)" Y5 k5 d* a9 a8 K$ e3 k0 L
  4907.       )
    6 _8 z7 Z" O2 F
  4908.     ), n6 U1 o4 A( `' d" u9 n; H7 m4 s; ]
  4909.   )
    ; Q% o' `2 w- I3 g% z
  4910.   ;;
    " j% |$ w" |% l; J, r* c
  4911.   ;; Reset to original layer when cancel is selected6 q- a; U0 X! v" U
  4912.   ;;6 Q/ g9 R  S6 e$ N
  4913.   (defun reset-lay ()
    2 ~5 O! c2 W+ y% h
  4914.     (setq lay-idx old-idx)
    2 |+ C, N3 Z+ o8 m. s) t+ D1 i" S
  4915.     (done_dialog 0)% R5 ]5 X2 j- f, o3 \5 R" Z
  4916.   )* X+ `, |/ W8 }" n. Z' X
  4917.   ;;/ u/ V: @9 S% `( Q
  4918.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a * B3 k! w2 k9 }/ U& q8 u9 q
  4919.   ;; string can't be converted to a real, this routine checks if the first * H" W" _& S- B% p" D
  4920.   ;; character is "0".  It also checks to see if the value equals "Varies".
    3 I# J& w2 t0 |9 q" }/ c" D! F5 D) t
  4921.   ;;* l5 B0 h- E$ h- ?' C9 o
  4922.   (defun getthickness (value)
    " Q1 n+ F, q* c$ i) J+ R* ^% N
  4923.     (setq value (strcase value))' F- O0 g9 W- X  f8 ]" F0 I+ F
  4924.     (if (or (= value "VARIES")& K1 J) U8 F0 u. c; \% \% i4 P
  4925.             (distof value)! @$ ^( K7 _$ M& O
  4926.         )  G. y5 H" i# t% B6 d" F- e
  4927.       (progn
    3 k4 q2 V6 e; _" t* y6 V3 d
  4928.         (set_tile "error" "")+ P3 N* G& y8 P: `  x! n: A) S- Q6 ~
  4929.         (if (= value "VARIES")
    / D; ]$ m" m# q, N
  4930.           (progn; Q  [3 z0 R( E1 j) v1 M
  4931.             (set_tile "eb_thickness" "Varies")
    9 J7 u/ I6 u) l* I. x
  4932.             (setq ethickness nil)
    $ E% ]* ?9 X& {/ _  i. w
  4933.           )' L' W: u- u7 P' e: G5 H
  4934.           (progn( \0 w$ M+ V& @4 z  R
  4935.             (setq ethickness (distof value))
    . R" N7 y. A7 _/ H
  4936.             (set_tile "eb_thickness" (rtos ethickness))
    0 i! F9 S, ~1 S' ^2 o9 d/ D  M1 f' Z) C
  4937.             ethickness
    ! E& S& H; z+ }9 ]5 u5 x
  4938.           )
    & T2 d# I; c5 i+ O" t! {
  4939.         )
    1 E. U* W& h2 A8 R9 F
  4940.       )
    ; k1 R( d& G6 k1 G
  4941.       (progn9 i! D* O( A& ]  Z9 G/ S
  4942.         (set_tile "error" "Invalid thickness.")' i! i- U3 I2 {2 B
  4943.         nil6 [$ C3 P7 Y; \: g8 L% w2 \; ~  n
  4944.       )
    ; F! T9 c3 L! S  I) r! D) N
  4945.     )) f: D; H7 K4 V* v
  4946.   ); N/ z- C$ q; P8 E' Q3 n
  4947.   ;;7 P# q6 Y) _( L9 s" T( U
  4948.   ;; This function make a list called laynmlst which consists of all the layer ; z1 ]% ?% R. @" s  W
  4949.   ;; names in the drawing.  It also creates a list called longlist which 4 _$ n8 a" z; e0 G; |
  4950.   ;; consists of strings which contain the layer name, color, linetype, etc.  
    ; P3 Q1 ~! ]( [  z9 R
  4951.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the & L6 H/ T( J8 E8 I$ Q2 A. N
  4952.   ;; same.
    + W* }4 i* x. I" m5 k
  4953.   ;;
    % ?" M# q7 K# l& F1 F8 @( e/ q& U
  4954.   (defun makelaylists (/ layname onoff frozth color linetype vpf vpn ss cvpname % a/ e% @0 J1 t1 E. d! Q
  4955.                          xdlist vpldata sortlist name templist bit-70/ u" O) @7 g. e/ o( A
  4956.                       )
    ; Y; |  y: \5 z; z) V" n- f: m. F- f
  4957.     (if (= (setq tilemode (getvar "tilemode")) 0)
    ' l* d' N9 z/ h4 {% w. F
  4958.       (progn
    $ G0 S* {; v6 o. Q
  4959.         (setq ss (ssget "x" (list (cons 0 "VIEWPORT")4 i  N" B4 }& X  X4 ^+ y
  4960.                                   (cons 69 (getvar "CVPORT"))2 B& F  L6 e# ]% X
  4961.                             )
    " B! Q' ~* i$ s- Q$ G% D
  4962.                  )
    : B1 k) ?8 H: j, b0 g+ H( G, Z- c
  4963.         )     9 C8 ^+ u# I  p, w# m0 T/ i
  4964.         (setq cvpname (ssname ss 0))
    $ X8 C* n. p5 F" ^
  4965.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))+ y9 u" O1 i; N! F; C% H
  4966.         (setq vpldata (cdadr xdlist))3 b$ |; x  K5 x7 T
  4967.       )" ~, w2 k" y; o+ |4 e( P" d/ p
  4968.     )
    " f6 i# J9 L2 X, v% o' S: v
  4969.     (setq sortlist nil)7 K7 x4 S1 O9 ~9 T2 P" D
  4970.     (setq templist (tblnext "LAYER" T))
    2 S: D6 e, q0 J! H: V
  4971.     (while templist
    , i) V+ F6 r6 b1 `" K
  4972.       (setq name (cdr (assoc 2 templist)))
    ) F: O' b% _, s4 I, Y
  4973.       (setq sortlist (cons name sortlist)); e: g* h- k2 H* q0 E8 u: t
  4974.       (setq templist (tblnext "LAYER"))
    2 e. Q* b  T, j  l- F* S0 R* x
  4975.     )
    7 v$ F0 f6 \# V1 Y4 |& A3 H! ~
  4976.     (if (>= (getvar "maxsort") (length sortlist))
    ' @: m$ V5 Y. b$ ]1 \" r
  4977.       (setq sortlist (acad_strlsort sortlist)), |: H5 G" O- Y, o3 o" `; F! G3 R
  4978.       (setq sortlist (reverse sortlist))
    7 W: H' a9 K/ s
  4979.     )
    8 ?' C  R: w; {% B+ f+ D
  4980.     (setq laynmlst sortlist)' `$ m) n4 e+ z7 @' X. ~& i9 o7 e
  4981.     (setq longlist nil)) j. A5 k" c. G( n  @
  4982.     (setq layname (car sortlist))" r# c4 i4 o6 F$ Q. C8 [
  4983.     (while layname% K; O& a0 G* M  a
  4984.       (setq laylist (tblsearch "LAYER" layname))! H  P# S) p0 F% y# f
  4985.       (setq color (cdr (assoc 62 laylist)))
      k1 K; a+ G# X' {! y1 s" G
  4986.       (if (minusp color)
    # ]% _- w0 c3 n9 ]
  4987.         (setq onoff "."): ^( ^; d& I; Y: A1 K. [! f7 b1 y
  4988.         (setq onoff "On")* _! C& g2 L# C3 c0 N0 X
  4989.       )
    6 a9 n& l5 p% g/ f0 i# b3 B+ `
  4990.       (setq color (abs color))
    # L7 ]+ d9 e* Q; a! |: N: z
  4991.       (setq colname (colorname color))
    & \. V% M# I1 x  @0 V) M, ]
  4992.       (setq bit-70 (cdr (assoc 70 laylist)))
    ; d. _0 ^) q+ o" J
  4993.       (if (= (logand bit-70 1) 1)
    # f7 c: B9 p' _! l1 `
  4994.         (setq frozth "F" fchk laylist)
    8 F! [0 Z2 s4 G3 d, C
  4995.         (setq frozth ".")* V7 F" u! Y- w: A
  4996.       )) ?$ F. Y$ V) D; z. g6 Z; W
  4997.       (if (= (logand bit-70 2) 2)5 z# k; U5 O0 e% ?0 h; S, M
  4998.         (setq vpn "N")
    $ V$ P( E6 F) ~$ U
  4999.         (setq vpn ".")
    6 u8 i; I" M) d; X
  5000.       )
    * u; ^" D/ f8 L& S
  5001.       (if (= (logand bit-70 4) 4)
    , z: M  O1 J6 o$ x9 f7 a% W8 g% e
  5002.         (setq lock "L")
    9 ^& `0 z3 [8 ?
  5003.         (setq lock "."): e6 F0 Z! |. T. E
  5004.       )
    # w7 k  l; B( H' _; I' P3 a
  5005.       (setq linetype (cdr (assoc 6 laylist)))
    * P: c8 X# {' N$ o8 v4 V! ^
  5006.       (setq layname (substr layname 1 31))2 u  I% y2 e, G& @
  5007.       (if (= tilemode 0): C0 W, G( R5 Y6 _, V, D6 z
  5008.         (progn
    4 X1 E5 }# e. D) c  E* T
  5009.           (if (member (cons 1003 layname) vpldata)
    1 E" p# \; b) t" b* x7 {: h, ^
  5010.             (setq vpf "C")- |$ {/ N3 Z, y! b' u; \- R2 q; F! n  ~
  5011.             (setq vpf ".")
    " N  p) a0 c; b+ s: W: T2 Q+ z
  5012.           )7 g& [4 W  O# f0 c
  5013.         )
    & F1 y3 o2 c, O
  5014.         (setq vpf "."), v4 |+ k$ c! A2 G2 a
  5015.       )8 w6 [1 z+ J. ^1 H
  5016.       (setq ltabstr (strcat layname "\t"
    & V6 g) T. e/ x4 f; L9 u& W
  5017.                               onoff "\t"% R1 R0 j3 Z# b5 x
  5018.                              frozth "\t"
    # |# q' E) |$ X! d4 m
  5019.                                lock "\t"/ B/ ^3 W7 r2 p3 ~, N2 F
  5020.                                 vpf "\t"
    . m* i" i/ D2 ~) [4 H: y
  5021.                                 vpn "\t"- F" v3 y# m0 ?4 t
  5022.                             colname "\t"
    # B* ^" Y8 ]" D4 H' i& W
  5023.                            linetype3 l* r! f. `. k  U" M, a% k
  5024.                     )
    ! I, Y' @, Z/ ^/ N. O; B
  5025.       )$ q9 B. G: [; e0 A
  5026.       (setq longlist (append longlist (list ltabstr))); i. Y% c$ ]" P2 z! D& ?3 z6 ^
  5027.       (setq sortlist (cdr sortlist))
    7 O* C/ i- O1 F
  5028.       (setq layname (car sortlist))' {3 V; [' t$ r  h1 S& S
  5029.     )/ U& y& L! F6 h' _' i( M
  5030.   )
    + x& h3 Z3 G2 P- U8 ~/ Q
  5031.   ;;! a6 |( C" x, x! E' ^" }
  5032.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of - P4 ]3 z7 O+ T" \* A% o
  5033.   ;; linetype names read from the symbol table.  Mdashlist is list consisting
    # f1 o+ R) E* @
  5034.   ;; of lists which define the linetype pattern - numbers that indicate dots, 1 w, y2 r; p. d' f8 r3 W
  5035.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the ; H7 S+ C! E( f: [- D% m" o
  5036.   ;; order of names in ltnmlst.
    6 H5 A# Q9 C! w4 d2 C2 O! C
  5037.   ;;$ n* p) j# v  L$ r' H6 O9 v
  5038.   (defun makeltlists (/ ltlist ltname)  P2 ]1 y$ Z, H1 R# m  P! Z$ h3 W5 b
  5039.     (setq mdashlist nil)
    5 m0 J! p! O( ^$ T+ T- C# R9 O. h' U2 c
  5040.     (setq ltlist (tblnext "LTYPE" T))1 M, L3 z% G5 y7 _) M
  5041.     (setq ltname (cdr (assoc 2 ltlist)))
    " r% q( W+ `4 e8 e1 u( i
  5042.     (setq ltnmlst (list ltname))
    2 v2 I0 w  j& w( ?  P' v; z
  5043. ; a) c, b9 t. y. b$ R. O( N
  5044.     (if (= ltname "CONTINUOUS")8 Z9 v* j& r6 l9 x5 [0 r
  5045.       (setq mdashlist (list "CONT"))
    0 }6 T, y$ k3 I: Q& A% \1 V' e, f
  5046.       (setq mdashlist ' K; ~1 X; |8 I3 h( u
  5047.             (append mdashlist (list (add-mdash ltlist))). w8 a! J7 e* M1 |0 I2 T* c) H
  5048.       )
    # G6 Q, u' W' C8 Z0 ]$ x
  5049.     )
    9 _( Y" p8 S* W+ o% ~. J  K1 @
  5050.     (while (setq ltlist (tblnext "LTYPE"))8 c+ M+ n! v# W, L9 o
  5051.            (setq ltname (cdr (assoc 2 ltlist))), c8 ~2 q9 u) u
  5052.            (setq ltnmlst (append ltnmlst (list ltname)))
    - I) l- }; j' q! |1 W* @- J! Q
  5053.            (setq mdashlist , }4 o7 m/ I& N( z' k
  5054.                 (append mdashlist (list (add-mdash ltlist)))) T# H: n1 k7 E! k( m; _! |! z
  5055.            )
    9 m  ~2 |! J! r7 n& [5 f$ m) V% O
  5056.     )
    0 S) `- N+ H2 k- D, u' c
  5057.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    . T- D0 ~& C' j7 ]3 Y
  5058.     (setq mdashlist  (cons nil mdashlist))
    3 K: V, s$ Y, Q1 ~8 l
  5059.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    8 q, X. y3 q# r0 q6 a9 _2 O* n! Q
  5060.     (setq mdashlist  (cons nil mdashlist))
    - |8 }; t6 g# h/ A
  5061.   )
    5 F& W  f% _& }7 c: ]8 }4 z
  5062.   ;;: h8 o1 j  W7 I. t, R5 W
  5063.   ;; Get all the group code 49 values for a linetype and put them in a list
    0 M& E1 l( c& r6 c( U% o% Q& J
  5064.   ;; (pen-up, pen-down info)
      y: G+ O5 I) V9 [
  5065.   ;;0 Q2 X' t8 \* v
  5066.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)
    , Q% a% J7 u/ p2 p2 Z3 G  D
  5067.     (setq dashlist nil)
    : N) g, I+ G7 ]' R; X: z) I
  5068.     (while (setq assoclist (car ltlist1))2 \2 P8 n8 ^: P
  5069.       (if (= (car assoclist) 49); ]( \' @3 q- q
  5070.         (progn
      y% @% a0 ]  P% {. `/ m2 `  C
  5071.           (setq dashsize (cdr assoclist))* V# j" K/ C  C% G9 i
  5072.           (setq dashlist (cons dashsize dashlist))
    - O" p% E9 r8 Y) y0 V. S$ c7 D
  5073.         )! d2 h0 s4 O8 O+ t, T
  5074.       )
    6 i7 `' j  G4 v
  5075.       (setq ltlist1 (cdr ltlist1))
    # P3 C7 I5 X2 T( V- O; t! o6 g
  5076.     )! a- W  B7 }2 {- n% n
  5077.     (setq dashlist (reverse dashlist))
    ; o4 {, t6 e+ b  ]
  5078.   )
    # i- \1 B, W/ T3 i# a
  5079.   ;;- U% b2 E) \5 }$ E
  5080.   ;; Color a tile, draw linetype, and draw a border around it, }$ K$ _$ r( s- r% a
  5081.   ;;3 l/ l) x% L0 ?4 r  G
  5082.   (defun col_tile (tile color patlist / x y)
    0 |0 G0 }8 m+ c
  5083.     (setq x (dimx_tile tile))$ h$ B7 E/ N& `7 P- [2 i( k
  5084.     (setq y (dimy_tile tile))
    , ~2 u5 Q6 i! w& ?
  5085.     (start_image tile)! ~' j5 A! R" ?% ^0 F4 w
  5086.     (fill_image 0 0 x y color)0 g; Z3 r) W) @
  5087.     (if (= color 7)% c% z" S. v  f- z% }& R# w
  5088.       (progn
    2 J2 e, m  ]% Q1 u9 P4 N3 @  {
  5089.         (if patlist (drawpattern x (/ y 2) patlist 0))
    7 {+ {& O* T) v1 w& q0 Q) I4 Q4 s
  5090.         (tile_rect 0 0 x y 0)3 B" ]3 x+ K  z0 R# l! _+ t
  5091.       )
    $ }3 x  F/ p6 F
  5092.       (progn
    $ y& k+ D: }: }* A. {8 i! z# K
  5093.         (if patlist (drawpattern x (/ y 2) patlist 7))
    ) b7 z* T. E4 M# ^, k
  5094.         (tile_rect 0 0 x y 7)
    # H" |  h. B( B1 \5 L
  5095.       ): u- g, _* [  e$ p9 f
  5096.     )& X8 H+ K8 J: @
  5097.     (end_image)
    $ K/ d# m3 M# t. w
  5098.   )
    9 x# m/ X, J7 e7 ^% O6 X
  5099.   ;;
    3 h; A" g% u+ [! K; j" l
  5100.   ;; Draw a border around a tile8 X9 R3 D. \4 s" T( c+ y$ L
  5101.   ;;
    + \, S7 F, ?5 k; u: m
  5102.   (defun tile_rect (x1 y1 x2 y2 color)
    1 _. _, N: r, A$ y8 m
  5103.     (setq x2 (- x2 1))
    ( {0 b1 l/ C0 a  Y
  5104.     (setq y2 (- y2 1))
      {# {5 t) h6 y) [6 |
  5105.     (vector_image x1 y1 x2 y1 color)
    2 n% ~- [- z+ b3 t# O" s
  5106.     (vector_image x2 y1 x2 y2 color)
    ( v5 D& E/ v4 n, c
  5107.     (vector_image x2 y2 x1 y2 color)
    ' D" r8 U' i2 v4 o
  5108.     (vector_image x1 y2 x1 y1 color)
    + i4 q! y6 ^* @0 g5 Z7 n: L
  5109.   ), R. ~- g+ w7 j! j& U% e' C
  5110.   ;;
    3 m  H8 E5 X  J4 @
  5111.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image
    3 U, X3 o& o' v' q* l
  5112.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
    ! x- |9 h4 ]0 h, S6 V4 C! v
  5113.   ;; list of numbers that define the linetype, and color is the color of the
    * T" ~, T, X, ?" m9 j* _
  5114.   ;; tile.
    ) Z/ p; E7 B, d
  5115.   ;;( p0 R( b* @) [  i: }* h
  5116.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    . c# s4 M3 P6 m* z* h% F
  5117.                       patlist dash)/ w0 e. C2 @0 ~0 V; ]& @" r8 k0 t. \
  5118.     (setq x1 0 x2 0)
    # F* I& z  z  n- N
  5119.     (setq patlist pattern)' G$ e# E9 Z. X6 ]$ w8 O
  5120.     (if (= patlist "CONT")
    4 Q/ p' d  E- t+ E
  5121.       (progn
    , o5 E8 J) [& e3 H/ p
  5122.         (setq dash boxlength)
    : R" _5 E; n# \7 V8 L
  5123.         (vi)5 t# k+ {: l7 ]6 j
  5124.         (setq x1 boxlength)
    . z& |. ~) `. T+ F
  5125.       )% N4 @. {/ p- L( }. Q1 j
  5126.     )
    " S. D( ~  A( ~
  5127.     (while (< x1 boxlength)
    ! f9 l( l0 N6 V+ J9 L0 O2 g
  5128.       (if (setq dash (car patlist))7 b" L, R' Y' m* D/ a
  5129.         (progn. S8 a- H( q, ]# H
  5130.           (setq dash (fix (* 30 dash)))% V& T* z- t# V8 v9 D
  5131.           (cond " ?/ O1 T+ o4 t! ^# [
  5132.             ((= dash 0) 5 I! N3 c: o2 e* l! e
  5133.               (setq dash 1)
    4 ]8 x4 ?2 h' x6 g, ~' [1 T
  5134.               (vi)' A# @4 c( Z: V, r1 I6 W
  5135.             )
    % r5 S0 j6 R1 a
  5136.             ((> dash 0)
    , k7 h+ G9 Q/ _+ p7 M# Z& I6 g: o& |
  5137.               (vi)) I6 d$ M: [1 @# s3 M
  5138.             )
    * I( {! v" ~  J# v
  5139.             (T , Y; F2 i. ?& s5 Z) D8 K/ T
  5140.               (if (< (abs dash) 2) (setq dash 2))
    % w% }3 x' B9 E+ v% u& B4 @4 T
  5141.               (setq x2 (+ x2 (abs dash)))
    ; s0 e* I, b! |8 F: u
  5142.             )& `3 l5 I( M/ w
  5143.           )
    : B6 `$ M" R( Y2 `
  5144.           (setq patlist (cdr patlist))
    ; m- |+ w7 E4 w
  5145.           (setq x1 x2)! P: R+ |+ l. I3 S
  5146.         )$ m4 u) O# u( z: A- J
  5147.         (setq patlist pattern)  X; G9 u- p4 m8 b
  5148.       )* f# ]4 \# `# r8 {8 x2 j
  5149.     )
    # j  L" {+ {. `5 b
  5150.   )
    ( U, t" a1 @; T8 L: G6 c2 m& r
  5151.   ;;3 E' P" U5 M6 ?
  5152.   ;; Draw a dash or dot in image tile5 a$ o6 w# u5 T& |) z
  5153.   ;;( Z" a# y0 H$ T+ S. N
  5154.   (defun vi (): h- b3 H+ l5 l" B3 Y- e) u2 k! [4 {
  5155.     (setq x2 (+ x2 dash))
    , V2 ^5 X0 P/ [) o* e
  5156.     (vector_image x1 y2 x2 y2 color)
    7 x4 ?4 z- a; [1 K$ j4 x. p6 F
  5157.   )1 F5 z) O' l2 H( B0 r* U$ g! o
  5158.   ;;( r: I# M4 F; W# N( L
  5159.   ;; This function takes a selection and returns a list of the color, linetype,
    ' H. O6 h% O$ j7 ^! z1 c- [
  5160.   ;; layer, and thickness properties that are common to every entities in the- X% @/ l/ N& j' S; F) ~
  5161.   ;; selection set - (color linetype layer thickness).  If all entities do not 4 L9 \2 Q& _* u: W4 S5 a+ g
  5162.   ;; share the same property value it returns "Varies" in place of the
    7 z: E- a8 h) y7 V/ [
  5163.   ;; property value.  i.e. ("BYLAYER" "DASHED" "Varies" 0)+ o0 G! C5 k: g: h; v0 h
  5164.   ;;
    " k9 p2 }5 I; ^9 H0 J
  5165.   (defun getprops (selset / sslen elist color ltype layer
    ' w4 G  z- t' i: ^6 \
  5166.                             thickness go chk-col chk-lt chk-lay chk-th ctr)( A7 Q3 Q) L, X
  5167.     (setq sslen (sslength selset))& N+ y& H4 L7 ]
  5168.     (setq elist (entget (ssname selset 0)))
    " p& ?) S" z# g( l1 K
  5169.     (setq color (cdr (assoc 62 elist)))
    7 c7 f; J$ G2 h  R8 H1 z; t
  5170.     (if (not color) (setq color 256))0 K8 u8 V' {+ G* L1 M# |
  5171.     (setq ltype (cdr (assoc 6 elist)))$ V4 N* A; n- n0 |, U7 J+ o! A( n
  5172.     (if (not ltype) (setq ltype "BYLAYER"))
    $ i; O# T' ?9 }! s, x# I" `  L
  5173.     (setq layer (cdr (assoc 8 elist)))
    % ]% ^/ E! A0 o$ C8 H2 t
  5174.     (setq thickness (cdr (assoc 39 elist)))4 @9 T8 x: s8 j) y! Q: z$ D( h6 V
  5175.     (if (not thickness) (setq thickness 0))8 K# ?9 i6 J$ X% H
  5176.     (setq go T chk-col T chk-lt T chk-lay T chk-th T ctr 1)
    ! z5 [- p' {, v7 G* |1 E

  5177. % F* w8 d; ~; \% H' p
  5178.     ;; Page through the selection set.  When a property
    , ~& @- G* z: j( ]: |
  5179.     ;; does not match, stop checking for that property.
    8 U1 P) B* @5 [' {
  5180.     ;; If all properties vary, stop paging.) E5 d" @4 A- W6 k" @

  5181. 2 j/ }. j: n7 E' v6 B4 F
  5182.     (while (and (> sslen ctr) go)
    & Z$ P# S, L. G# @+ a/ D
  5183.       (setq elist (entget (setq en (ssname selset ctr))))9 \1 ~. \! [+ _/ R; v
  5184.       (if chk-col (match-col))
    , I+ d; W& [& [, r. M, l( u
  5185.       (if chk-lt (match-lt))
    2 b3 N, H6 v  Z0 Q2 x) H
  5186.       (if chk-lay (match-lay))
    . Q+ Y) h+ R" g& V
  5187.       (if chk-th (match-th))* [1 Z3 a3 L3 r6 s+ s0 ^: [4 o9 q
  5188.       (setq ctr (1+ ctr))& V  h$ y% c4 A
  5189.       (if (and (not chk-col) (not chk-lt) (not chk-lay) (not chk-th)). l' m) ?- _! A
  5190.         (setq go nil)1 [9 M$ s, b* e3 m# p8 D, O- C+ a
  5191.       )
    4 Z  K+ S* Q$ X# ~7 M7 T, G
  5192.     )
    7 t$ e( i5 U' t2 u( u
  5193.     (list color ltype layer thickness)2 v, j+ j; a& a% w" |
  5194.   )  `+ n4 a) o1 s% l! P$ l

  5195. 4 H* w; v1 a& w' V5 V; f6 J
  5196.   (defun match-col (/ ncolor)- C1 |2 C  w$ Q! v3 z
  5197.     (setq ncolor (cdr (assoc 62 elist)))& K, T+ S7 B6 w/ T8 y; K
  5198.     (if (not ncolor) (setq ncolor 256)); _9 Z* o6 d7 H, E0 S5 f
  5199.     (if (/= color ncolor), `/ x( V# F2 J' o  w, E1 N4 x8 H" d
  5200.       (progn
    8 a8 X. \/ i2 E, ^
  5201.         (setq chk-col nil)
    : @% L) g8 f& `2 h1 r
  5202.         (setq color nil)
    % o) c5 Q& Y9 R. l0 [# Z. @, l0 ~
  5203.       )
    8 Y0 N1 a- R4 \. v
  5204.     )
    ( Y5 ?/ K6 Y: T# m
  5205.   )
    / s- T4 W" m+ I$ d
  5206. 8 C" ~* R# U7 _5 b0 Z0 ~1 m# I
  5207.   (defun match-lt (/ nltype)
    * E% h  d; R7 _$ y1 F3 R4 x8 s
  5208.     (setq nltype (cdr (assoc 6 elist)))* l" a0 Z6 v# {6 e4 b) P
  5209.     (if (not nltype) (setq nltype "BYLAYER"))
    4 V1 u0 \" `2 a, E8 a. B
  5210.     (if (/= ltype nltype)8 b- Y' `8 J+ ]  z  j
  5211.       (progn6 Z) s8 x9 p% n! b8 v
  5212.         (setq chk-lt nil)
    ) y0 q9 m, k) j- O1 {, S" O
  5213.         (setq ltype "Varies")
    1 T/ r7 S: Q  y) i, A. D# n
  5214.       )
    ' D- k0 R" L* d
  5215.     )
    # G/ v2 U6 P9 h, f8 ], i
  5216.   )
    $ _% z" v0 o7 @1 T  h. M% l6 |

  5217. ) g- U2 J! Z7 S. I& O* V, b
  5218.   (defun match-lay (/ nlayer); Q+ X2 f6 D& x& b1 E* H! U: d
  5219.     (setq nlayer (cdr (assoc 8 elist)))
    . ?. Y9 s' x4 `9 X, u/ }
  5220.     (if (/= layer nlayer)
    6 S  m. _1 ~: [8 ^
  5221.       (progn
    6 P1 i2 `" B- m, q$ z
  5222.         (setq chk-lay nil)( [* X7 H/ d5 n8 m# x7 l
  5223.         (setq layer "Varies")
    ) Q1 e1 R) ^4 x3 a7 k6 g
  5224.       )
    3 n/ J4 I1 b! C4 @% a: j$ j0 H" [
  5225.     )
    # ^: x- @8 d% x2 N
  5226.   )$ o% D7 N4 Z( ^9 p5 \

  5227. ! v$ K2 }" V' h7 A1 w* T
  5228.   (defun match-th (/ nthickness)
    . W4 C: o% E/ B8 W* P1 R
  5229.     (setq nthickness (cdr (assoc 39 elist)))1 b" @, |. T7 Q& w
  5230.     (if (not nthickness) (setq nthickness 0))
    * ~1 ~) h" }  ^6 D4 G( E
  5231.     (if (/= thickness nthickness)& h2 @/ n, c& H  W" p3 H
  5232.       (progn) M' _9 N$ t4 \
  5233.         (setq chk-th nil)
    # B! A$ W+ N1 m/ y9 c; `- a
  5234.         (setq thickness "Varies")
    : q: I/ R  W/ W! }
  5235.       )3 ^- e% C" q6 Q0 \- `5 q
  5236.     )
    # `! K( O) r  D& F' V' o# o8 S
  5237.   )5 y( d- f9 N! E* y0 M# c

  5238. ( s! }8 u# K, ]& c
  5239.   ;;0 R$ w4 H# [4 r1 J
  5240.   ;; If an item is a member of the list, then return its index number, else ; ]: K% I" H8 L0 D
  5241.   ;; return nil.' z3 j5 Q. ~( ]( ~' I: y) W8 C
  5242.   ;;: j3 A! a) ?" a0 v# I' F
  5243.   (defun getindex (item itemlist / m n)
    5 z# [+ W4 r& M! x
  5244.     (setq n (length itemlist))% E5 l( L, H  B* E, W$ m9 Y
  5245.     (if (> (setq m (length (member item itemlist))) 0)
    2 r& k) _7 k/ G$ L; M& }
  5246.         (- n m)- o7 T. k- y! B5 w7 L
  5247.         nil# y" `, Q6 f6 `  }+ I+ m
  5248.     )
    ) T2 |6 z( G, y& Q6 ~
  5249.   )
    ; X* B0 X$ c  Q5 w
  5250.   ;;
    * |- s, k8 {. h1 [
  5251.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    ! o9 G3 b6 M/ t
  5252.   ;; ltype of the layer so it can be displayed beside the linetype button.
    4 o& i" c8 y8 @1 b3 A) O" w) S
  5253.   ;;
    - e8 _9 |% ~+ _3 H5 X: B
  5254.   (defun bylayer_lt (/ layname layinfo ltype)
    % B" n% j) v; X) Q$ e8 q& J
  5255.     (if lay-idx
    * `; K3 y9 H9 K* s7 k
  5256.       (progn
    8 P. p6 M2 G2 r5 K. `
  5257.         (setq layname (nth lay-idx laynmlst))% i2 w5 i8 F$ D; v) U) @
  5258.         (setq layinfo (tblsearch "layer" layname))( {3 j# d3 n! p. ~
  5259.         (setq ltype (cdr (assoc 6 layinfo))); _! ~( t# w) f' Y/ T
  5260.         (strcat "BYLAYER (" ltype ")")
    2 u+ v: r. \; ?' m6 ]$ o
  5261.       )
      v& A! x" \  r) b6 W
  5262.       "BYLAYER"' _$ G: d) S7 P( x$ e' Y
  5263.     )
    ' }4 B7 @% C9 S1 g6 d6 `. L
  5264.   )
    7 x5 I8 E3 g1 }! ?5 D: `
  5265.   ;;
    - ?) E4 s3 Z% W7 s
  5266.   ;; This function is called if the color is set "BYLAYER".  It finds the
    " O0 Q& m/ m: a" B1 K: q3 J$ u
  5267.   ;; color of the layer so it can be displayed  beside the color button.
    " s- |6 b" [. Y. z7 T
  5268.   ;;
    . ?/ H# J( M! ~8 J6 ~
  5269.   (defun bylayer_col (/ layname layinfo color)
    1 |* w9 Q6 D  Z' |- D7 p1 ?
  5270.     (if lay-idx
    - f0 Y0 @' x) ~5 k; R
  5271.       (progn1 r: E# x' ~& \# U; K9 F/ _$ V
  5272.         (setq layname (nth lay-idx laynmlst))7 N' q* m7 r, v0 k
  5273.         (setq layinfo (tblsearch "layer" layname))" h5 h* F" y7 `: i0 N
  5274.         (setq color (abs (cdr (assoc 62 layinfo))))$ @$ Y% C; O. u0 t7 {2 m
  5275.         (setq cn color)) F& }8 X3 \+ _/ s
  5276.         (strcat "BYLAYER (" (colorname color) ")")
    : b1 m) \  N: K) l2 E: \
  5277.       )
    $ T( O( j4 N* u2 n0 Z- ^! v& J
  5278.       (progn7 g0 ^8 k- P# N# u
  5279.         (setq cn 0)# |' a% m) A  R# Q+ @
  5280.         "BYLAYER"
    * y( k9 ]# ^! ~' k+ ]' P
  5281.       )
    & \! p7 g" r) n$ ^( a5 e
  5282.     )7 y3 @- @& T" i0 u# ^; T( l
  5283.   )+ `( W4 A& b' ~7 f' l
  5284.   ;;
    ; w6 p2 F4 H% v( G2 {
  5285.   ;; If there is no error message, then close the dialogue6 `, W# l$ v% @" ~4 |: J
  5286.   ;;
    + z  u2 X9 z/ ]# S( M
  5287.   ;; If there is an error message, then set focus to the tile" a; D3 O. y8 l4 t2 v' G; F* x1 u
  5288.   ;; that's associated with the error message." z  {! h3 k4 Y- U( Y/ |. E
  5289.   ;;
    0 V5 m1 R  G  J- O- x/ X
  5290.   (defun test-ok ( / errtile)
    ' }) P/ f; {, }9 @3 I
  5291.     (setq errtile (get_tile "error"))
    + t. }- Z" B0 Q- m
  5292.     (cond
    9 x* f, Y9 i* e! ^$ `
  5293.       (  (= errtile "")
      D+ Y( |7 J8 r+ L: H5 ?
  5294.          (done_dialog 1))
    $ A# j8 A% q+ O2 u( d
  5295.       (  (= errtile "Invalid thickness.")
    - b1 Z2 n- g3 \+ A
  5296.          (mode_tile "eb_thickness" 2))
    3 w( B8 R3 O8 a) q6 H& K( o, m
  5297.     )4 S9 O$ O5 e% ^! d& x/ g3 u
  5298.   ); u" _5 v' t% q6 a
  5299.   ;;
    * H( {9 I5 t: m6 C
  5300.   ;; A color function used by getlayer.
    1 `0 O9 l  R. x  ?6 Q0 W8 t
  5301.   ;;% D/ p9 F& C  s5 `/ `! H* o
  5302.   (defun colorname (colnum)# o4 u* C$ ?( l$ l+ `& m" O3 P; C
  5303.     (setq cn (abs colnum))
    ; l0 r; M7 S& H( ^" [9 X0 r) x+ B
  5304.     (cond ((= cn 1) "red")* a: b, S/ d+ H/ D, q) P% \6 F
  5305.           ((= cn 2) "yellow")/ }& `, }* c: R2 W0 V& r
  5306.           ((= cn 3) "green")$ {0 R  [  _# {) m
  5307.           ((= cn 4) "cyan")' ?0 j. _4 [6 d
  5308.           ((= cn 5) "blue")' ?7 J6 Q! z9 J$ Z) r
  5309.           ((= cn 6) "magenta")+ v5 Z# X$ N) p( e- e$ Q# R3 m
  5310.           ((= cn 7) "white")
    - W7 Q1 {0 |, H$ v1 A9 D8 W
  5311.           (T (itoa cn))
    * L  I* T3 q. O4 W
  5312.     )- [( _, N, Q" ~+ c# L  j
  5313.   )
    : j' [5 Q9 F4 A* P; j

  5314. 0 i0 ~$ C9 d& n( G7 J" a
  5315. ;;; Construct layer and ltype lists and initialize all
    " K) S7 g+ h. N2 a9 ^; H
  5316. ;;; program variables:
    ( n4 R; a3 e3 `
  5317. 4 \/ s( E# L" W# U; e. V- h+ f  e6 b
  5318.   (makelaylists)                     ; layer list - laynmlst
    7 k5 R4 g; i# C0 z
  5319.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    + D  _/ w$ ^9 G. K2 H3 h! ]
  5320.   ;; Find the property values of the selection set.* P$ ^0 }5 `2 [, X) [3 H' A+ }
  5321.   ;; (getprops ss) returns a list of properties from' F. M1 j/ k. }
  5322.   ;; a selection set - (color ltype layer thickness).9 G5 n& d( Y+ K9 U
  5323.   (setq proplist (getprops ss))- [7 j5 `: ^5 W/ V3 _
  5324.   (setq ecolor (car proplist))
    , e- m! }$ H$ Q+ O% f
  5325.   (setq eltype (cadr proplist))! }3 R& ?* w, U$ S. a) Z- X, F
  5326.   (setq elayer (caddr proplist))
    ) @2 w% g9 w. c0 B. j* {7 @. l
  5327.   (setq ethickness (cadddr proplist))4 l! O* M8 R7 p( k/ a
  5328.   ;; Find index of linetype, and layer lists7 L! G* v3 O8 D* A1 o. d, b
  5329.   (cond
    4 ?; V) _6 X/ S  B- g
  5330.     ((= eltype "Varies") (setq lt-idx nil)): k+ _- j# d$ o3 }/ o+ g
  5331. ;   ((= eltype "BYLAYER") (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    9 x3 }- p# a1 Y  a% ~- Y
  5332. ;   ((= eltype "BYBLOCK") (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    : p) @. t) ]- E3 L
  5333.     (T (setq lt-idx (getindex eltype ltnmlst)))) {$ c  M9 Z$ F$ X( S% r: F5 H
  5334.   )
    0 }! B! \' Y; y1 H4 k* m
  5335.   (if (= elayer "Varies")/ e% z: d- v4 n0 }( ^
  5336.       (setq lay-idx nil)% W0 Z" M7 a8 e2 y4 o6 O% D; g
  5337.       (setq lay-idx (getindex elayer laynmlst))
    $ X" b6 q8 M8 k" e4 C: _" Q* ^
  5338.   )
    , P; b& ~3 p' a6 u
  5339.   (if (= ethickness "Varies")! A3 x' o$ y# p1 Y- c* C- w5 v4 b
  5340.       (setq ethickness nil)
    ) W, l; V& Q. X2 f
  5341.   )
    - @9 o. `7 V6 }8 J1 p7 m

  5342. 7 z0 u1 V. j4 O" J% T; j
  5343. )   ; end (ddchprop_init)
    ) O6 L! `8 v  I1 g# i0 t

  5344. ' @+ @# R' t# Z
  5345. ;;; (ddchprop_select)4 t' Z: T& O1 G& L
  5346. ;;;& |9 s6 @( H/ m
  5347. ;;; Aquires selection set for DDCHPROP, in one of three ways:& ^, I7 B0 {% W# W3 R& |# i& |
  5348. ;;;
    & r+ }" ~+ T' G5 [; w1 m
  5349. ;;;   1 - Autoselected.5 z- U" c4 M" R
  5350. ;;;   2 - Prompted for.4 @! f7 {  F, r7 M) L# J3 O
  5351. ;;;   3 - Passed as an argument in a call to (ddchprop <ss> )
    8 [) J2 G$ U- a( [9 E( \
  5352. ;;;7 z/ w8 @8 z" g; J0 T& b2 x
  5353. ;;; The (ddchprop_select) function also sets the value of the
    0 t- P( g8 h! c7 {) Q6 E
  5354. ;;; global symbol AI_SELTYPE to one of the above three values to
    , g( U  ~+ E. I
  5355. ;;; indicate the method thru which the entity was aquired.3 I$ N4 \1 t& v# ~( q8 l, \* ~2 d
  5356. $ `  a) p) a" w. k3 m! m6 ~

  5357. , D5 l) z3 K3 E. c6 g
  5358. (defun ddchprop_select ()
    - I8 z+ j* N5 Y, b/ `" |0 m/ S
  5359.    (cond
    ! W, Q- M; j) t. L
  5360.       (  (and ss (eq (type ss) 'pickset))        ; selection set passed to
    . d% _3 K  v4 ?# S% _" n3 O
  5361.          (cond                                   ; (ddchprop) as argument
    . d& D& m* Z: Z* s
  5362.             (  (not (zerop (sslength ss)))       ;   If not empty, then
    7 r/ ~. E3 l+ P$ K5 i
  5363.                (setq ai_seltype 3)               ;   then return pickset.
    9 m  Z; ~. i9 N( G- U( x
  5364.                (ai_return ss))))
    0 D9 e! c, i5 k8 b8 R7 J

  5365. . C0 A4 D- E; e2 o7 b  @/ q
  5366.       (  (ai_aselect))                          ; Use current selection' U1 a4 W/ {( A* Y
  5367.                                                 ; set or prompt for objects+ B- z6 u2 e, k/ T1 [
  5368. ; ^# I8 G0 h- b+ S0 D% ?5 m' ^$ F% d
  5369.       (t (princ "\nNothing selected.")! O% y6 Z$ s* Q: ?( k
  5370.          (ai_return nil))5 Q3 ~0 ]* [1 P+ H1 X
  5371.    )( y, H) n9 k! n: P0 `% R1 U
  5372. )( P  G) i5 r  h1 ]; O- _. `; d
  5373. + _6 B6 k0 B5 M  {5 Q# g
  5374. ;;; Define command function.
    ) F3 |9 ]5 a. y7 v# C1 Z$ s1 d1 _: o; j

  5375. 4 b" l: H5 ?  r! d, O
  5376. (defun C:CH ()
    ! S4 D5 s" D$ ^  u# j5 {
  5377.    (ddchprop nil)
    * P/ N4 c" @5 v- q7 u
  5378.    (princ)
    $ H- L5 N% b' _" @  L! k4 @
  5379. )
    4 j$ s$ N+ a9 j

  5380.   g( i* {/ f4 |" A3 [1 e0 @$ U) }6 _
  5381. 9 L, }8 d9 F" U
  5382. ;;; Main program function - callable as a subroutine.- ?5 J* i1 Y/ S$ x
  5383. ;;;
    # ^% C. I. t4 ]3 Z5 {
  5384. ;;; (ddchprop <pickset> )
    . T% S5 j3 J4 @
  5385. ;;;
    + [/ R! e/ V4 ^, [: n6 L1 K
  5386. ;;; <pickset> is the selection set of objects to be changed.. P- l( n# n( u* |9 q: R
  5387. ;;;
    6 T0 N! x; e9 X0 Z1 a( B+ B* v9 r
  5388. ;;; If <pickset> is nil, then the current selection set is) s0 u% h2 c1 n! z* ?/ \1 B
  5389. ;;; aquired, if one exists.  Otherwise, the user is prompted
    , W" X  i" _0 L$ B6 U! z
  5390. ;;; to select the objects to be changed.
    $ U5 }5 I0 `3 @
  5391. ;;;# t: J0 e4 K/ S: v$ L5 i1 z
  5392. ;;; Before (ddchprop) can be called as a subroutine, it must
    ; ?9 Y& N# ]3 M
  5393. ;;; be loaded first.  It is up to the calling application to
    7 `7 ~: z! L1 ~$ M! F# |
  5394. ;;; first determine this, and load it if necessary./ a# Y4 h' \- E

  5395. 9 ^) W# }& l& H
  5396. (defun ddchprop (ss  /
    * z! [/ x8 ?2 F9 u, l- t5 @+ V

  5397. : X, A0 T$ S( T- U' N
  5398.                   add-mdash      ecolor          ltedit_act      s
    6 G, }6 C0 a+ n8 V1 k, e* E
  5399.                   assoclist      elayer          ltidx           selset
    1 w: b0 I  r9 ?+ k0 m
  5400.                   bit-70         elist           ltlist          set_col_tile+ y% U" Q" H. {
  5401.                   boxlength      eltype          ltlist1
    5 f0 L' O6 t7 y+ f0 F" d5 v
  5402.                   bylayer-lt     en              ltlist_act      sortlist
    4 F7 L3 e7 m& J8 X
  5403.                   bylayer_col    ethickness      ltname
    . s9 z/ X% D1 J, j; O; M
  5404.                   bylayer_lt     fchk            ltnmlst         sslen. d  K7 r  n7 Q$ d; z
  5405.                   call_chp       frozth          ltvalue         templist8 ~+ ?5 f# U' A4 |2 v: Y. U5 H
  5406.                   chk-col        getcolor        ltype           temp_color( F5 i, u3 P3 {5 F& H" U
  5407.                   chk-lay        getindex        m               test-ok
    / `/ `" P; K4 Y0 ]" r* n9 z0 ?$ o
  5408.                   chk-lt         getlayer        makelaylists    testidx' ]9 L" f$ ^/ |1 U- Q3 t7 L  Z
  5409.                   chk-th         getltype        makeltlists     testlay( _6 b  E* n7 y
  5410.                   cmd            getprops        match-col       th-value
    ' `7 a+ M, p, A( `
  5411.                   cmdecho        getthickness    match-in        thickness% @5 A( _+ d3 V1 t6 i/ }
  5412.                   cn             globals         match-lay       tile/ K& ?" h# ~' r) r
  5413.                   cnum           go              match-lt        tilemode
    $ F8 o; F8 S3 R' |& R, N1 R1 F
  5414.                   col-idx        index           match-th        tile_rect& F% a, O5 }: e& d
  5415.                   colname        item            match_col       vi5 }4 _+ d$ f( K  F7 z
  5416.                   colnum         item1           mdashlist       vpf
    2 n  G0 i* b9 c5 q& w5 z
  5417.                   color          item2           n               vpldata
    * _7 h1 n2 g1 P7 i# _, N9 k% S
  5418.                   colorname      itemlist        name            vpn  p; J; f3 t+ c( m+ T
  5419.                   col_def        lay-idx         ncolor          x; U) I% m7 w- w+ W4 e9 @7 b
  5420.                   col_tile       layedit_act     nlayer          x1* o* s+ d# ^6 Y# t4 Y
  5421.                   ctr            layer           nltype          x2# Z( T% L/ M& [
  5422.                   cvpname        layinfo         nthickness      xdlist5 _, U6 T) S- l2 P9 W
  5423.                   dash           laylist         off             y  v- ]7 C# O2 _5 h
  5424.                   dashdata       laylist_act     old-idx         y1
    $ y" f  z/ D4 B/ f
  5425.                   dashlist       layname         olderr          y2
    2 l) U2 \9 }$ j" {3 H
  5426.                   dashsize       laynmlst        on              undo_init
    . [6 F" G# D9 v" ?' V
  5427.                   dcl_id         layvalue        onoff2 ]- }  t2 Z6 T
  5428.                                  linetype        patlist
    ; p3 N2 g: p5 i8 y( t
  5429.                   ddchprop-err   list1           pattern7 r7 \( M5 G8 x2 u
  5430.                   longlist       proplist
    1 D- D3 g" H  b. D
  5431.                   lt-idx         reset-lay; }( B6 C6 j# Z$ l9 l
  5432.                   drawpattern    ltabstr         reset-lt
    0 S, c7 B) }" @! t' p/ a  E+ p
  5433.                 )
    % J# O0 R  h& R, w$ \/ K

  5434. - F6 @$ w, T- Y. s/ T& ]' d* F
  5435.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho" D, z+ a, k4 \' w7 j6 x& ^" D& P
  5436.         old_error  *error*            ; save current error function0 C3 a% u% l/ N
  5437.         *error* ai_error              ; new error function
    , [3 \" I; E  |2 r  k! T
  5438.   )
    & j4 X3 R9 j, C1 d
  5439. ( _7 \# t2 x) J
  5440.   (setvar "cmdecho" 0)8 e/ P# I9 W, g( H

  5441. 4 p' P3 s! e  \6 ^0 @% l' ?& E$ d
  5442.   (cond
    % M" r1 i- k) H3 l) t& [8 ~$ m
  5443.      (  (not (ai_notrans)))                      ; Not transparent?
    - [) c/ |1 u1 o+ J2 Z& d* d
  5444.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    0 ]* G: J9 A1 ?, e
  5445.      (  (not (setq dcl_id (ai_dcl "ddchprop")))) ; is .DCL file loaded?
    8 q* e& ^! b3 z( k# s' x
  5446.      (  (not (setq ss (ddchprop_select))))       ; objects to modify?
    8 P$ F# T) V& }( e$ t9 X& S
  5447. & g: \$ m: C, g- \
  5448.      (t (ai_undo_push)
    : a& v5 z5 N+ T4 Y
  5449.         (ddchprop_init)                          ; Everything's cool,- |& e7 S# A9 k6 n7 R
  5450.         (call_chp)                               ; so proceed!
    ; ]& d, U/ k! C6 Z9 I1 y
  5451.         (ai_undo_pop)6 d# P4 A/ I/ |
  5452.      )
    7 \$ I% Z, r+ I1 S/ K
  5453.   )
    ) Y4 W, D  x% R
  5454.   
    8 W4 W6 v5 D+ j* ~. h! q
  5455.   (setq *error* old_error) : w, ~% C) U5 v
  5456.   (setvar "cmdecho" old_cmd), X+ y/ f# ~4 Q
  5457.   (princ)
    $ O7 T- w6 _3 F5 E1 _  v0 X
  5458. )
    6 @" [. j' K; y/ V  u

  5459. ) ^) O7 {+ Y" y8 `( R
  5460. ;;;----------------------------------------------------------------------------
    4 `1 h. b& [) m4 O. E
  5461. 7 @0 T; Q) _7 {% z* v! O$ X9 q
  5462. (princ "   DDCHPROP loaded."): j/ V4 U3 m. P1 O) D
  5463. (princ)+ b* b1 A  Q0 l- r
  5464. , D7 T2 g: \3 d0 h
  5465. ;;;----------------------------------------------------------------------------6 w% U/ F. ^8 e  ?+ Y3 w- d4 x! p# i

  5466. 7 T+ A8 F& s' M
  5467. ;--------------------------------ddmodify.lsp----------------------------------
    % W6 K+ G" ~# N" _7 m2 {
  5468. ; Next available MSG number is    111
    % N$ V- @8 `+ y8 A, _* k
  5469. ; MODULE_ID DDMODIFY_LSP_
    ' p! I6 A# s* b3 }8 {+ g/ o) B
  5470. ;;;----------------------------------------------------------------------------
    ; Y! W) ?( @$ O
  5471. ;;;    DDMODIFY.LSP7 Z. U7 i# Y7 Q5 m. b, V+ c8 i
  5472. ;;;. a: z% f8 H3 L
  5473. ;;;    Copyright 1997 by Autodesk, Inc.& m, K8 `! Z; k) L
  5474. ;;;
    : K$ v+ X' u" R
  5475. ;;;    Permission to use, copy, modify, and distribute this software* O+ p3 {2 O4 q( ]( }
  5476. ;;;    for any purpose and without fee is hereby granted, provided
    + b+ F; L5 l6 z. P. A
  5477. ;;;    that the above copyright notice appears in all copies and
    ) {# c% i7 q: T7 Y3 O( y$ n7 M
  5478. ;;;    that both that copyright notice and the limited warranty and2 @* v4 d" l4 Q- Y# K
  5479. ;;;    restricted rights notice below appear in all supporting
    - D7 [$ I! _3 z& a) v
  5480. ;;;    documentation./ i) l5 k) m! ~& d( l3 ?8 P
  5481. ;;;9 j( Z9 A$ f0 G9 U
  5482. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    * J/ u8 N5 m% i. R2 y* k. K7 o
  5483. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    " ~+ K) R2 {; h
  5484. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC., l$ J, \" K4 V' f; W
  5485. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE( ?6 @) X2 @+ p9 q! Z9 y
  5486. ;;;    UNINTERRUPTED OR ERROR FREE.0 c" s$ @5 \% o2 }& u0 M
  5487. ;;;
    / k( e8 l+ L# r# q" a5 i/ ^5 Y
  5488. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to& E' k  L( C; I
  5489. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer+ R5 w7 h' C/ [3 b' G% E
  5490. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    + N' b$ b. N1 x1 s) L; b2 K
  5491. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    : w- F/ m2 }0 U6 w5 R
  5492. ;;;
    / U. c- |1 G- A! _& B) s8 e
  5493. ;;;.
    7 G9 w8 t+ w" J  {# k* ?
  5494. ;;;
    0 N$ K; H: J8 z; ^6 L$ `- \) R8 l
  5495. ;;;----------------------------------------------------------------------------/ v& e- j: a% c( n3 ]0 r: m
  5496. ;;;   DESCRIPTION
    ' L- S! t6 R. }% D6 d' W& C% |
  5497. ;;;: P& ~: W2 T/ J1 @
  5498. ;;;   This function allows the user to get a listing comparable to the LIST
    ) K* D1 H0 W" ]: U
  5499. ;;;   command for most objects.  In addition, most object fields in the
    * \6 W* n. e! B
  5500. ;;;   dialogue box are editable.  Points can be specified dynamically by
    3 n( T" x4 P) m6 F& l# }! |3 c# A
  5501. ;;;   temporarily dismissing the dialogue box.  Each object has a unique
    1 x, U2 S% S  I# b0 Y% f
  5502. ;;;   dialogue.. \& q/ h( A- U8 r7 g; [+ K
  5503. ;;;
    : K" N5 r2 m" U2 B9 B) S1 m, i
  5504. ;;;   Naming conventions
    # I* J! i. D' m  c3 z' ?8 u
  5505. ;;;   Long function and widget names may use an underscore "_"( M# T6 f& A& r6 O
  5506. ;;;   in their names to make them easier to read, long variable$ s" F1 f8 ~& J  V
  5507. ;;;   names use a dash "-".% h& s% o- l% |+ e
  5508. ;;;----------------------------------------------------------------------------& A: ?. s' U8 e, W
  5509. ;;;----------------------------------------------------------------------------
    ( j( ?$ m9 A' h7 W2 B8 P; Z
  5510. ;;;   Prefixes in command and keyword strings:
    6 G: }" a) m( V" W& o8 r$ J
  5511. ;;;      "."  specifies the built-in AutoCAD command in case it has been
    % b3 a; E* o: f
  5512. ;;;           redefined.) l, ?, t* j% P
  5513. ;;;      "_"  denotes an AutoCAD command or keyword in the native language
    & u! ]9 s- n' V3 _  C! m
  5514. ;;;           version, English.
    8 m+ w+ l* S7 O9 _# E/ t$ j  G
  5515. ;;;----------------------------------------------------------------------------
    . `" }! l/ [4 w( ?
  5516. ;;;% s& `( M4 I, S. E
  5517. ;;; Avoid (gc)s on load to improve load time.
    / b6 L$ o9 T4 d# e
  5518. ;;;
    ( c* l+ _. r1 o) h" Y1 s6 y
  5519. (defun do_alloc (/ old_allod new_alloc)
    - A3 ~  f' B& H7 @
  5520.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))1 n% d0 N; f8 f0 B9 @* v
  5521.   (expand (1+ (/ 17000 new_alloc)))* _( }! i, R+ l6 G, E5 c& f2 [" s
  5522.   (alloc old_alloc)0 h2 k* ]! f3 {& i5 K  u
  5523. ), w$ V: }  A& g/ Q
  5524. (do_alloc)6 d" `0 q7 l3 V, D
  5525. (setq do_alloc nil)* \+ A! \* }8 w! n: ]5 h+ P9 P

  5526. ( A1 @3 Q: _9 f( n6 C
  5527. ;;;
    $ f: W. f8 F& L: V
  5528. ;;;
    # v2 g" S4 Y- d4 P
  5529. ;;; ===========================================================================6 f" n. E% L' S9 W9 _
  5530. ;;; ===================== load-time error checking ============================
    * x0 o) I$ G6 T5 U0 J
  5531. + k; g! e4 `5 G0 J( L
  5532.   (defun ai_abort (app msg). F1 x& g4 f7 n* f7 C2 n
  5533.      (defun *error* (s)* g# q9 e# c4 H: I# j) F
  5534.         (if old_error (setq *error* old_error))& x6 y9 U8 `7 u2 M" x. o
  5535.         (princ)1 }  n2 a; D5 \9 g/ h2 @
  5536.      )* w  \; n5 y0 M1 K3 ^
  5537.      (if msg/ w4 P0 u7 H* e" m- ?
  5538.        (alert (strcat " Application error: ", R* C+ N; u: a
  5539.                       app
    7 w. d6 H$ f- U2 c( P
  5540.                       " \n\n  "9 Z7 d) }' N0 {3 T, ~
  5541.                       msg
    $ u4 S1 w% P) h1 I
  5542.                       "  \n"3 ~! C' j& W2 {$ Z3 Z6 ?
  5543.               )
    ; |! O, N! x8 j1 F6 p: o
  5544.        )
    ; b5 d: i( D7 }5 q3 ?
  5545.      )
    0 e! A. b3 p8 T* @% d1 z5 M8 W
  5546.      (exit)% z1 Q8 V  Y& M+ }% r' B
  5547.   )
      u. r; l) _  a8 _' h

  5548. - P  b0 N0 ~7 E9 e, t2 H
  5549. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,  s2 t/ T: I% ?! w% S2 h4 C
  5550. ;;; and then try to load it.  If it can't be found or can't be
    % p& j* @% @% I7 g# a
  5551. ;;; loaded, then abort the loading of this file immediately.
    ) y. _( z- B7 h. U
  5552. ( U. d, k! m7 i
  5553.   (cond
    7 R2 u+ Z- I8 B2 M+ t/ i
  5554.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    * F# i$ M6 F. Z5 w% F, ^7 H

  5555. # j) O( y* c+ C
  5556.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    ' }7 \# B. C* q( U3 H
  5557.         (ai_abort "DDMODIFY"
    4 G# i" C2 |* h' S" @
  5558.                   (strcat "Can't locate file AI_UTILS.LSP."
    " b" N, e1 E5 L# i
  5559.                           "\n Check support directory.")))
    1 V4 q1 b8 R" v$ R$ w/ r$ t
  5560. 1 O3 ^! y$ A' A1 f! t9 X
  5561.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    0 {5 \0 F5 Y% p+ Z" R1 _
  5562.         (ai_abort "DDMODIFY" "Can't load file AI_UTILS.LSP"))
    3 q" \, Y6 g% }3 I& {+ d/ L
  5563.   ): r. o) ~7 b: L" R' m

  5564. 3 Z. t4 `7 E! }1 l% E0 w
  5565. ;;; If we get this far, then AI_UTILS.LSP is loaded and it can# C$ ~4 F. s+ Y6 {, u  V
  5566. ;;; be assumed that all functions defined therein are available.
    8 }* e8 w; Z# K" ?; y; E
  5567. 2 j! s4 M" J4 l. p$ l2 z' B* x; R
  5568. ;;; Next, check to see if ACADAPP.EXP has been xloaded, and abort
    0 Y& a3 y9 [' z, x! i" Y
  5569. ;;; if the file can't be found or xloaded.  Note that AI_ACADAPP
    " k4 P- {/ w# z7 M
  5570. ;;; does not abort the running application itself (so that it can
    ' ]4 O& Z; x6 M- B  ^
  5571. ;;; also be called from within the command without also stopping+ f2 n7 {; d0 |( R" d
  5572. ;;; an AutoCAD command currently in progress).. B' [8 c, S( N

  5573.   k5 g& v. j: t: E+ Q1 X
  5574.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP9 }6 \9 K* u! e+ d
  5575.       (ai_abort "DDMODIFY" nil)        ; a Nil <msg> supresses
    . R/ V( ]* K/ i/ ~- g3 q$ p
  5576.   )                                    ; ai_abort's alert box dialog.3 c' R4 j+ k. `. E
  5577. 2 Y# i2 w  W$ e& ?
  5578. ;;; ==================== end load-time operations ===========================9 S, w; g: |- v- J3 D8 G2 z: `5 X, I
  5579.   A1 \- `: P% v5 f3 C4 R
  5580. ;;; global variables
    , [( ]+ q! o) Q( n1 c

  5581. 4 Z, J4 A: F8 N" z7 g5 E  l: `
  5582. (setq hatch-elist nil)
    9 r9 f; O# a7 E
  5583. / p! x& M6 P' X# J/ b% k
  5584. ;;; If we get this far, both ai_utils.lsp and acadapp.exp are* {- y9 q$ S& b. A: ?* a
  5585. ;;; assumed to be available.. T; m& Z( Y& @+ \
  5586. 4 A. F, Z4 V+ a& I! b5 O8 K) Q
  5587. ;;; Define and encapsulate all subroutines that are declared
    ' [* i& v0 @$ L9 J
  5588. ;;; locals of the (ddmodify) function.# Z  p9 `. i/ Y: [. `
  5589. , w$ E- f! [/ g# n) E
  5590. (defun ddmodify_init ()
    & D/ U0 \6 l$ Q! {, j
  5591.   ;;. r1 {& V9 T( ]+ X
  5592.   ;; These three functions modify the enitity list for common properties.  Since
      R* O) u9 {# g2 w0 v9 L) s/ ~
  5593.   ;; color, ltype, and thickness are absent from the object list when they are) Y/ q( n0 f! b& Y+ N: L3 o% u
  5594.   ;; set to their defaults (i.e. color = bylayer), a simple substitution using
    : M/ p' D7 h: U  Q/ F
  5595.   ;; SUBST is not possible./ L  z; f3 a. b+ s- T* p  {
  5596.   ;;
    & G' n1 p, C1 m- ^5 ?4 N
  5597.   (defun modify_properties ()
    # p' b7 L3 I3 q: h; m
  5598.     (emod ecolor 62)/ m) S4 b: [) `# |: g2 [6 T
  5599.     (emod eltype 6)
    / e  i& T# o3 Q2 A3 x) S8 _
  5600.     (emod ethickness 39)
    ( Q4 n. T8 E! k+ Y2 s* D! J- m" \$ Z
  5601.     (emod eltscale 48): H5 f  M. O' z8 C  W' B7 Q
  5602.     (tempmod elayer 8 nil)" R" R8 K& ~6 Y8 i5 y
  5603.   )
    0 c* M2 k2 v, b- @& C% `& e
  5604.   ;;
    / {3 w  l& ?3 T1 y0 k" @' X+ l
  5605.   ;; This function is used for modifying common properties of the ACIS
    & A0 Y0 A$ G6 \2 p1 K. b  C: q
  5606.   ;; based geometry objects. Thickness is not valid for these objects
    , i9 M. _! N+ Z1 n" L
  5607.   ;; so it is left out.1 e- o: a% t  l2 D- ?) t1 {
  5608.   ;;
    2 l% M0 o2 u$ Z1 H( a
  5609.   (defun modify_prop_geom ()
    1 x, I5 E5 V% o) [: F' \9 H7 E1 h
  5610.     (emod ecolor 62)
    ) x* m+ ~% ?! T5 I) U9 [  g
  5611.     (emod eltype 6)
    ! G  ?9 d7 W8 |3 M8 d3 o  @# v% \
  5612.     (emod eltscale 48). A" h/ t  E; k# u! P
  5613.     (tempmod elayer 8 nil)! i% F- _: T5 ^/ v2 H( S, Z
  5614.   )+ U) V! k, x; R8 J9 V! p) ^

  5615. * ?% m) @/ G" g* N* M% I; v
  5616.   (defun emod (value bit)) b, J- B; k) v. X
  5617.     (if (= bit 62)6 k$ k0 y8 r* [$ x$ |3 A* Q9 y5 f
  5618.       (progn
      t) c! e6 r8 L: e3 S# L
  5619.         (if (or (= value "BYLAYER")
    $ ?6 p, P" k' A% x& G. z
  5620.                 (= value "BYLAYER")) (setq value 256))
      Z. h, F! w( c/ b
  5621.         (if (or (= value "BYBLOCK")
    9 c' b8 N& W6 a7 m- `
  5622.                 (= value "BYBLOCK")) (setq value 0))
    2 [7 a" n- {% t7 e0 [& j1 e/ }6 Q
  5623.       )( }$ e5 W% R* o0 x, r' B
  5624.     )6 P4 W! e. ^0 u; F- R
  5625.     (if (setq oldlist (cdr (assoc bit elist)))
    * S5 D; T, M( T& l
  5626.       (tempmod value bit nil)' ^+ E8 C* R$ R
  5627.       (setq elist (append elist (list (cons bit value))))
    3 R/ M1 @* ?) @
  5628.     )
    " A( u6 K3 f% [
  5629.   )* u7 T+ ]1 ]* O% L3 d5 B+ P+ S
  5630.   ;;8 v  H; ^" \3 e/ w2 U
  5631.   ;; Resets object list to original values.  Called when the dialogue or- E( J, X' U) P- e
  5632.   ;; function is cancelled.' H$ t: w0 e% b# c) m3 Z* b; ^- V. \
  5633.   ;;! o) k. j2 K% h
  5634.   (defun reset ()
    : ?- {3 @7 ?6 F
  5635.     (setq elist  old-elist/ C1 p  g& ]' l( \2 z! n7 o0 [
  5636.           ecolor (cdr (assoc 62 old-elist))
    " j* J  Z. Z1 n( Q  @' \& I
  5637.           ethickness (cdr (assoc 39 old-elist))
    8 ^( ~6 r( O  X  [# Q
  5638.           eltype (cdr (assoc 6 old-elist))
    6 _& ?8 `% R- b" |
  5639.           elayer (cdr (assoc 8 old-elist))3 y: u" }: {: c& i+ [3 q. `
  5640.           eltscale (cdr (assoc 48 old-elist))
    3 ~0 Z& u. w8 M! g0 G
  5641.     )2 f9 ]# z' h, Q/ F3 Q& G' k
  5642.     (if (not ecolor) (setq ecolor "BYLAYER"))
    $ B# {/ h( v; r- D/ Z
  5643.     (if (not eltype) (setq eltype "BYLAYER"))' c* y1 [' I4 O' x3 N" n
  5644.     (if (not ethickness) (setq ethickness 0))
    + u$ g& Q. C' S# B3 @
  5645.     (if (not eltscale) (setq eltscale 1))
    0 X. R6 i) c0 L) B
  5646.     (modify_properties)1 o# ]9 c0 o: J0 j5 T6 ^' q+ e
  5647.     (setq reset_flag t)
    ! i! d- W$ h- {* g8 M- F
  5648.     (entmod elist)
    2 v, m+ V( J) l/ t4 k9 r+ J
  5649.   )
    6 {+ z1 |) c. t0 F
  5650.   ;;
    8 F7 }- j1 p; U
  5651.   ;; Modify object when dialogue is temporarily dismissed to reflect latest6 g6 E  d9 R. a. ?
  5652.   ;; settings of dialogue.  It converts the point from current UCS coordinates to
    , X4 [6 W0 k7 B8 v# f0 s* T
  5653.   ;; the proper object coordinates (world or object).
    - y" }" g( h  N) [
  5654.   ;;5 A' j5 A; n. y/ p, [+ }1 v0 I
  5655.   ;; Arguments: value - in current UCS coordinates
    8 K) i# O  C4 |3 d9 u# i
  5656.   ;;            bit   - object code (i.e. 10 for start point)
    4 Q( y5 t3 S+ ]$ M9 p' ?8 k
  5657.   ;;            ptype - point type  0=world 1=planar* K" \8 `/ C3 F! N, p7 |! `
  5658.   ;;, L4 X. Q. z- O, K* F$ ?
  5659.   (defun tempmod (value bit ptype / newpoint)
    * v7 g% b0 L& R8 H( I( l  O$ B
  5660.     (cond
    , j+ G& O) F" O" g2 V- W, i1 G
  5661.       ((= ptype 1) (setq value (trans value 1 ename)))5 Y! e( s" G( q2 s! I% J0 ~
  5662.       ((= ptype 0) (setq value (trans value 1 0)))
    * b4 l0 a1 y; v  W7 l) w5 _, k
  5663.     )7 b' F% _8 R6 t1 R* R
  5664.     (setq elist (subst (cons bit value)5 Z0 X* l1 s5 B4 i; l9 T: Q
  5665.                        (assoc bit elist)
    ' L$ B- `- S/ m+ ~+ K- C' n
  5666.                        elist
    - h$ _  Z7 K$ Y% C
  5667.                 )
    9 W9 i$ T. B# N
  5668.     )
    3 X7 d- u& D% M+ v
  5669.   )
    ! y: W9 S; q$ ~6 V. s# j6 @- r
  5670.   ;;  H, c9 b: ]8 V( t+ I
  5671.   ;; The following functions are called after a dialogue has been temporarily
    ) ?0 G( o- J+ D& [; _
  5672.   ;; dismissed and the user is selecting a point.  If a point is selected the7 ?7 l* u! S5 o' F. l
  5673.   ;; object list is modified and new X,Y,Z values set.  If no point is selected
    : a9 i, \+ m$ D
  5674.   ;; (null response), then the point is reset back to its previous values.
    % ]8 g# t; v" h! O
  5675.   ;;
    ) S6 ]  ?1 B6 c' U( R/ [
  5676.   (defun ver_pt1 (ptype)+ A" ?& J4 g1 U1 l
  5677.     (if pt1
    9 J" |6 _6 K$ e) i+ G% S
  5678.       (progn6 v" N5 y: G$ U+ U. e4 x- o! k" }5 n8 |) ~' k
  5679.         (tempmod pt1 10 ptype)
    ' b% E( i2 h4 ]4 X7 Q
  5680.         (entmod elist): V9 N3 u2 l  Y2 ?. G; M6 h, r. U
  5681.       )& M9 M3 i7 r3 {2 F% k
  5682.       (setq pt1 (list x1 y1 z1))
      c7 Y, p( r( T4 i+ j) f, r; N6 x5 ?
  5683.     )1 D) _: o: G- ?1 u3 x- o
  5684.   )" u: |2 h1 H& o
  5685. 8 C  Z+ n1 i+ S8 z& B
  5686.   ; (move_pt1 <ptype> )
    + h6 i' V4 _/ [! C: W  t
  5687.   ;
    / h2 N. }- Z/ M6 U6 A9 Q
  5688.   ; Called in liew of (ver_pt1) to translate block insertions which
    , O3 P0 j1 z4 ]
  5689.   ; might have variable attributes attached to them.  If the distance
    % K/ m  t! P2 t" s
  5690.   ; the block is to be moved is < 1e-6, the move is deferred.# H1 s0 K( U) b" f  ]4 R
  5691. ' \& I4 l6 n$ k- T% B9 f
  5692.   (defun move_pt1 (ptype / basept hi)5 Z+ @7 E: Z1 k: O
  5693.     (setq basept (trans (cdr (assoc 10 (entget ename))) ename 1))
    : N5 a4 o5 s- \8 [. ~8 k( O
  5694.     (cond
    # l  g. J, B6 n/ c  v# o' U$ k
  5695.        (  (not pt1)9 J+ x- }9 w/ ?; G/ l5 [$ `9 V' b3 e$ P
  5696.           (setq pt1 (list x1 y1 z1)))( Q+ o, P3 w' Y8 `7 \
  5697. . Z' y( e! ?9 K9 N2 k, R
  5698.        (  (> 1e-6 (distance pt1 basept)))
    1 O2 b* h" I, d+ [- w( o( I
  5699. 0 b8 M* N' p6 Z0 W# @
  5700.        (t (tempmod pt1 10 ptype)7 w! t: i3 @2 V% r/ L5 ~3 E
  5701.           (setq hi (getvar "highlight"))8 B; z. j7 a: |3 p! B2 c
  5702.           (setvar "highlight" 0)
    ) L- m0 u# }7 ]/ l- e" L
  5703.           (command "._move" ename "" basept pt1)
    6 e, x/ f- o0 l
  5704.           (setvar "highlight" hi))* z2 h4 H5 L1 z. k, M' o
  5705.     )! f  p& P' n0 ]$ r
  5706.   )
    : E! N1 w/ r9 z- U7 E) P* f6 K
  5707. 5 r' ~; G+ A7 V8 X) q2 C) g
  5708.   (defun ver_pt2 (ptype)
    % d$ G. @. O* c& |
  5709.     (if pt2
    % M1 R3 B: Z3 }1 O
  5710.       (progn
    " I/ i3 D2 V; k8 {& w
  5711.         (tempmod pt2 11 ptype)3 f/ j  F  ]) \' U0 s$ W, o
  5712.         (entmod elist)
    " G& a+ _2 X* x: A. X! V
  5713.       )
    % F3 \8 ?/ d+ {: T. `
  5714.       (setq pt2 (list x2 y2 z2))9 J" T- t4 s( c4 H/ S+ m4 z
  5715.     )
    6 @) N& S' x0 q0 L7 L4 m
  5716.   )  f9 g/ S+ }1 ]: y% s- L# C* C
  5717. - C- T6 j! f7 V$ B. Z+ J6 P6 }
  5718.   (defun ver_pt3 (ptype)
    ! b$ A5 b7 c/ l# m' f9 K: Y
  5719.     (if pt3
    2 U4 Y5 E3 V, e0 o" I5 E, {" i; f
  5720.       (progn& D- A) \) u0 W( [# G& v% M
  5721.         (tempmod pt3 12 ptype)2 P5 N! O8 q1 w) g
  5722.         (entmod elist)
    , @& n7 o$ k, Q+ k# X
  5723.       )
    * m7 J) i6 b' a; d5 b4 W! m
  5724.       (setq pt3 (list x3 y3 z3))# u: @+ \9 N  r
  5725.     )
    ( J! z" h9 i' `: N, x9 U
  5726.   )
    ' ?! G# d% R; k2 {+ S9 {

  5727. ( F3 M) U& D1 |9 c. \* h
  5728.   (defun ver_pt4 (ptype)
    9 o' ~$ U( m3 B6 c+ S
  5729.     (if pt4
    : o' t! M$ g" W
  5730.       (progn
    + c8 o! B, d/ E/ O3 p' q5 t
  5731.         (tempmod pt4 13 ptype)
    0 e# e  i/ b$ {) S# b! B
  5732.         (entmod elist)( p  ~) V+ c- V. I, U
  5733.       )
    ! l! n) s8 ]# b5 Q
  5734.       (setq pt4 (list x4 y4 z4))# C4 p1 s7 j6 K  Y- a! r" }
  5735.     )
    - ?1 i! j& \) {
  5736.   )
    ( k) w  t0 _7 m& `# u- ~& W- E. ~+ Q
  5737.   ;; Xline/Ray6 w) Z, L4 a( ~* M
  5738.   (defun ver_xline_pt1()7 m4 _6 V% C+ X" O/ ^& ]
  5739.     (if xline_pt1
    7 Q  e& Z4 O6 ]; Y" P, s
  5740.       (progn4 y' x7 @+ d* _( ~% ]8 W
  5741.         ;; convert to WCS.
    4 P+ ]0 W" v8 e" R
  5742.         (setq value (trans xline_pt1 1 0)), G7 u4 B) m" i3 J
  5743.         (setq elist (subst (cons 10 value)
    2 q& \' h, j: ^7 |
  5744.                           (assoc 10 elist)
      C! m1 S. k1 \# y: A  r* d
  5745.                            elist
    9 m- g  \/ R5 o; |; i0 q
  5746.                     )0 a  {% x9 B7 J; R# ~2 E
  5747.         )8 O9 B1 w% Z4 h: o* p
  5748.       )
    3 X$ o- W) N% g* G5 R7 E* L+ A$ `
  5749.       (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))
    # D8 h1 [0 A+ w$ z
  5750.     )
    # d# F& o+ o- Z6 b
  5751.   )' l; f3 ~0 y# s) i1 a" D' H+ T3 `
  5752. 2 I, ~- G; g& L1 D, v# t% `9 I
  5753.   (defun ver_xline_pt2()
    ! J) m- M) C* s" R, m" y
  5754.     (if xline_pt2
      }1 e0 a6 e& x8 q! _) P) B  ?0 N
  5755.       (progn
    4 @* L! P: P1 l5 m8 g3 N
  5756.     ;;
    & N8 x+ l8 ?3 b$ n4 m, q
  5757.     ;; Calculate new Direction Vector WCS  P1 _8 V& Y( S" ]7 A) u* ?
  5758.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))
    ) g  _5 Z, C% w2 Q' {. S1 R
  5759.     (setq temp_dir (trans xline_pt2 1 0))  j+ H, V( G; m' i" l# w
  5760.     (setq temp_dir_x (car temp_dir))! _9 i8 R6 C: A* g4 j; i; h) g
  5761.     (setq temp_dir_y (cadr temp_dir))
    ) g8 B. ^9 w0 K( H0 z. R  n
  5762.     (setq temp_dir_z (caddr temp_dir)); }: w& {% \4 C; I4 T& K$ O

  5763. ! m! @, j( R7 N
  5764.     (setq temp_xline_pt1 (trans xline_pt1 1 0))
      {  Y3 S% u* X
  5765.     (setq temp_xline_x1 (car temp_xline_pt1))7 p/ j- ^% X% \9 z" C  L
  5766.     (setq temp_xline_y1 (cadr temp_xline_pt1))3 e9 |! a7 c% `4 b! f6 t  R
  5767.     (setq temp_xline_z1 (caddr temp_xline_pt1))
    1 }& k! y8 M- U8 i. U

  5768. 0 v, ?3 r7 Y2 g* }6 X+ f
  5769.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)/ t) t; Q# F; `# k
  5770.                          (expt (- temp_dir_y temp_xline_y1) 2)0 f) e. s. M) c6 [0 B+ |5 t9 b
  5771.                          (expt (- temp_dir_z temp_xline_z1) 2)
    8 h0 i6 Y' ~0 z' L% R# `+ {
  5772.     )))
    6 E1 N$ x$ \# n: f+ {
  5773.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))
    ! l1 N) ^. }6 X8 d3 [8 S
  5774.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))% P" V( w+ ]+ k2 i+ Y) h
  5775.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))
    # s  v- g/ K1 j! _% O0 C3 g
  5776.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))  ]8 j& o9 K+ S* S
  5777.                        (assoc 11 elist)
    & r/ p* Q5 f) l: Y
  5778.                        elist1 ~7 h) B) z. \9 _* s
  5779.                 )3 P/ ~! L& T2 `! A8 v
  5780.     )* T6 ^4 y0 z6 b
  5781.     (entmod elist)9 S3 F- ?4 H) S% _6 w3 R/ \+ z
  5782.         (setq xline_x2 (car xline_pt2))
    * z9 I3 y6 t: U) ~
  5783.         (setq xline_y2 (cadr xline_pt2))
    % ]: b4 G2 V2 y- j8 c: R
  5784.         (setq xline_z2 (caddr xline_pt2))" ]! N7 _1 d, M( y

  5785. 6 T5 O' Z' G& \5 I. w
  5786. 0 @, `- N9 N* |4 k1 _
  5787.       ): g, _7 b$ b/ |% h$ I
  5788.       (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))  h# A7 w7 s5 [; C4 u, m
  5789.     )4 n/ O+ k# S5 K7 }: c: O
  5790.   )
    ) Q4 J7 d' `: I/ s% m" H

  5791. 9 w, X+ C+ Y) O: M* s; V7 G: n1 @9 g' F
  5792.   ;;( `$ S" |4 r5 T
  5793.   ;; Common properties for all objects
    * L! ~8 q- B3 i; @
  5794.   ;;
    % ]/ `/ P7 e# e+ }- M" W7 c
  5795.   (defun set_tile_props ()
    * O# b  ]: V6 E1 ^1 U
  5796.     (set_tile "error" "")
    + z5 Q% v' V" L3 `! f
  5797.     (setcolor)" t- r5 G* U0 j9 V% N6 l
  5798.     (cond. [5 M9 N" g$ [0 F
  5799.       ((= eltype "BYLAYER"). h2 k( O8 [7 v
  5800.          (set_tile "t_ltype" (bylayer_lt)))3 u1 b8 y: w6 U7 ?+ X6 m
  5801.       ((= eltype "BYBLOCK")
    / \0 ]$ J& d# B* F. ?( D
  5802.          (set_tile "t_ltype" "BYBLOCK"))
    ( K, ?8 U- k! n5 m- L$ {" Y
  5803.       (T (set_tile "t_ltype" eltype))
    9 B1 M# T' v' \* D$ p9 H
  5804.     )
    4 _, e3 `: [% j/ V5 q+ ^
  5805.     (set_tile "t_layer" elayer)
    * O7 M) w5 ~9 G# F" C
  5806.     (set_tile "eb_thickness" (ai_rtos ethickness))
    5 V" L: N8 x- y- y/ p0 @. ]8 ^
  5807.     (set_tile "eb_ltscale" (ai_rtos eltscale))
    . K+ ^3 T% m5 o' J7 Y* j
  5808.     (setq which_tiles (ai_common_state etype))1 @7 J) `2 z9 W$ f0 C( p1 i
  5809.     ;; Disable tiles if need be.... m8 u0 j( j1 O9 Y! q  q
  5810. % {0 _, s0 @' d+ i6 x9 Q% R
  5811.     ;; Layer Button and Text Field6 p1 Z. d- q" @. W
  5812.     (if (/= 1 (logand 1 which_tiles))# S& ?9 v7 m; U8 f( [
  5813.       (progn
    2 i& \4 \" K. S% h9 o3 V3 G
  5814.         (mode_tile "t_layer" 1)
    4 n$ I# l' g4 k1 `+ e
  5815.         (mode_tile "b_name" 1)9 O- P, R! T. Z/ [8 z
  5816.       )& ~; }; ]; K$ t( Z6 W
  5817.     )( ?2 m5 V+ \+ L* j3 t: _" N
  5818.     ;; Color Button and Text Field
    $ |! [* P6 Y+ ~5 g
  5819.     (if (/= 2 (logand 2 which_tiles))
    ; I# ]9 N0 `) \* K# r
  5820.       (progn* p4 d! P3 M( W( m2 `
  5821.         (mode_tile "t_color" 1): b" b2 v+ {- X/ P% V: W
  5822.         (mode_tile "b_color" 1)$ g' q5 ^. k# M
  5823.         (mode_tile "show_image" 1)
    2 f* ?' u: f, O- n
  5824.       )7 b" }1 |" |1 j/ N3 G) s# C* M
  5825.     )2 W- U/ D. r, |: o
  5826.     ;; Linetype Button and Text Field
    % |. v( J- E7 q7 D
  5827.     (if (/= 4 (logand 4 which_tiles))' ^4 h2 {8 L/ {3 r: j
  5828.       (progn
    9 a- a" i2 M* b' H/ w
  5829.         (mode_tile "t_ltype" 1)+ h# n( G; f" f
  5830.         (mode_tile "b_line" 1)3 @7 N# t" D' a% `$ h. Y3 @
  5831.       )! }; i/ l6 l& p9 ~" f" [3 K4 C8 [! ~
  5832.     )2 T# w- B5 F& g, ]$ S
  5833.     ;; Linetype Scale Edit Field
    , ?6 C( ^8 u9 Y  l
  5834.     (if (/= 8 (logand 8 which_tiles))
    0 N6 C2 N! Y* `& M
  5835.       (progn
    5 o2 U6 S2 Z% z; h1 [
  5836.         (mode_tile "eb_ltscale" 1)
    8 G& h3 q' A4 f% ?/ f
  5837.       )7 s4 O  e* b! O8 w  r- t! z% o
  5838.     )( ^9 t. `. D$ G6 e& d2 \" o
  5839.     ;; Thickness Edit Field.2 H2 k  S, L3 Q. F- I9 m9 {( s6 |
  5840.     (if (/= 16 (logand 16 which_tiles))
    ; h) T7 z: J) M  V  L' c
  5841.       (progn
    7 w5 Z# r7 D3 X8 y( b
  5842.         (mode_tile "eb_thickness" 1)) e- f* R' T; e; q
  5843.       ), X" F3 l# X8 W0 r' M
  5844.     )+ d$ @) N$ I: A  y8 C
  5845.   )4 P9 v  O- m+ O6 S0 p3 z1 e
  5846.   ;;( f: f, B, |2 Z6 k
  5847.   ;; XYZ Point values for all enitites0 R* _/ p  ^" f, Q0 {" x7 N- b
  5848.   ;;1 o. N4 W2 v# u, h. d
  5849.   (defun set_tile_pt1 (ptype)& D% G9 }/ f' n% d
  5850.     (if (= ptype 0)
    9 i, @' K- A+ {' J9 ^6 G0 t+ L
  5851.       (setq pt1 (trans (cdr (assoc 10 elist)) 0 1))6 U! J; S% Z: p' w5 P. E+ X
  5852.       (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    4 m7 z* d" z+ S/ h
  5853.     )1 {; E! V# V! G& [' `
  5854.     (set_tile "x1_pt" (ai_rtos (setq x1 (car pt1))))3 C( }" A: e4 W" F
  5855.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr pt1))))
      X/ ?3 Z$ q  Y( I9 ?
  5856.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr pt1))))
    ! M% {# D9 A. I% x; ?
  5857.   )7 C% k% m9 _, l' e6 I
  5858.   (defun set_tile_pt2 (ptype)( f# O* U; Z" L, l$ x
  5859.     (if (= ptype 0)
    ! `! K, f6 t7 I3 ?' J
  5860.       (setq pt2 (trans (cdr (assoc 11 elist)) 0 1))
    2 G0 ?9 g9 H- m; y0 k" v
  5861.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))& q( D# m' o) c) i! @
  5862.     )
    $ v6 V& B. z: q, `" p1 A
  5863.     (set_tile "x2_pt" (ai_rtos (setq x2 (car pt2))))
    8 z% [4 _9 }  r) s
  5864.     (set_tile "y2_pt" (ai_rtos (setq y2 (cadr pt2))))
    2 F: W- M  X4 g3 I3 ^2 u
  5865.     (set_tile "z2_pt" (ai_rtos (setq z2 (caddr pt2))))
    : t& m0 `4 P0 T1 e5 h
  5866.   )/ s; F6 U- a6 I: S( ~4 g
  5867.   (defun set_tile_pt3 (ptype)
    + t: j9 s+ |; g1 J! u4 R
  5868.     (if (= ptype 0)
    : F# Z4 ^  J3 H0 V' U# Y
  5869.       (setq pt3 (trans (cdr (assoc 12 elist)) 0 1))' A- U6 c  K( y* s: e
  5870.       (setq pt3 (trans (cdr (assoc 12 elist)) ename 1))9 v5 N/ j8 N& c+ Q1 s
  5871.     )5 W0 Q9 T" f* z
  5872.     (set_tile "x3_pt" (ai_rtos (setq x3 (car pt3))))& E+ L$ k) d5 p# O+ F) X% u' q
  5873.     (set_tile "y3_pt" (ai_rtos (setq y3 (cadr pt3)))); h: Z) U" O) N' u
  5874.     (set_tile "z3_pt" (ai_rtos (setq z3 (caddr pt3))))
    % ]: B: Q. y* Z* u
  5875.   )
      b" d9 `+ W5 G! k0 E# ~2 x+ ]
  5876.   (defun set_tile_pt4 (ptype)
    * }: v$ s/ y! \4 X  P
  5877.     (if (= ptype 0)5 s& ?3 h# k6 s# i) D
  5878.       (setq pt4 (trans (cdr (assoc 13 elist)) 0 1))  J: L; S, R6 b- s
  5879.       (setq pt4 (trans (cdr (assoc 13 elist)) ename 1)); k3 Y+ f1 I# M  ]
  5880.     ), r/ k5 X1 J$ Y: ]3 N
  5881.     (set_tile "x4_pt" (ai_rtos (setq x4 (car pt4))))
    ! \! T+ M) g( u) J' A' D0 r% u% S
  5882.     (set_tile "y4_pt" (ai_rtos (setq y4 (cadr pt4))))
    1 P# j- I' `# m- n! h
  5883.     (set_tile "z4_pt" (ai_rtos (setq z4 (caddr pt4))))
    , _1 p: t* i0 v$ D7 ^) t
  5884.   )
    3 V+ g9 z5 A2 J  q1 b( d7 A
  5885.   ;;
    * A- l+ w' x5 H$ L* B6 R0 c
  5886.   ;; Xline/Ray; J1 x8 T* ^% {4 d$ _
  5887.   ;;
    0 V4 d2 z% _* E5 U. Z; U5 E
  5888.   (defun set_tile_xline_pt1 ()( r/ O9 @) m7 M+ e8 }
  5889. ! @5 ?4 }2 a' ?0 z
  5890.     (setq xline_pt1 (trans (cdr (assoc 10 elist)) 0 1))
    , b  n1 B/ \3 F" N6 D$ G

  5891. 2 y$ e/ `. R* W. V! T
  5892.     (set_tile "xline_x1" (ai_rtos (setq xline_x1 (car xline_pt1))))
    " f, C6 E. r. y; N' h& Z
  5893.     (set_tile "xline_y1" (ai_rtos (setq xline_y1 (cadr xline_pt1))))
    / U0 w8 D1 u5 N$ b8 W
  5894.     (set_tile "xline_z1" (ai_rtos (setq xline_z1 (caddr xline_pt1))))
    6 G* |1 t8 s# J! m' z
  5895.   )) W8 H: F$ r$ o% M% ^- }, V0 ?0 B
  5896.   (defun set_tile_dirv ()! X- T" h$ P0 f' H
  5897.         ;; Convert 11 group to local UCS (displacement)
    4 i& e' D( P! q7 k
  5898.     (setq dir_pt (trans (cdr (assoc 11 elist)) 0 1 1))4 w' e5 t- f) Z

  5899. ( V: v7 s. u# e% l" y# Z% W, u
  5900.     (set_tile "dir_x" (rtos (setq dir_ptx (car dir_pt))))$ r+ O5 E+ N0 j" ^9 A$ y- b
  5901.     (set_tile "dir_y" (rtos (setq dir_pty (cadr dir_pt))))- m5 N2 [! J2 M* ]3 o& D
  5902.     (set_tile "dir_z" (rtos (setq dir_ptz (caddr dir_pt))))3 K% E$ `1 l7 h. j
  5903.   )# H6 x7 C# ^1 E) H* J  a- @
  5904.   (defun set_tile_xline_pt2 ()
    6 I3 e" p% X4 ]9 f
  5905.     (if (not xline_pt2)
    ' E& n: C6 z5 n% P: \, [: x9 }
  5906.       ;; Initial second point is Root Point + Direction Vector& t. [4 J6 _, Q2 U
  5907.       (setq xline_pt2 (mapcar '+ xline_pt1 dir_pt))* Y( s7 J' @  C4 J0 n( q- Y
  5908.     )8 y4 `4 R/ I  c4 [5 h: E
  5909.     (set_tile "xline_x2" (ai_rtos (setq xline_x2 (car xline_pt2))))
    3 V% p' q( |/ ^/ T  f* P+ U
  5910.     (set_tile "xline_y2" (ai_rtos (setq xline_y2 (cadr xline_pt2)))): m/ H# {; \  e9 D8 ]) U7 f
  5911.     (set_tile "xline_z2" (ai_rtos (setq xline_z2 (caddr xline_pt2))))3 _$ M- n+ J7 ~3 t
  5912.   )
    / I( _  A7 z5 ^" _

  5913. " r2 x3 G4 |) {1 w2 U( \  g# R8 i
  5914.   ;;
    ( y9 s5 j" h8 E
  5915.   ;; Handle for all objects$ p8 a* w. @8 m7 g5 \' m- r
  5916.   ;;
    ) F3 e) F9 f* `' ~/ l
  5917.   (defun set_tile_handle ()
    # a5 j% U; O) ?
  5918.     (if (setq hand (cdr (assoc 5 elist)))7 w0 ^' @) H: `+ O
  5919.       (set_tile "Handle" hand)
    - h: o7 B* k3 S; J: A7 |7 m: k
  5920.       (set_tile "Handle" "None")  D% E9 @1 G- Z2 X; Z1 a3 l
  5921.     )
    1 u6 Z; T( i) Y+ R- U) N
  5922.   )
    " `6 N, c2 `% i4 \& C
  5923.   ;;
    $ U& t- U. l! d" o, |5 q2 T
  5924.   ;; Radius for ARC and CIRCLE) [: }& s# E, o1 B: g: x: o! ?
  5925.   ;;
    8 T/ L4 A1 a, j7 r) F7 ?- Y
  5926.   (defun set_tile_rad ()4 Y+ A4 J% f, |, K! X2 v
  5927.     (setq radius (cdr (assoc 40 elist)))# V, b3 M! c' s" T6 I
  5928.     (set_tile "radius" (ai_rtos radius))/ W# k( Z$ Z8 W* o
  5929.   )) b+ k: }% P1 [8 q. x9 r
  5930.   ;;
    8 F$ e4 v7 N: F/ \
  5931.   ;; Start angle for ARC
      C0 Z0 h5 Y6 d5 e  ~* _/ J7 w& Z! P( H
  5932.   ;;9 z4 |/ n) Q' E/ Q
  5933.   (defun set_tile_stang ()
    1 ^$ @7 L6 R& P6 K/ `" n5 Q
  5934.     (setq st_ang (cdr (assoc 50 elist)))" ~3 `; w2 M. I- W8 q1 B
  5935.     (set_tile "st_ang" (ai_angtos st_ang))
    & l& c8 c- M% t. w
  5936.   )
    % o: z7 P, l" `- d# N
  5937.   ;;' @! O6 p5 }* Z
  5938.   ;; End angle for ARC6 ]+ e* u( n. I# j( J  O2 B; R
  5939.   ;;/ Q/ a8 ?' O" I. g
  5940.   (defun set_tile_endang ()
    ' H: A6 q% t; \! J
  5941.     (setq end_ang (cdr (assoc 51 elist)))$ c2 s6 e! p$ ~- v
  5942.     (set_tile "end_ang" (ai_angtos end_ang))/ S9 T7 B) E0 I- f! ~
  5943.   )
      L3 Y$ g' T( o; I0 g$ ~9 D
  5944.   ;;# o$ H1 g1 y' B( c
  5945.   ;; Rotation Angle - Text, Attributes, Block insertions and Shapes  S) f; o3 C( T1 E! \
  5946.   ;;% i  L: h2 t8 L, e: A6 p
  5947.   (defun set_tile_rot ()6 o% |0 r% z, u" G, a6 v$ l
  5948.     (setq rot (cdr (assoc 50 elist)))& f) U) u8 @( d* {5 o6 \
  5949.     (set_tile "rot" (ai_angtos rot))
    - E$ G4 r; E8 o  @6 d' O! X6 k
  5950.   )
    ; P( D7 F. M" B7 O: Q
  5951.   ;;
    ! t& s1 E' S( X; t5 J
  5952.   ;; Height - Text, Attributes and Shapes$ j) ?: n" n6 C& H2 ?$ t0 G
  5953.   ;;
    + [+ U" [4 H" \4 p0 M+ ?
  5954.   (defun set_tile_hght ()/ }" q8 t/ m5 _# k# E+ w8 F! T
  5955.     (setq hght (cdr (assoc 40 elist)))  n, u. U1 s  @) j5 o- f
  5956.     (set_tile "hght" (ai_rtos hght))" Q% C8 [8 M8 n# J, U
  5957.   )# Y5 V" D( v/ L" t+ \
  5958.   ;;0 Q* x: l, X! u5 x  q) ]
  5959.   ;; Width Factor - Text, Attributes and Shapes  h9 a! R! P6 y( b9 h; _5 T# c
  5960.   ;;
    ' F' n1 A8 f  c6 R' {
  5961.   (defun set_tile_wid ()' I% o# R. U8 M3 Y5 d
  5962.     (setq wid (cdr (assoc 41 elist)))2 {  O# v" Y3 ~! X$ V: K: }) I
  5963.     (set_tile "wid" (ai_rtos wid))
    * w+ M$ `$ ?1 ~
  5964.   )
    0 H% g9 v9 [( l  V
  5965.   ;;  d4 F. a4 Q0 B% G& D, Z1 q5 l& H
  5966.   ;; Obliquing Angle - Text, Attributes and Shapes
    - @" Q5 g% L6 \+ }& k9 Z5 a3 j0 z* F9 e
  5967.   ;;' H* Z6 _/ \* \9 V1 v  Z9 B
  5968.   (defun set_tile_obl ()
      {2 t3 s- k' m$ U2 G7 \8 b$ h
  5969.     (setq obl (cdr (assoc 51 elist)))  s# v/ r1 ]) }, r
  5970.     (set_tile "obl" (ai_angtos obl))
    ) l+ q% b" P7 ^  X6 T3 X+ [
  5971.   )
    - Q4 D  R* N3 x9 j: `, |( x
  5972.   ;;6 c0 p  ?# y, k5 `8 y. }
  5973.   ;; Text string
    8 X& H* m& ]3 h2 b4 a9 T
  5974.   ;;
    + q- x* D) B& _7 j
  5975.   (defun set_tile_text ()
    ) V, B  J& V4 `
  5976.     (setq text (cdr (assoc 1 elist)))
    3 e; O- J8 K. h% G) ?6 e
  5977.     (set_tile "t_string" text)0 \0 V4 {: S7 B( H: j
  5978.   )1 x( d9 B4 R( b- f' G5 _
  5979.   ;;: B9 t5 e4 q& x' n0 a' ]" ~2 C
  5980.   ;; Attribute Tag1 e% F) l6 I! g& p
  5981.   ;;
    6 T. G9 f) m' h5 ~% @/ D  o5 S
  5982.   (defun set_tile_tag ()$ p: u. g6 W4 C  O) p/ }$ R
  5983.     (if (= etype "ATTDEF")1 J* z% v, b& t  z$ q3 k
  5984.       (progn% z4 {# u5 ^! @+ `7 p( g, O
  5985.         (setq attag (cdr (assoc 2 elist)))
    1 B0 k. t2 L7 Z; L+ e. N4 Y
  5986.         (set_tile "tag" attag)
      f, z0 C, ~4 h9 ?( O
  5987.       )! z3 ^( i! x5 k" H% `; k( [
  5988.     )
    . ]. u) M6 h$ o" l
  5989.   )
    ) u1 @4 T, @/ _* a6 _1 D4 E1 h, D. v
  5990.   ;;2 n: C; x( e- w) J4 l" _9 r3 g
  5991.   ;; Attribute Definition" y; x4 y- y# H* z
  5992.   ;;
    4 v6 N: S6 m3 L
  5993.   (defun set_tile_prompt ()
    3 m( m: a# p! z1 S
  5994.     (if (= etype "ATTDEF")
    : \6 Q9 t3 [' Z( X5 O, E/ e
  5995.       (progn
    ) P: a" F  I: [, u+ V
  5996.         (setq atprompt (cdr (assoc 3 elist)))
    ( `; H3 v/ `% n, Q
  5997.         (set_tile "prompt" atprompt)
    ' q  \3 }" I4 h$ D* S/ R/ V
  5998.       )0 M% N  S, W2 c
  5999.     ), y1 C' Y4 s. v0 a2 J
  6000.   )
      b( ?, w1 N8 _; d
  6001.   ;;
    ' b% P% g- G5 B) ~- ]: V9 L
  6002.   ;; Justification setting for Attributes and Text.  Initializes
    # `6 F+ g1 h* d5 m% \: r' X
  6003.   ;; popup list box
    , `. M) d& V1 f$ I* `% s  ?
  6004.   ;;! k5 D; `- v0 o6 h8 q' ^
  6005.   (defun set_tile_just ()
    & i: C% p- t) ?
  6006.     (setq ha (cdr (assoc 72 elist)))  ; horizontal alignment
    / h! h" J: Z3 O3 y
  6007.     (setq va (cdr (assoc 73 elist)))  ; vertical alignment5 w' |: p8 U/ s( O; Z
  6008.     (setq ha-prev ha)
    % X* \1 e% ?* d
  6009.     (if (= etype "ATTDEF")
    # p7 W  d  [* ~& I1 R- o" L
  6010.         (setq va (cdr (assoc 74 elist)))  ; vertical alignment
    : h0 \3 `9 m9 _" P9 _2 T6 [
  6011.     )8 R+ m* U; g2 Z; S% k
  6012.     (setq jlist0 J5 g( V. i- F
  6013.           (list "Left"        "Center"        "Right"
    " o6 w' n" T4 S" {$ v3 m
  6014.                 "Aligned"     "Middle"        "Fit"
    + x. a: C( \) ~4 ?- O" x
  6015.                 "Top left"    "Top center"    "Top right"( @' r$ u, J4 Y# b, S: y% r" S
  6016.                 "Middle left" "Middle center" "Middle right"
    # r$ F* S" A& z/ A" ~
  6017.                 "Bottom left" "Bottom center" "Bottom right"6 w9 D5 q' b( _. X' V
  6018.           )
    % a; M. v; b# E( g# O
  6019.     )
    " c3 c8 U+ g( u( u( Q3 B& e3 @
  6020.     (start_list "popup_just")
    + ]5 U( y: o% ]) \
  6021.     (mapcar 'add_list jlist)! b: g) l# |4 Y8 G5 m6 {* I
  6022.     (end_list)7 {9 N0 Y& s9 P5 e: P
  6023.     (set_just_idx)
    4 [1 |* [) W# t
  6024.     (set_tile "popup_just" (jlist_act just-idx))
    - A. K8 A2 V: E8 x; \8 z
  6025.   )
    & X0 r( m9 I7 j! q0 ?& |
  6026.   ;;, ^5 y+ C- w4 i  r4 q$ E: x( e4 c: Y
  6027.   ;; Style setting for Attributes and Text.  Reads symbol table for popup list
    8 W  p7 c; M# S+ t
  6028.   ;; box.6 v0 v/ _, B4 E; ?+ O3 z( Z
  6029.   ;;
    6 `; v0 D7 ^+ A# ~  K5 J
  6030.   (defun set_tile_style (/ sname style-idx tlist)
    ! n9 j& Q& X7 Y2 M& d
  6031.     (setq tlist (tblnext "STYLE" T)% ]8 @) c' Z6 p+ l
  6032.           slist nil): a# r+ z5 U8 t
  6033.     (while tlist+ l7 ^- m& N: p) w5 f
  6034.       (setq sname (cdr (assoc 2 tlist)))
    , I1 m# g, |& r8 D8 U- Q: z
  6035.       (if (and (/= sname "")
    % P/ z1 d' b* Q! l3 Q3 D  Z
  6036.                (/= (logand 16 (cdr (assoc 70 tlist))) 16)); j2 O3 N' q! J4 O/ g
  6037.           (setq slist (cons sname slist)))
    # ?* z! V: Y" w  W# t, {
  6038.       (setq tlist (tblnext "STYLE")))) F" q5 v: t2 L: c  @& c5 i% v
  6039.     (if (>= (getvar "maxsort") (length slist))
    ! y. t/ w6 W9 {
  6040.         (setq slist (acad_strlsort slist)) ; alphabetize style list+ k, w1 V% V* i! R* p& E$ T: X( A4 H9 G
  6041.       (setq slist (reverse slist)))     ; or reverse it to put it in DB order0 s' r' m4 L- c- d
  6042. , g" I/ `4 }/ p0 x5 z
  6043.     (start_list "style")& C" [; P8 L6 ?7 E% [' Q- }
  6044.     (mapcar 'add_list slist)2 n# }3 {' B. b. R/ E( H
  6045.     (end_list)
    3 ]7 L# v5 _# P5 h
  6046.     (setq tstyle (cdr (assoc 7 elist)))# N/ y* t4 a2 U, t3 B$ O, t
  6047.     (setq style-idx (getindex tstyle slist))
    5 v% t! t, k; c: X
  6048.     (set_tile "style" (itoa style-idx))
    - S  V7 R' F+ C
  6049.   )9 w9 e/ }; s5 t# |  r
  6050.   ;;0 W$ N1 [: p. B$ C
  6051.   ;; Text and Attribute setting - upside-down, backwards8 @$ f* _$ S" T9 @; b! ^
  6052.   ;;9 {6 e. ?$ [) g
  6053.   (defun set_tile_bk-up ()
    $ N1 `: T# g4 _- t, h& d. r
  6054.     (setq bk-up (cdr (assoc 71 elist)))% @4 |8 Z' L0 K
  6055.     (if (= (logand bk-up 2) 2)# ]$ l6 d: t+ B- V, E7 V% x) S
  6056.       (set_tile "bkwd" (itoa (setq bkwd 1)))2 z8 a( x" @% E6 O3 m
  6057.       (set_tile "bkwd" (itoa (setq bkwd 0)))
    8 g3 U3 _, v3 `1 b
  6058.     )
    - C. S, H2 ]# ], C- T& k3 h. N5 v
  6059.     (if (= (logand bk-up 4) 4)* z# R, ?  u- R3 W- Y3 `+ y+ f: W5 H
  6060.       (set_tile "upsd" (itoa (setq upsd 1)))
    9 u1 n/ y- }4 W: F6 c1 q9 S
  6061.       (set_tile "upsd" (itoa (setq upsd 0)))
    4 \- ?! R/ V% x0 E# X! A0 x  W% q3 k( k
  6062.     )
    & Y- V2 o2 Y8 \' X# u
  6063.   )
    4 ^4 F. j# v$ {/ ~' ~! m
  6064.   ;;
    + B: k0 s$ y4 Y4 g- _! l8 R
  6065.   ;; Attribute setting - invisible, constant, verify, preset
    : {. b; l9 d& v  D. s' J' a
  6066.   ;;9 x# u# J! _* Q3 N/ H
  6067.   (defun set_tile_icvp (), O2 A& p0 l' h! O; f0 R. h' H0 E
  6068.     (if (not (setq icvp (cdr (assoc 70 elist))))
    $ g; L' j  D! C" e' l; o) ?) r1 [
  6069.       (setq icvp 0)6 F& B3 t" x& E9 K# \. ]
  6070.     )
    " ?. m1 }# N; K0 n5 i$ t$ `; ^
  6071.     (if (= (logand icvp 1) 1)
    / K( p! N3 @' I! r
  6072.       (set_tile "inv" (itoa (setq inv 1)))
    2 X. f' z$ m" d# m' @6 w
  6073.       (set_tile "inv" (itoa (setq inv 0)))4 _( c" R5 S! w
  6074.     )7 r+ i2 k0 u" ?/ U0 }: o
  6075.     (if (= (logand icvp 2) 2)
    8 P3 b) s5 H+ `, ]; ~
  6076.       (set_tile "con" (itoa (setq con 1)))/ B" w7 J) |) @# Z' o2 ^
  6077.       (set_tile "con" (itoa (setq con 0)))( Z& _! x1 v$ Y$ C% x* H
  6078.     )
    6 S& u5 F/ I+ ~2 R/ L0 r
  6079.     (if (= (logand icvp 4) 4)) \) W. b: {8 [; t, o1 o: x- c
  6080.       (set_tile "ver" (itoa (setq vfy 1)))
    " R, F4 i4 E5 ^& r9 j
  6081.       (set_tile "ver" (itoa (setq vfy 0)))% g+ v; k/ u7 @' r5 e" Q
  6082.     )% R3 X1 G) f$ o
  6083.     (if (= (logand icvp 8) 8)
    ( B7 q/ R# @" R
  6084.       (set_tile "pre" (itoa (setq pre 1)))
    7 q; o$ g& f( t/ [& ~5 C
  6085.       (set_tile "pre" (itoa (setq pre 0)))& Q; O' T7 C: o
  6086.     )9 a) l& W0 ^; c! G) c
  6087.   )5 c; ]4 l# W5 z2 H7 J/ k( T, Z* h
  6088.   ;;
    " {, o. i( I8 @& y) L' V9 l2 x* ~
  6089.   ;; Scale factors for block insertions( h/ @! @$ J( G* g7 V9 y
  6090.   ;;8 v1 G2 g7 Y* n* k" T( I" r
  6091.   (defun set_tile_scale (/ temp)4 P1 F  V7 ], r, T$ b
  6092.     (setq temp (getvar "LUNITS"))5 o$ {& c: N5 d: i
  6093.     (setvar "LUNITS" 2)- T  {$ @0 t# Y# H) Q1 Q
  6094.     (setq xscale (cdr (assoc 41 elist)))# w9 [  `4 _+ r- t9 L6 k' l
  6095.     (set_tile "xscale" (ai_rtos xscale))6 x& \5 X6 }* C; N$ u
  6096.     (setq yscale (cdr (assoc 42 elist)))( y8 ~0 C" Q, k+ p) ~4 M
  6097.     (set_tile "yscale" (ai_rtos yscale))
    + t4 l3 P; g5 W: k& U, L( S2 P
  6098.     (setq zscale (cdr (assoc 43 elist)))
    ' U& \( ^; L- G9 p* F$ V5 @: f0 x" Q
  6099.     (set_tile "zscale" (ai_rtos zscale))
    1 x+ j4 p! m. u! f4 j
  6100.     (setvar "LUNITS" temp)) A$ q/ k* ~) }; r7 W6 Z" z
  6101.   )
    9 P" r8 s  n; N7 S
  6102.   ;;1 G3 G, k. ^9 j1 ~$ X2 v! ^
  6103.   ;; Rows and columns for block insertions
    ( T! F& N$ e) e/ M- W. q
  6104.   ;;0 s! M4 A! a1 |3 `5 ?  O
  6105.   (defun set_tile_rc ()
    % z% Q' p1 s! i% k, Y
  6106.     (setq columns (cdr (assoc 70 elist)))
    " p$ {# @& O% E* ^
  6107.     (set_tile "columns" (itoa columns ))! S* h+ L; V( m4 R" s9 T
  6108.     (setq rows (cdr (assoc 71 elist)))
    # T/ `: L! o% g! l  r, b& R
  6109.     (set_tile "rows" (itoa rows))# B8 e4 e2 v+ ?* m% t  }7 @7 d
  6110.     (setq col-sp (cdr (assoc 44 elist)))
    1 L8 R6 L  n0 t$ r7 J2 g
  6111.     (set_tile "col_sp" (ai_rtos col-sp))
    6 t4 }1 W6 G2 t& r" S
  6112.     (setq row-sp (cdr (assoc 45 elist)))" q) J/ |/ i/ p* k0 p# z
  6113.     (set_tile "row_sp" (ai_rtos row-sp))  [- X6 ^' k% d% q% Y  }
  6114.         (if (/= hasclip T)& c4 v: w. S% v- P
  6115.                 (mode_tile "xcliponoff" 1)
    & U# X/ M0 M8 d3 m1 W
  6116.                 (set_tile "xcliponoff" (itoa xcliponoff))
    + V0 r; ?) V9 Y7 ]
  6117.         )
    ) [7 G7 z8 D8 H+ G
  6118.   )
      Z9 {" I% m, T' [
  6119.   ;;
    # Y7 K, \& t3 |; E6 B+ Q
  6120.   ;; Invisible edges for 3DFACE8 B  u; P& T+ h. C5 ~
  6121.   ;;
    6 m5 J( J8 l; d9 [
  6122.   (defun set_tile_edges ()
    9 [8 o! B9 g6 t& q( N9 F
  6123.     (setq f-vis (cdr (assoc 70 elist)))
    " h, z" s( U7 o" w" O/ R
  6124.     (if (= (logand f-vis 1) 1)
    , q- n6 L" L' f7 w+ r
  6125.       (set_tile "edge_1" (setq edge1 "0"))
    7 I% \/ B) `, L
  6126.       (set_tile "edge_1" (setq edge1 "1"))3 e1 [4 u$ W3 b
  6127.     )
    : I, b& [- F" p; k' B7 L
  6128.     (if (= (logand f-vis 2) 2)2 o. d8 d4 H7 ~& Q5 f) }& e
  6129.       (set_tile "edge_2" (setq edge2 "0"))  m& G+ A% F+ e! O0 h7 q
  6130.       (set_tile "edge_2" (setq edge2 "1"))+ O; _- g7 s3 |# \! S
  6131.     )
    - l# s+ B( V/ U5 I  C1 F/ b
  6132.     (if (= (logand f-vis 4) 4)
    ; X* P, h; t2 c2 P- _
  6133.       (set_tile "edge_3" (setq edge3 "0"))
    ) z1 {4 u) R, P3 Y: n+ M
  6134.       (set_tile "edge_3" (setq edge3 "1"))4 \3 \9 @7 I# f1 R* w
  6135.     )1 d2 J6 a/ b5 f# ?4 [$ v
  6136.     (if (= (logand f-vis 8) 8): F/ ^0 r5 l3 g' k+ t0 B
  6137.       (set_tile "edge_4" (setq edge4 "0"))
    $ y0 y4 X& ?* c. ^+ `  z3 J0 t
  6138.       (set_tile "edge_4" (setq edge4 "1")), Q4 S+ i$ ?. U) q! ~3 Y
  6139.     )) T5 @( G8 M  h- Q$ C5 o2 m
  6140.   )
      J6 J: J' |' i" o3 `- o
  6141.   ;;
    5 {0 r4 d$ [: }
  6142.   ;; XYZ Point values for polyline vertex" O  X7 R' C  A" V  a
  6143.   ;;
    ) A; W  i1 y# W6 i. n* j0 \
  6144.   (defun set_tile_vpt (ptype)
    1 _+ j' j% ]" h, q+ N; S
  6145.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")( l: z$ q, c/ G
  6146.         (progn
    6 l7 B5 x# s" X0 O; i2 ^
  6147.             ;; ctr is 1 based, vertices are zero based.
    7 X  v* `( |  O5 ^$ g
  6148.             (setq vpt (cdr (getLwVert (- ctr 1))))
    ; s4 T; w; e  }! h+ `, \
  6149.             (set_tile "xtext" (rtos (setq x1 (car vpt))))) F2 h0 X6 j+ w& ?
  6150.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    ) O2 R" L% o# C( z5 h, N. D+ L" y
  6151.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    7 r1 P% a! K8 T9 a8 r
  6152.         )
    4 B; D' f  p/ s8 e2 k! |; m
  6153.         (progn
      H& [( s( P0 }2 T
  6154.             (if (= ptype 0)
    , F4 t; A% \' ]8 u- @9 L
  6155.                 (setq vpt (trans (cdr (assoc 10 vlist)) 0 1))
    # |9 Y0 H) a. H7 d, p- L& ~- E  c
  6156.                 (setq vpt (trans (cdr (assoc 10 vlist)) ename 1))
    " U$ r/ L' l( h' j
  6157.             )
    " B& p+ p3 D6 y

  6158. + x. L: J( b# [2 K5 z: [/ q
  6159.             (set_tile "xtext" (rtos (setq x1 (car vpt))))
    6 w* ?% `$ S2 U6 e! F
  6160.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    : k$ b( U4 C% t0 G) n2 b1 h
  6161.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    " \1 M' x5 o1 `3 P/ L3 R
  6162.         )' p$ |8 a' A( r. ~, H, L
  6163.     ): A2 j4 `6 g2 r, D

  6164. : ?6 d5 Q* |  O  C/ @6 r" i
  6165.   )
      T- p: N' [  u  D- ]
  6166.   ;; This is the equivalent to doing an entnext on the heavy weight" L3 p$ U& T  k0 r3 F" r5 y& y
  6167.   ;; polylines. The hard coded '4' below allow stepping over the
    7 t1 v. J7 p- v( S' _& z
  6168.   ;; 40 41 and 42 group code information. The while loop finds the
    $ i7 d$ E+ N* K; R
  6169.   ;; first vertex which will be used as the starting assoc in the0 ~  k& R1 k: c
  6170.   ;; call to nth.( F% V& G+ ~7 s! g. U( P
  6171.   ;;
    + u4 _; j7 c# Y, t2 r
  6172.   (defun getLwVert (tmpctr / count tmp)/ X3 x" C4 z4 v
  6173.     (setq count 0)
    ( y; b, b; F( n( B9 [8 s- b: ^
  6174.     (while (/= (car (nth count vlist)) 10)! h, f1 f7 x9 b& l; h2 ^
  6175.         (setq count (+ count 1))
    . h4 M- O! T: ~
  6176.     )
    . |) d/ F/ }+ g  K
  6177.     ;; If the counter reaches the number of vertices,6 D9 T" Q4 C) a
  6178.     ;; reset ctr and tmpctr to zero again./ W! s7 S6 F% d- S# O" {$ D
  6179.     (if (= tmpctr (cdr (assoc 90 vlist)))6 m9 i* w0 @8 |2 I2 c
  6180.         (progn
    & R( ^; E, r$ E
  6181.         (setq ctr 0), k: B. |3 L! W$ N$ L& p( I( o
  6182.         (setq tmpctr 0)6 d# g, g/ m. |# u" B2 ?7 q1 l+ R
  6183.         )
    8 ?1 C6 }$ x  B& c* s
  6184.     )
    + }2 |5 Z6 `( M
  6185.     (setq tmp (nth (+ count (* tmpctr 4)) vlist))1 ~+ j0 d: z3 m% N  \' \# z9 @
  6186.     (setq tmp (append tmp (list(cdr (assoc 38 vlist)))))
    $ U4 h+ \" h7 }+ ]4 U1 S
  6187.     (setq pt1 (trans (cdr tmp) (cdr (assoc -1 vlist)) 1))4 {& |& L) }$ I7 B' a
  6188.     (setq tmp (cons 10 pt1))
    * _3 R- j3 P* }7 }/ ~
  6189.     (setq tmp tmp)* I3 E. y/ e( t, [
  6190.   )8 e% q0 @% E' E& v- i
  6191.   ;;
    / n4 z5 |$ Z# \5 R( k
  6192.   ;; Set tiles for Spline properties. If the spline is rational then we8 I1 g# x) y& }7 t/ O# n/ c
  6193.   ;; need to display the weight values of the control points, so set# P% Y" ?% U* p" `8 q
  6194.   ;; flag to 1.3 D( i8 N  W3 a. Z/ x# ^) G
  6195.   ;; 1 = rational spline* i- D* s& K. {" Q6 O1 O
  6196.   ;; 0 = non-rational spline
    8 Q" f: P7 R2 H4 d7 v& A( v& r- h
  6197.   ;;
    $ G/ k1 M4 \, F. b( ^$ Z" g
  6198.   (defun set_tile_spline_props ()
    & m  D6 s# \- `/ f, f, S
  6199.     (setq rational_spl_flag 0)      ;; initialize rational spline flag7 Y! o2 V' d! s8 x1 F7 l
  6200.     (set_tile "Degree" (itoa (cdr (assoc 71 elist))))# ~8 c4 a# S0 s4 w; n& ~6 q
  6201.     (setq bit70 (cdr (assoc 70 elist))): A# a: Q' q& x: Z6 V
  6202.     (if (= (logand bit70 1) 1)
    9 @2 `0 n' a* _4 @8 B% ^, J
  6203.         (set_tile "SpProp4" "Closed")
    2 y% d* z8 Y- v; H
  6204.         (set_tile "SpProp4" "      ")" N" r+ z+ P% n2 k
  6205.     )
    0 T& _$ i" t6 {
  6206.     (if (= (logand bit70 2) 2)' {2 p* c8 e' \  e8 [  z
  6207.         (set_tile "SpProp3" "Periodic")
    ; q! z' c, C2 h# x4 g* d6 Z) p
  6208.         (set_tile "SpProp3" "Non-Periodic")
    # u; Z9 M( V: y0 M# R$ H
  6209.     )" C! f" r+ b' i" q9 N& R
  6210.     (if (= (logand bit70 4) 4)
    & u5 i$ n6 ]" O% g# u
  6211.       (progn3 M5 f" `5 _4 m+ U% [
  6212.         (set_tile "SpProp2" "Rational")
    & q0 t. h; l6 E( W
  6213.         (setq rational_spl_flag 1)      ;; this is a rational spline9 c8 ^6 r7 w2 P( Z# M
  6214.       )
    4 G0 N3 _1 D0 Y% E6 K! Y
  6215.         (set_tile "SpProp2" "Non-Rational")1 g( K' D( T: e' T0 d# u9 \, b
  6216.     )
    , R" V+ r: f' _+ u
  6217.     (if (= (logand bit70 8) 8)
    & t8 n: Z+ V) c
  6218.         (set_tile "SpProp1" "Planar")
    * b' u3 c" ?/ V: J" G, y/ a
  6219.         (set_tile "SpProp1" "Non-Planar")8 e# J( t/ x! o
  6220.     )
    & X2 J$ o" o* b4 J/ j+ E; }- T
  6221.     (if (= (logand bit70 16) 16)
    " I) \/ \  D* ?/ p  i5 z6 P0 k
  6222.         (set_tile "SpProp5" "Linear")
    ; Z+ ~. p+ L2 i
  6223.         (set_tile "SpProp5" "      ")
    / Y8 u) r/ A& w: B+ N5 X9 r
  6224.     ); {& X: @0 r# v1 ~6 ?; y( T
  6225.   )/ L& `5 L6 X. N7 l
  6226.   ;;8 w" Y- c% p5 ?- a
  6227.   ;; XYZ Point values for spline points, D, A  e: Z& S& p2 F& H
  6228.   ;; Need to account for WCS/UCS& J' N+ C" l( @8 `7 Z7 x
  6229.   ;;1 ~4 w% [- z$ R6 J( g+ X! Z9 ~
  6230.   (defun set_tile_cntl_pt ()
    : O7 w' x  b/ a+ |/ |" a
  6231.     (setq cntl-pt (cdr (assoc 10  elist)))
      s, ?) ?0 N+ P5 s- {( v! f
  6232.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    , M8 h# _3 t1 k/ D9 ~1 W* V
  6233.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))- f( D; ?1 {1 w: n  h+ Y8 G0 }$ N
  6234.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))
    % Y5 Z! G$ j" ^
  6235.     (if (= rational_spl_flag 1)      ;; if rational spline
    6 B( d5 U, z! H$ m4 {' ]5 i1 F
  6236.       (progn                         ;; show weight9 o, E  Q- E$ [" V/ y3 C" v
  6237.         (setq weight (cdr (assoc 41 elist)))5 D! x/ I" f3 }- p, H/ C
  6238.         (set_tile "weight" (rtos weight))& |* G, u5 R3 n/ b1 \2 ^
  6239.       )                              ;; else
    4 `, h, Q" Q9 f" w' w" c& l
  6240.         (mode_tile "weight_text" 1)  ;; disable weight field  b* g, q  {* d
  6241.     ); Q# S  [  X* ~# s" y9 X4 \' Z
  6242.   )" h6 v% ?, W7 h0 \& N  |  O% h
  6243.   ;;: `- U$ ?) y  O: U
  6244.   ;; XYZ Point values for spline points
    4 T% |9 b! M" O; ?/ `
  6245.   ;; Need to account for WCS/UCS
      e0 d! E; C2 ^) m- c& Z5 S
  6246.   ;;
    / |0 n0 N& g3 Y
  6247.   (defun set_tile_data_pt ()
    1 v) |7 F; ?3 g! B9 @& o! c
  6248.     (if (not (assoc 11 elist))9 u4 T3 }- _% A" i6 O- I0 {
  6249.       (mode_tile "data_pts" 1)
    5 k2 z: g$ S1 \$ Z" k4 M  w: M: z
  6250.       (progn8 z- ?, E# ?  F% W; P" r8 `
  6251.          (setq data-pt (cdr (assoc 11  elist)))
    ! Q! c% I9 w# r  _  K- V6 Y
  6252.          ;; display points with current precision.
    # W$ t6 X( h% \) |( T8 ]
  6253.          (set_tile "dxtext" (rtos (setq x1 (car data-pt))))
    ! z. ^" D' y& V% L
  6254.          (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))
    % W! ?! H- k  b4 T9 P9 J
  6255.          (set_tile "dztext" (rtos (setq z1 (caddr data-pt)))): X- b: `6 s7 v; ^( h& w2 h' W$ K9 e
  6256.       )+ k, P2 J& c3 `2 M. s
  6257.     )
    " G2 O7 b3 G; e' V
  6258.   )9 ~. b  c7 k+ |6 M
  6259.   ;;% x8 O: p0 w# L# A, z( v6 O' ]
  6260.   ;; Fit curve, fit spline, or smooth spline surface setting
    2 q- ]# S3 B3 `! Z3 B( O
  6261.   ;;
    7 ^9 `5 Z& I: {
  6262.   (defun set_tile_fitsmooth ()9 i- m& @) y& W/ E
  6263.     (cond
    ! e! D- r& U% r6 V
  6264.       ((= (cdr (assoc 0 elist)) "LWPOLYLINE")& _9 Z# M) W0 {5 e1 R* V, Z' Z
  6265.         (set_tile "none" "1")
    5 C. f6 j, ?/ J$ B, b$ ]7 l
  6266.       )
    1 w  ?, ~, x. ~$ ]% M: B
  6267.       ((= (logand bit70 4) 4)
    ! u0 y+ O  ^, m( S5 Q
  6268.        (cond. V7 P* m# T  M  r3 q6 f
  6269.          ((= bit75 0)
    # ]+ E5 h* `9 \4 e
  6270.            (set_tile "none" "1")
      ]8 s3 N; {  B% Y/ t2 x
  6271.            (setq spltype 0)
    " X& A; a0 p* L
  6272.          )+ h9 q8 R8 m2 B8 R# {, Z
  6273.          ((= bit75 5)
    / A9 b/ X! W# r. F$ b6 O
  6274.            (set_tile "quad" "1")6 z* s3 q( E, L, R- |3 T
  6275.            (setq spltype 5)
    7 A! j. H" o1 @' ~9 p# x* ^. B5 J; N
  6276.          )" c/ r  e6 m1 ?& ~1 Q
  6277.          ((= bit75 6)
    ' U3 s/ d7 D, h
  6278.            (set_tile "cubic" "1")
    5 @' e! Q$ V, q( V5 D: i3 C
  6279.            (setq spltype 6)
    % t2 T+ N2 h' U) h! `
  6280.          )5 h& ?1 t+ X: G$ s, Y1 D
  6281.          ((= bit75 8)
    . V5 G) k1 u4 C0 d  b
  6282.            (set_tile "bezier" "1")
    : S! a3 `0 k4 Z, J
  6283.            (setq spltype 8)
    + h" l; m  x- h4 z, v  b
  6284.          )
    - x# f4 A/ s( _6 l: X( E. B% l
  6285.        )
    4 R) h+ b. P' X* j5 F  {
  6286.       )
    , X) `% }& S7 J0 S
  6287.       ((= (logand bit70 2) 2)' F- J* S* p8 h8 M6 r6 z2 K; l
  6288.         (set_tile "fit" "1")
    8 H7 n0 ~/ ^' B2 @
  6289.         (setq spltype 1)# ^5 N% f( G, x: j  B
  6290.       )( w4 F6 w' [! v; }
  6291.       (T (set_tile "none" "1"))
    ! |6 U  }" d# F
  6292.     )' W3 l/ Y& z0 d. `+ R
  6293.   )
    - [+ f. ~3 ^! `
  6294.   ;;
    $ X+ N$ J5 r, k6 n. B
  6295.   ;; Closed or Open mesh and polyline setting7 r7 e( I/ v. R! i/ P) T
  6296.   ;;
    ; H' m4 ]8 [( [7 H+ k! d- }
  6297.   (defun set_tile_closed ()4 A- A- R# E: @1 A7 |
  6298.       (if (= pltype "3D mesh")
    - l; }7 V) s; x6 p
  6299.         (progn
    , u" A) i  q/ B+ _  l. {$ F
  6300.           (if (= (logand bit70 32) 32)
    / x3 |3 P- x6 A1 @/ w& {  y
  6301.             (set_tile "closedn" (setq closedn "1")). y3 M5 s, c5 y8 y
  6302.             (set_tile "closedn" (setq closedn "0"))) I6 ^/ z) e# r) h, Z0 g
  6303.           )6 X" C# B2 ~- J: h
  6304.           (if (= (logand bit70 1) 1)7 d: F) Q* A+ g- l8 t
  6305.             (set_tile "closedm" (setq closed "1"))$ d4 }. @  X5 }9 }
  6306.             (set_tile "closedm" (setq closed "0"))
    9 R* j& ^. S" r' f$ i7 ~
  6307.           ). m) c4 Y- C3 `8 z1 o; y2 _% F
  6308.           (setq old-closedm closedm old-closedn closedn)( a: N4 E" M  O4 A" v) x
  6309.         )- P7 ^2 Z) P1 Q
  6310.       )
    9 W9 d" g# q" q
  6311.       (if (or (= pltype "2D polyline")# N8 q; R, k5 D, F
  6312.               (= pltype "3D polyline")0 Q+ V) _" _) ]- M# d% T2 N
  6313.           )
    : x$ x$ p$ _% p4 _% p% l
  6314.         (progn& A# b+ b2 H; S
  6315.           (if (= (logand bit70 1) 1)
    ( T( m: \7 V6 j' ]9 T
  6316.             (set_tile "closed" (setq closed "1"))
    * T+ J: A0 b* U2 n- S; p. f' A+ ~3 X
  6317.             (set_tile "closed" (setq closed "0"))% a& _# q$ v, U
  6318.           )
    , K, c! q- Q1 e: q5 [
  6319.           (setq old-closed closed)
    * X+ U9 c/ [& j2 n: I5 w' I7 }# v5 {2 d0 V
  6320.         )$ r; D) l( ]. Y+ {  E
  6321.       )
    + q' n5 {, C5 h. A" d9 ^* D0 q5 \1 W
  6322.   )
    6 C3 z& C) q  X+ q
  6323.   ;; Set common action tiles' s- B* X( _: @! N; m& P8 {
  6324.   ;;0 y4 N/ H1 O) H
  6325.   ;; Defines action to be taken when pressing various widgets.  It is called4 x0 W& q. Y3 |( D
  6326.   ;; for every object dialogue.  Not all widgets exist for each object dialogue,
    7 |9 `/ F  A1 Q  Q/ Y$ _% u3 k
  6327.   ;; but defining an action for a non-existent widget does no harm.
    ' _& n4 v6 F4 X, O7 }2 f- j
  6328.   (defun set_action_tiles ()
    * n$ ?/ K6 @# n. I
  6329.     (action_tile "cancel"       "(dismiss_dialog 0)")7 |- w. E. _( F' ~0 w
  6330.     (action_tile "accept"       "(dismiss_dialog 1)")
    ) z6 p$ ^( x  B( m" |
  6331.     (action_tile "help"         "(help \"\" help_entry)")
    5 E7 b7 e4 G. e8 x( y
  6332.     (action_tile "b_color"      "(getcolor)")
    ' |( p# W3 u, p. E5 Z* A
  6333.     (action_tile "show_image"   "(getcolor)")
    5 [) ?. ^# k3 h0 I9 |3 p
  6334.     (action_tile "b_name"       "(setq elayer (getlayer))")' e( q/ j, |% V- ~
  6335.     (action_tile "b_line"       "(setq eltype (getltype))")% z% _3 u. n/ D7 z! X8 S
  6336.     (action_tile "eb_thickness" "(getthickness $value)")
    * ^2 m, O. `9 y+ {2 D2 o# P& b
  6337.     (action_tile "eb_ltscale"   "(getltscale $value)")  v! k. D# x* Y
  6338.   S; d) L8 r% w  y. A
  6339.     (action_tile "pick_1"       "(dismiss_dialog 3)")
    & c# w! |7 j2 U1 {+ R+ I
  6340.     (action_tile "pick_2"       "(dismiss_dialog 4)")
    ! y* j0 J/ _( Q1 ]! Z. ~
  6341.     (action_tile "pick_3"       "(dismiss_dialog 5)")
    0 M" g' X3 h$ K3 |. }; z
  6342.     (action_tile "pick_4"       "(dismiss_dialog 6)")
    ( v0 r: l: ~7 s- Q' m& {8 ~
  6343.     (action_tile "x1_pt"        "(ver_x1 $value)")
    ' n. F& W. @% r4 m6 Q% G
  6344.     (action_tile "y1_pt"        "(ver_y1 $value)")
    & ^4 L3 q. U' j, O) p; ~
  6345.     (action_tile "z1_pt"        "(ver_z1 $value)")
    5 h- C- ~% v2 @7 x
  6346.     (action_tile "x2_pt"        "(ver_x2 $value)")
    2 F/ ?* i6 S# `0 H5 ~
  6347.     (action_tile "y2_pt"        "(ver_y2 $value)")) G: T8 j6 J7 q1 U9 e4 r
  6348.     (action_tile "z2_pt"        "(ver_z2 $value)")2 Z& n# s7 k8 Q8 r, F8 t  z
  6349.     (action_tile "x3_pt"        "(ver_x3 $value)"). E. P& Q$ S$ ^( B
  6350.     (action_tile "y3_pt"        "(ver_y3 $value)")
    & P$ q, ~, c7 H: X
  6351.     (action_tile "z3_pt"        "(ver_z3 $value)")) v) S7 C/ k: m7 m8 |" \
  6352.     (action_tile "x4_pt"        "(ver_x4 $value)")! R4 y; s. I5 R( B$ H
  6353.     (action_tile "y4_pt"        "(ver_y4 $value)")9 z8 A; k; n* D; O1 n/ p
  6354.     (action_tile "z4_pt"        "(ver_4 $value)")
    5 r; ?' ?$ F) F" [: ]
  6355. & }& t/ i4 e, n6 V* ?) g
  6356.     ;; Action tiles for Xline & Ray
    ! s9 }. L* A9 X2 b
  6357.     (action_tile "xline_x1" "(ver_xline_x1 $value)")
    - B) J( Q4 t/ x3 n4 L7 [9 M
  6358.     (action_tile "xline_y1" "(ver_xline_y1 $value)")1 i# }; O2 U7 K- P! `$ b( d4 f' W
  6359.     (action_tile "xline_z1" "(ver_xline_z1 $value)")
    , T  K* k, X6 c" N1 S& Z
  6360.     (action_tile "xline_x2" "(ver_xline_x2 $value)")% T5 Q. Z: d+ ~3 R. l4 w2 }2 B" j
  6361.     (action_tile "xline_y2" "(ver_xline_y2 $value)")' D! M* M) W& L# q6 B
  6362.     (action_tile "xline_z2" "(ver_xline_z2 $value)"): v/ h2 o9 |3 {3 K% D  V
  6363. 9 Z. d) n. |5 Y& I
  6364.     (action_tile "edge_1"       "(setq edge1 $value)"): d  G! C5 J' k0 u/ T5 ?2 D; ~
  6365.     (action_tile "edge_2"       "(setq edge2 $value)")
    " T: E9 s: x3 D* a+ t
  6366.     (action_tile "edge_3"       "(setq edge3 $value)")
    7 a$ m) i6 b1 r: ^9 D
  6367.     (action_tile "edge_4"       "(setq edge4 $value)")
    ; v/ j, S0 f7 A. \& k
  6368. 2 i  `8 |6 T+ ]/ A) x3 |! {
  6369.     (action_tile "radius"       "(ver_rad $value)")1 h) R1 X  _% P0 h$ y6 e9 W
  6370.     (action_tile "st_ang"       "(ver_ang1 $value)")
    4 H, `  v$ q4 o) J3 |
  6371.     (action_tile "end_ang"      "(ver_ang2 $value)")
    5 {7 _4 h+ g/ G7 d8 X# Y
  6372.     (action_tile "end_eang"     "(ver_eang $value)")" `6 c* K0 J) e6 Z. V
  6373.     (action_tile "minrad"       "(ver_minrad $value)")8 s* t/ o) x' ]- e+ J
  6374.     (action_tile "majrad"       "(ver_majrad $value)"); N% `8 o# n5 \+ s0 z

  6375. ' E8 I4 w6 v2 |- `$ e% p* {
  6376.     (action_tile "xscale"       "(ver_xscl $value)")
    % m2 [6 k9 b" s* B
  6377.     (action_tile "yscale"       "(ver_yscl $value)")
    8 X( T8 |5 Z8 q! V3 d* R, t
  6378.     (action_tile "zscale"       "(ver_zscl $value)")
    * H, |+ m1 D( T5 _4 f
  6379.     (action_tile "rot"          "(ver_rot $value)")# T; Z# d5 b% ?* h; J
  6380.     (action_tile "columns"      "(ver_col $value)")9 ?5 S( k) q- U7 h4 ~
  6381.     (action_tile "rows"         "(ver_row $value)")
    * S* U( R3 W, Z; K; g; n4 ^' V* E0 w  w
  6382.     (action_tile "col_sp"       "(ver_colsp $value)")0 x, M$ l% }% z7 ]0 b5 x
  6383.     (action_tile "row_sp"       "(ver_rowsp $value)")
    & A- B! O% g$ V% d# v% ]1 R3 g

  6384. : V! @$ R: g; ]& B: Y
  6385.     (action_tile "hght"         "(ver_hght $value)")- w. q6 B' v; s6 ^5 \! Z4 Y
  6386.     (action_tile "wid"          "(ver_wid $value)")
    ' c8 S) ^2 n- H
  6387.     (action_tile "obl"          "(ver_obl $value)")% [! K( g0 I- x3 M' n9 u7 k) E/ k
  6388.     (action_tile "style"        "(style_act $value)")" \/ n8 ~$ c& b- Y; L& P$ w1 f

  6389. ) Y4 L& c$ L. U" N, ~: E
  6390.     (action_tile "t_string"     "(ddgettext)")) t( R( F$ e4 _: a$ w# V
  6391.     (action_tile "tag"          "(ver_tag)")# q+ s+ X% z6 u) B- j7 P
  6392.     (action_tile "prompt"       "(ddgetprompt)")
    ) l( F, F7 g6 X0 ?2 s# v  N9 S
  6393.     (action_tile "bkwd"         "(setq bkwd (atoi $value))")
    ) m8 V. }' Y- ]& `7 N
  6394.     (action_tile "upsd"         "(setq upsd (atoi $value))")
    ) `( F9 P  V/ i' D+ v
  6395.     (action_tile "inv"          "(setq inv (atoi $value))")
    1 `" x8 @. C! w: @6 ~) t
  6396.     (action_tile "con"          "(setq con (atoi $value))")
    $ t* r; f3 t1 C4 f
  6397.     (action_tile "ver"          "(setq vfy (atoi $value))")7 _2 S6 Z* K; _* B
  6398.     (action_tile "pre"          "(setq pre (atoi $value))")
    ; F. {" y8 k/ _
  6399.     (action_tile "popup_just"   "(jlist_act $value)")$ x( u, a  t0 b. t2 o

  6400. * L5 ^) ?9 c: a9 d$ C
  6401.     (action_tile "closed"       "(setq closed $value)")
      N' s% L- w8 |* C
  6402.     (action_tile "ltgen"        "(setq ltgen $value)")
    / O: t& Q$ J5 S$ @
  6403.     (action_tile "closedm"      "(setq closedm $value)")* W7 Q- r( ^9 o7 K
  6404.     (action_tile "closedn"      "(setq closedn $value)")' T4 Y& F( s- O' V* G% i
  6405.     (action_tile "next_v"       "(next_vertex)")' h3 j: G' ?2 V" v$ ?  x/ n
  6406.     (action_tile "xcliponoff"   "(setq xcliponoff $value)")$ K6 N" Q; M9 U1 M+ J3 B

  6407. - d7 G# u! p: E, R
  6408.     (action_tile "next_cntlpt"  "(next_cntl_pt)")
    - c! Z$ G  b  H1 ^& i- @3 q# v
  6409.     (action_tile "next_datapt"  "(next_data_pt)")- d) b8 l# U. H
  6410. & s% G3 E" |! ?
  6411.     (action_tile "none"         "(if (radio_gaga \"none\")(set_uv 0))")0 s) x9 W* h. M% ?" L  v
  6412.     (action_tile "fit"          "(if (radio_gaga \"fit\")(set_uv 1))")
    $ z7 I0 ?$ T2 D' S2 h, U+ s/ a2 \
  6413.     (action_tile "quad"         "(if (radio_gaga \"quad\")(set_uv 5))")8 D( v8 X& `3 L$ J: e$ s
  6414.     (action_tile "cubic"        "(if (radio_gaga \"cubic\")(set_uv 6))")6 b: ?0 ]# v' u1 A
  6415.     (action_tile "bezier"       "(if (radio_gaga \"bezier\")(set_uv 8))")
    6 q, m. f" x, h8 F) z
  6416. 1 t( N8 P: J5 D7 W
  6417.     (action_tile "u"            "(ver_u $value)")
    8 F4 Z& g! c/ g, y: X
  6418.     (action_tile "v"            "(ver_v $value)")5 a* S% _' ]5 B+ ?. i
  6419.   )
    # u+ ?+ K3 H5 y

  6420. ; L! u- `0 `. z
  6421.   (defun ddgettext()
    9 S) S* @" J8 G- D
  6422.     (setq text (get_tile "t_string"))
    + V5 g. X# s* N& l
  6423.   ); C0 Z+ I5 M6 ~- v. ^, o1 M

  6424. , S9 j2 R' ]5 u+ ^4 q) }7 p( \8 c* o3 ^) T
  6425.   (defun ddgetprompt()
    % P! V% _4 B/ n" {
  6426.     (setq atprompt (get_tile "prompt"))( X4 ^$ m$ M2 @
  6427.   )0 o# n) |9 @8 k" m" L+ J/ s

  6428.   g2 d* ^9 }' P4 O4 N- B
  6429.   ;; As OW doesn't support disabling of individual radio buttons within5 y) i/ e7 l/ j0 v7 d* b
  6430.   ;; clusters, a check must be performed as to the legitimacy of the
    2 Q, u# k* r& b( v1 Q3 [
  6431.   ;; button pushed and reset if necessary.
    ' K3 M5 h# ^+ e$ k3 M9 N
  6432.   (defun radio_gaga (pushed)
    - D( y4 i! t# U$ I. t0 U9 j
  6433.     (cond
    4 E, T0 H- H" A( z0 F3 x
  6434.       ((and (= pltype "3D polyline")
    / @0 D& n  Z  ]
  6435.             (or (= pushed "fit")
    ! ^9 J& t6 h  O$ Z
  6436.                 (= pushed "bezier")
    2 ~( ]! m& F9 `% }  w6 Z" C1 v- T
  6437.             )
    : O$ ?$ I( S+ @# g; J
  6438.        ), m; e0 c' d! g7 t7 e7 O
  6439.         (set_tile "none" "1")4 Y, ]! F7 q$ W$ ?4 [; O% x" [
  6440.         nil; x- r* q0 w8 X( O8 g
  6441.       ): ^! `# I$ y; f. \) X) q
  6442.       ((and (= pltype "3D mesh")
    . p% R, ^4 p9 @! }
  6443.             (= "fit" pushed)
    ( e% J% ]$ i& S, H' X; d+ ~
  6444.        )
    : R( G: V: s) V5 \1 [
  6445.         (set_tile "none" "1")
    0 k7 x- v( {/ a8 \2 ~; B7 N
  6446.         nil
    4 C* L# T  [$ K- x9 m
  6447.       )" e* S: \# `; Z5 k" i
  6448.       ((= pltype "Polyface mesh")- ?, O. h1 }4 ?' K3 C% m1 V  X
  6449.         (set_tile "none" "1")4 D! C/ U7 S1 b' {3 p8 o' g
  6450.         nil
    2 w3 c( q- _. n$ f( {: U# a
  6451.       )
    , p3 a6 d3 _) X# w
  6452.       ((and (= pltype "2D polyline")
    1 f* R0 H; o4 K) F/ U: {& [% z1 ]
  6453.             (= "bezier" pushed)
    * D2 J0 a1 `, l7 N+ M
  6454.        )
    * ^* U6 p8 w( D& o7 ]% K$ ]
  6455.         (set_tile "none" "1")
    ) _& u* |( ~* e, A$ z- H
  6456.         nil6 D# m+ C2 W* ?/ E
  6457.       )7 f8 f; B7 e0 u7 D" U9 `+ k9 r
  6458.       (T)3 B* K, K  w2 {. d) [) M8 Q
  6459.     )# K" u( o* \+ S, u; D6 i
  6460.   )
    3 k. {3 c7 U2 B2 H
  6461.   ;;
    ! r6 g! Q: y: O* k
  6462.   (defun set_uv (type_n)7 R6 X5 X; n- `
  6463.     (setq spltype type_n)
    4 b# z4 a- ^6 s7 m  V! k/ ^+ b8 v
  6464.     (if (= pltype "3D mesh")0 {4 u6 n) W( }0 a2 [6 r! f9 P
  6465.       (if (= spltype 0)$ w4 U* J% f) t5 F
  6466.         (progn2 o4 p3 t: M" ]( k6 W
  6467.           (set_tile "u" (itoa (setq u 0)))
    . m# `9 v* L; P+ q  _  A
  6468.           (set_tile "v" (itoa (setq v 0)))
    + Z/ {$ J, @# r+ c, c
  6469.         )
    1 Y* W! F  r% y" V: l
  6470.         (progn. X3 `  n" |4 a/ @
  6471.           (if (= u 0)# g+ Y: k9 Q* v" k9 w7 }3 @, m
  6472.             (set_tile "u" (itoa (setq u (getvar "surfu"))))
    5 v0 v- }1 T+ y0 T: W8 h
  6473.           ). P: j/ W$ B! e3 R' R: y
  6474.           (if (= v 0)
    : F: f: W0 W5 d
  6475.             (set_tile "v" (itoa (setq v (getvar "surfv"))))
    ) v& Q' L+ F7 ~0 F" s& o
  6476.           )) [  ?+ Q/ e- F7 H
  6477.         )
    2 o$ ^  o, g4 ]) v3 v& b: y! z6 S3 a
  6478.       )/ T- b8 L' z3 O! l8 d$ K+ t3 u
  6479.     ). K' d1 w- W) z. Q8 M# a
  6480.   )  Z4 ]9 m2 M6 _2 I) ~
  6481. 1 L5 w& T7 A$ O: _: i7 K6 s7 y
  6482. ( k, D# R5 b- `, m
  6483.   ;;0 n$ F  x4 d" a) n
  6484.   ;; Verification functions
    6 I( h" Q4 v4 w; `  L$ H+ y
  6485.   ;;% |- H" {. [, K' u: k, K( v$ t" ?
  6486.   ;; Verify distance function.  This takes a new X, Y, or Z coordinate or
      t, ^' T" Z# i: D# M& P6 L, ^
  6487.   ;; distance value, the tile name, and the previous value as arguments.# W( Y& y" D% H% H' R
  6488.   ;; If the distance is valid, it returns the distance and resets the tile.
    ( F7 ?1 t4 K1 M, h0 X
  6489.   ;; Otherwise, it returns the previous value, sets the error tile and keeps6 E8 n8 h6 S- c! x* u3 a
  6490.   ;; focus on the tile.  Shifting focus to the tile with invalid value can; ]6 ]8 ?7 X! i& y& z. ^6 u- t
  6491.   ;; trigger a callback from another tile whose value is valid.  In order
    $ v( i3 k! g+ I& Z; m, L
  6492.   ;; to keep the error message from being cleared by this secondary callback,
    % M7 @" A# i4 r1 d2 k
  6493.   ;; the variable errchk is set and checked.  The last-tile variable is set
    ! ]) \- `& r6 n" R; a7 R* c: n! R
  6494.   ;; and checked to ensure the error message is properly cleared when the7 [& `/ {9 G' N+ U* M5 h1 \  ]
  6495.   ;; user corrects the value and hits return.
    1 t: N, b: c8 m9 w7 h
  6496.   ;;8 z( N9 \. j' Y" X0 Z; N" h! X
  6497.   (defun verify_d (tile value old-value / coord valid errmsg)
    8 _7 k8 P1 u, f' F% E
  6498.     (setq valid nil errmsg "Invalid input value.")
    ' T; S+ R9 a( L4 g6 E) k
  6499.     (if (setq coord (distof value)); O, X+ s( ~, ]2 v/ C
  6500.       (progn
    / J8 |1 `; D/ \  ^
  6501.         (cond
    - p4 J9 A" w) \" d3 E5 U( r
  6502.           ((or (= tile "radius")0 x! e- S/ C" \) c/ D6 Y) B
  6503.                (= tile "hght")2 N$ U8 ^6 R  v8 L* |" [
  6504.                (= tile "wid")/ K# t% ?% g. H$ N; p
  6505.                (= tile "majrad")
    ! S" j; O) ^, ~- f
  6506.                (= tile "minrad")" ]- _4 N9 I; C( J
  6507.                (= tile "eb_ltscale")
    1 d. d; u( F0 d, ^/ a
  6508.            )) J+ ^7 i8 p  E" s0 l
  6509.            (if (> coord 0)) @3 e" ^$ G3 [
  6510.              (setq valid T)0 D& ^. A3 Z0 _4 {8 m
  6511.              (setq errmsg "Value must be positive and nonzero.")
    9 Z2 I  z, Z! B4 I2 K: r
  6512.            )
    8 d9 N( s1 ^7 c% p
  6513.           ). t  {4 z+ u  L- [  E; U3 I
  6514.           ((or (= tile "xscale")
    / @$ ~' a% ~  g/ }) n
  6515.                (= tile "yscale")  S! s8 D5 T3 S) W' z, b
  6516.                (= tile "zscale")
    : H4 s* e3 j) d) O
  6517.            )8 r/ T2 X$ e/ i& J
  6518.            (if (/= coord 0)
    # B0 e0 t3 a: e; h" X2 Y0 E, v' [# R
  6519.              (setq valid T)
    3 B; K4 G' d0 f8 Q  l6 y" i
  6520.              (setq errmsg "Value must be nonzero.")- `. \2 v% v0 z2 t6 a" v
  6521.            )
    ( x( k4 F- P% u# P
  6522.           )1 B" `; O6 V5 w8 x: t
  6523.           (T (setq valid T))
    6 P3 f8 M. |$ ]' u  R
  6524.         )0 b- {# D, }$ c& f  x' w, A
  6525.       )
    ' B' o4 `3 P6 f
  6526.       (setq valid nil)
    - d: |0 K! [! g; B. H" a
  6527.     )4 a- H- a% t7 ~- \0 |
  6528.     (if valid4 G+ O4 d5 {! r
  6529.       (progn
    + q* G/ L5 R/ h) G% d
  6530.         (if (or (= errchk 0) (= tile last-tile))! V1 `* s5 ?; O' r3 k% l
  6531.           (set_tile "error" "")
    ; d$ d, Z8 W# x" }9 K
  6532.         ), h5 s* o- d  {8 B% K7 i
  6533.         (set_tile tile (ai_rtos coord))
    5 `7 I/ h0 S& B& c, U% o9 n' b
  6534.         (setq errchk 0)
    4 w/ B; \* r% N5 e) y
  6535.         (setq last-tile tile). @* s2 ?2 W' b- A/ F$ }
  6536.         coord1 d# s: O# ]) x% h" c8 F7 M
  6537.       )) c! t# h; _& Y- g
  6538.       (progn# g  R+ K* y8 u, O$ @* v
  6539.         (mode_tile tile 2)            ; Move focus to offending field% M" G9 g! ?, p) a' P
  6540.         (mode_tile tile 3)            ; Select offending text4 L; ^2 [, E( m
  6541.         (set_tile "error" errmsg)
    # W3 n$ m$ W5 K; ~- l4 F- `
  6542.         (setq errchk 1)
    ; A6 |5 `+ G+ r* x& t7 t
  6543.         (setq last-tile tile), C& m. S0 z' _4 h& Y
  6544.         old-value, P) f1 U! v" Q: e6 u: Y4 t  B
  6545.       )
    0 C3 A: K7 f$ N) h: R
  6546.     )
    : ~; F( w3 u2 ^8 ?; k1 E
  6547.   )
    : {2 E( a% B8 l9 D! s
  6548.   ;; Function for Xline coord edit box checking.
    + ]/ P& o% c  W
  6549.   (defun verify_xline (tile value old-value / coord valid errmsg), t* n% g7 G0 ^4 ~* `
  6550.     (setq valid nil errmsg "Invalid input value.")
    ; G. ^' [4 S+ u5 j& {9 m  {
  6551.     (if (setq coord (distof value))
    ; s9 m) {: Q9 y) [1 x
  6552.       (setq valid T)1 Q2 h$ Z2 j$ {- i$ O9 ~& l' z9 c
  6553.       (setq valid nil)
    ( n6 _% I; R4 u( T# u' e. @4 M
  6554.     )
    , S9 j: f* f" U, {
  6555.     (if (and coord1 W/ `; w8 f  |% T6 M0 C
  6556.           (and (= (atof (get_tile "xline_x1")) (atof (get_tile "xline_x2")) )" Y& e+ \1 T9 s
  6557.                (= (atof (get_tile "xline_y1")) (atof (get_tile "xline_y2")) )
    * s5 A% J" ~4 G# G* g! a
  6558.                (= (atof (get_tile "xline_z1")) (atof (get_tile "xline_z2")) )
    $ Y: [/ K. Z% m- r; l. g
  6559.           )
    $ Z0 }* ^* @. ]% s  G/ b
  6560.         )
    ' m. u2 I' ?5 G+ g( I$ V
  6561.        (progn* Z  W; ~% z  ?5 a2 X3 e0 U1 X
  6562.          (setq errmsg+ V- m) Z% X* W) o( _+ q2 B. l4 n) X
  6563.                   "The Root point and the Second point cannot be equal.")& a, D' [- j+ Z: ]0 u7 m5 t+ ^
  6564.          (setq valid nil)
    , t* g2 O- m6 C& G2 X& l& Q) q8 d1 K
  6565.        )
    7 |7 E4 T1 F/ i2 }) ?% O
  6566.     )
    3 K2 v1 N( K9 ~3 q, e. Z) u- ^( v
  6567.     (if valid) o& B% C1 ?$ e  E
  6568.       (progn
    . q9 D) T9 e7 |4 J. e
  6569.         (if (or (= errchk 0) (= tile last-tile))0 Q: o+ i) P; v2 S+ a
  6570.           (set_tile "error" ""). m& w% `6 }: }8 b% [1 I  l' a: q
  6571.         )
    4 G1 D1 C+ Q% {  v; Y
  6572.         (set_tile tile (ai_rtos coord))
    , `6 z+ q- i$ d8 Z$ i5 F) h
  6573.         (setq errchk 0)
    3 i9 _. }* J, F
  6574.         (setq last-tile tile)
    1 u7 t' [% |9 k6 V/ T3 ]8 F
  6575.         coord2 V* o" f! e/ Y) w8 T. [: u5 v; ?
  6576.       )
    , _& o1 O1 O& M& S6 r
  6577.       (progn5 |; @% d3 D* h; d* y" B: j6 B
  6578.         (mode_tile tile 2)            ; Move focus to offending field7 k6 x; D9 ]- q. A4 F. ]- N( U) [
  6579.         (mode_tile tile 3)            ; Select offending text, p% s. ]4 o+ ^2 |
  6580.         (set_tile "error" errmsg)8 h+ v/ [8 N( b3 U
  6581.         (setq errchk 1)3 b) j  h  K5 c+ j- I. F
  6582.         (setq last-tile tile)
    % U( ^# D  {$ ~4 I# f- d$ S1 ]0 r
  6583.         old-value
    - N8 T* T) E. \& }% c9 D2 x
  6584.       )
    2 V' a5 _1 g0 M# p2 e- [
  6585.     )
    / P4 b4 c/ P/ U+ V# b% ?
  6586.   )
    + e" B& H5 P! I* [

  6587. ) A8 q0 ~8 T' Q. _7 c3 s9 o, Z0 s7 c
  6588.   ;;% d* Z) x( D' l; h& N1 T
  6589.   ;; Verify angle function.  This takes an angle and a tile name as arguments.
    6 t1 v" R: L7 a& \
  6590.   ;; If the angle is valid, it returns the angle and resets the tile.
    6 z1 r5 F1 i. R7 Z; T
  6591.   ;; Otherwise, it sets the error tile and keeps focus on the tile.; H2 \# u" U8 c8 W
  6592.   ;;
    ) q$ k* ^! h. P
  6593.   (defun verify_a (tile value old-value / ang valid errmsg oblqmax)
    : A2 f$ C+ u  R: ]9 W
  6594.     (setq valid  nil; ]" F8 @4 F( \! ]- N
  6595.           errmsg "Illegal input value."9 z: P0 u2 U, L# u$ ]  b
  6596.     )2 E5 C# I. z2 \  T9 \, T4 G
  6597.     (if (setq ang (angtof value))' i% ^$ N# ~. G6 d! R$ e: W; R$ A
  6598.       (cond
    ' Z/ R. J% o( A2 d+ a, Y
  6599.         ((= tile "obl")               ; Restrict obliquing angle
    6 ]% }8 _' m5 O( y2 o
  6600.          (setq oblqmax (+ (* (/ PI 2.0) (/ 85.0 90.0)) 0.000001))
    ( o& C; @) p$ x) _: Z; k
  6601.          (if (or (<= ang oblqmax)
    : A+ T. U1 w) ~# H
  6602.                  (>= ang (- (* 2.0 PI) oblqmax))
      l6 e. s& U# s+ v
  6603.              )
    5 H  R4 h/ H$ v; W# j; v
  6604.            (setq valid T)
    5 x7 ?& Q6 g1 c1 z# n/ A! [1 M
  6605.            (setq errmsg
    - D* C8 z, Y3 a7 ^" E4 c
  6606.                  "Value must be between -85 and +85 degrees.")6 A) e& K) J( s. ?" u' E6 J* ^! N
  6607.          )( r' z2 |& K3 f
  6608.         )
    8 b& }8 d2 D' b$ r( R8 o5 m) L: S
  6609.         (T (setq valid T))            ; Other angles not restricted& ]; H/ a2 m/ N0 s
  6610.       )8 t. _/ o, l6 U' x8 V
  6611.       (setq valid nil)                ; Invalid angle input
    + G% @; [' \$ a1 ]
  6612.     )
    , P6 v; m3 x% }% M, w8 z- X
  6613.     (if valid
    . |3 t, a4 q% @& Z% q- a  g
  6614.       (progn) K; P2 C6 w- x9 A3 K
  6615.         (if (or (= errchk 0) (= tile last-tile))( d2 u! A- {% w  E
  6616.           (set_tile "error" "")6 h( R' f2 ^, y/ o) v! ?. `+ q
  6617.         )
    0 b7 {& t, q' A  p
  6618.         (set_tile tile (ai_angtos ang))
    1 X  N8 {6 Q; c  g
  6619.         (setq errchk 0)
    0 k4 S1 S, @. {; ?
  6620.         (setq last-tile tile)
    8 @' a/ ^8 M# T) ^6 X# `" i, Y2 b
  6621.         ang
    - g5 k+ u: |$ u  M) Z
  6622.       ), H: p( a0 z7 K
  6623.       (progn" w. K+ u% N* R; T3 Q4 _0 Q, y
  6624.         (mode_tile tile 2)            ; Move focus to offending field- S. a0 e6 ?; _
  6625.         (mode_tile tile 3)            ; Select offending text
    + e3 F9 |8 w7 e
  6626.         (setq last-tile tile)% @' U1 E. q8 [
  6627.         (setq errchk 1)
    & S3 b& q/ I( c1 V( k# v# R. a  d
  6628.         (set_tile "error" errmsg)
    % r6 G8 \/ w, F/ K
  6629.         old-value
    : U/ P! W5 h7 S0 y: u
  6630.       )
    9 L' y9 u  d5 z- W+ [
  6631.     )
    / `; X: z# W/ f5 `4 i8 C- C9 ]
  6632.   )
      d, P: e4 x8 b: B' Y
  6633.   ;;& I: l- k0 O! c0 p
  6634.   ;; Verify angle function.  This takes an angle and a tile name as arguments.% @$ i9 E' n2 w# q9 |% I; Z
  6635.   ;; If the angle is valid, it returns the angle and resets the tile.
    8 i: g# f( [) w1 ^8 P3 Z
  6636.   ;; Otherwise, it sets the error tile and keeps focus on the tile.
    0 S" p6 P# _3 l. O1 [3 r
  6637.   ;; This function is specifically for the end angle of the ellipse object. If
    - \: N! h# m' t* b; `7 I3 ]
  6638.   ;; the end angle resolves to zero then we want to display it as 360.
    + P! Y' Y% |8 u& _2 k3 X. V% x/ f
  6639.   ;;
    # c+ @6 {9 r) g# {6 C. O
  6640.   (defun verify_ae (tile value old-value / ang tempend)
    % W7 M& B# z+ W( l6 V
  6641.     (if (setq ang (angtof value))# h+ \& d; O$ o( V1 K* U8 _  B3 ]; y7 m
  6642.       (progn
    6 V4 r% {' ^3 k; e% h2 f0 I7 \
  6643.         (if (or (= errchk 0) (= tile last-tile))
    # D# ?% l7 D+ h& u4 P
  6644.           (set_tile "error" "")
    1 J3 S8 ~+ }4 A# k8 q9 A' Q
  6645.         )0 q( F4 F2 e: r8 R
  6646.         (setq tempend (ai_angtos ang))" ^5 Z2 H7 J' X
  6647.         (if (= tempend "0")
    . w( R6 R! h! g& ^. l  _
  6648.            (set_tile tile "360")* G0 C! \$ q( L, P
  6649.            (set_tile tile tempend)
    ) K2 g% j' _1 `) @( ~* }- l2 H
  6650.         )8 h, t4 k4 `+ w# D
  6651.         (setq errchk 0)
    " }, J$ S/ o0 }# B4 k
  6652.         (setq last-tile tile)
    - E5 ~8 {9 }4 ?% O' L
  6653.         ang
    * l$ d  S% S. }1 ~  f
  6654.       )0 `% _4 {- J1 `1 d* j" X
  6655.       (progn
    0 C  @" p- l4 e
  6656.         (mode_tile tile 2)            ; Move focus to offending field+ j3 q1 \& V, u9 h
  6657.         (mode_tile tile 3)            ; Select offending text
    - v/ B5 }; e5 E, ?5 w* K% x
  6658.         (setq last-tile tile)
    . ]4 U! g- Y  z8 Z
  6659.         (setq errchk 1)
    ; l6 D- {# r2 `4 y
  6660.         (set_tile "error" "Illegal input value.")
    ! V) J8 v1 _+ ^: y; E
  6661.         old-value" A$ V9 `$ S4 J/ a
  6662.       )
    # j/ Z: b* k0 V& @4 r
  6663.     )& A2 y. Z9 r5 q
  6664.   )% F5 v7 R& c5 J' `5 f. o# Y% ]
  6665.   ;;! m7 m# ~. D1 j9 b! P8 i: ?
  6666.   ;; Verify integer function.  This takes an integer and a tile name as
    , |! M% P$ b( U% m1 u4 S; s
  6667.   ;; arguments.  If the integer is valid, it returns the integer and resets the
    9 c2 @$ P4 p. {7 A1 S
  6668.   ;; tile.  Otherwise, it sets the error tile and keeps focus on the tile.  H) [% ]( y9 K2 J$ O, q2 U
  6669.   ;;6 ~5 l+ g+ H1 R+ b) k0 p
  6670.   (defun verify_i (tile value old-value / int valid errmsg)  n" g" a; E0 m  ?# }
  6671.     (setq valid nil)
    " \; y4 W+ K" L" H( J. I7 Y! Y6 g
  6672.     (setq errmsg "Value must be an integer.")! F. R7 V2 ]3 _
  6673.     (setq int (atoi value))
    8 n! o) z/ `2 Y+ q7 x+ P' {
  6674.     (if (setq intchk (distof value)); A2 Z, D) N: ?
  6675.       (cond0 |+ X9 m& {' o
  6676.         ((or (= tile "columns") (= tile "rows")): L0 O! \6 D/ V' U' L4 ?# e
  6677.          (if (and (= int intchk)% U: n% i3 c- ^8 c/ E9 k  J
  6678.                   (>= int 0)
    & {7 U* h+ n& b8 p0 h1 c% G
  6679.                   (<= int 32767)
    ; W; r9 e# G0 o
  6680.              )/ i& v; v' s3 X  W
  6681.            (setq valid T)
    ! H" C2 ]" F+ X2 _" ~+ ~
  6682.            (setq errmsg "Value must be an integer between 0 and 32767.")% u( B3 w0 u, d* Z' L9 z! E
  6683.          )
    # |" q+ c0 \0 m1 \
  6684.         )# y$ j0 `, h1 ^! \' j- T
  6685.         ((and (or (= tile "u") (= tile "v")))* b! O0 e" j1 D/ W& I& n+ a
  6686.          (if (and (= int intchk)3 c) l. J* m8 a; l
  6687.                   (>= int 0). G& j7 [% J0 n+ ?" h+ S
  6688.                   (< int 201)9 s4 a4 `) }/ s& ]% i/ Z
  6689.              )/ b& p% w' `' M; S, Z# }# g8 M- a2 q
  6690.            (setq valid T)
    " f! J; H5 E4 I+ N3 R8 [$ {
  6691.            (setq errmsg "Value must be an integer between 0 and 200.")
    ' c$ T- T/ W8 B( t8 F& c$ ~
  6692.          ), ~/ I+ e. ], G2 b, x- r( {; A/ R
  6693.         )  e. K7 h' W+ y/ e; S0 w3 N
  6694.       )
    ! e; J# J6 q3 d9 H  J0 B+ U
  6695.     )
    9 ^/ m2 {- e" O- v
  6696.     (if valid
    8 V6 X5 g2 H: z( H4 u+ K2 U
  6697.       (progn2 y7 S9 b3 F) B: q5 |, D: Z6 A
  6698.         (if (or (= errchk 0) (= tile last-tile))7 r) q5 U2 i1 E7 c( i4 Z0 A8 q
  6699.             (set_tile "error" "")
    8 }+ Z8 m6 E* h4 @% a) g5 `; `# ?  B
  6700.         )
    $ a  b+ k+ {4 t* y/ J  @
  6701.         (set_tile tile (itoa int))( \( [* C# V: I9 x) v: \$ q
  6702.         (setq errchk 0)0 ]  Q% U' I$ T/ Y" \
  6703.         (setq last-tile tile)4 S0 x$ ~) }7 b% p1 p" {8 I
  6704.         int
    / I7 q: Y. b5 V. X0 ~& M  a) [
  6705.       )
    6 k3 y9 q( j: E
  6706.       (progn
    ) w+ Y* J) m4 L8 S. C2 s
  6707.         (mode_tile tile 2)            ; Move focus to offending field
    9 b  n0 @; r! B& V$ R6 K/ R
  6708.         (mode_tile tile 3)            ; Select offending text9 m/ i# w- U7 C& I+ s0 p4 `
  6709.         (set_tile "error" errmsg)  V; q9 k8 d. r0 K
  6710.         (setq errchk 1)
    " S& Q$ `3 A* A
  6711.         (setq last-tile tile)
    ; G7 \# j1 ?$ t, M/ _
  6712.         old-value4 L0 X: D/ C1 A3 Z+ h
  6713.       )0 J2 H. V: S+ A6 X! n0 Q; x
  6714.     )! n9 J! o6 U8 t  c/ I! q: R
  6715.   )& ]  _: e% E* {. T+ u5 l
  6716.   ;;( E% A0 V1 X0 Z2 q' b
  6717.   ;; Functions that verify tile values for integers
    7 Z+ A) R, k0 q3 q2 B' U: r
  6718.   ;;* b: \8 a5 n5 o" R$ s2 t
  6719.   (defun ver_col (value)
    & a8 r+ p4 D# w( k- P  _
  6720.     (setq columns (verify_i "columns" value columns))
    : K2 e2 ]0 D9 ~  W( @
  6721.   )1 {0 a/ _/ ?- i* o( b4 U
  6722.   (defun ver_row (value)  I! u9 k) J; D$ r* `
  6723.     (setq rows (verify_i "rows" value rows))
    7 Z' r. z  c4 M( v/ A, @1 Z2 g4 a
  6724.   )4 T) O/ x" \7 n' I6 P9 u# Y1 A
  6725.   (defun ver_u (value)
    . z5 |" m# N& J+ W
  6726.     (setq u (verify_i "u" value u))
    & j5 E$ ~, T1 e) u
  6727.   )2 V  U, |4 C2 k2 B( x5 R/ N7 M
  6728.   (defun ver_v (value)
    3 z; _5 ]1 A4 E' R( w
  6729.     (setq v (verify_i "v" value v))4 ~4 U# }7 w& E+ o& \9 q+ F# Q: @' ?
  6730.   )4 R$ o& k: O, w$ |( y3 V; C8 [
  6731.   ;;+ o0 _  S  O3 g! Z7 ^$ D
  6732.   ;; Functions that verify tile values for reals
    * b: x9 Q: U0 }4 ^+ X% {
  6733.   ;;/ k: X% `/ Q6 T9 x3 U- W
  6734.   (defun ver_x1 (value)
    3 A& ^4 P7 A% V
  6735.     (if (setq x1 (verify_d "x1_pt" value x1)) (calc))
    " j( E' b3 R+ x0 T6 c2 U; p3 H! `# r5 A
  6736.   )( `- ^' Q' O- m/ N) i/ @, b% a9 I( R
  6737.   (defun ver_y1 (value)7 h6 m, i3 C0 V
  6738.     (if (setq y1 (verify_d "y1_pt" value y1)) (calc))6 _8 Y9 L* a6 G% O2 J* [; W# j4 |1 t
  6739.   )" V$ Z( \6 P3 i/ C; T
  6740.   (defun ver_z1 (value)9 H6 _9 |4 ~6 z7 U  A
  6741.     (if (setq z1 (verify_d "z1_pt" value z1)) (calc))3 d% t- {. N. s
  6742.   )
    4 {" I! I5 q, C! w8 }8 P
  6743.   (defun ver_x2 (value)3 n$ ]4 R3 O0 W0 h
  6744.     (if (setq x2 (verify_d "x2_pt" value x2)) (calc))
    1 P! \. Y( y3 U; J
  6745.   )
    $ w2 a0 o2 M: r" t4 E
  6746.   (defun ver_y2 (value)
    5 y& G9 i2 O1 I& Z+ u6 ]. M1 c, {
  6747.     (if (setq y2 (verify_d "y2_pt" value y2)) (calc))- f6 Y$ o1 Q9 i& E4 H; y" r  z
  6748.   )$ _  t, F' h! B9 O; Z$ }
  6749.   (defun ver_z2 (value). O" E; X! u4 i7 G5 Q2 R& f8 c
  6750.     (if (setq z2 (verify_d "z2_pt" value z2)) (calc))
    / c. W3 ?& Z0 u) E
  6751.   )2 W& Q: G, R+ D
  6752.   (defun ver_x3 (value)
    ; Q7 T* v1 l: ^2 k* n0 N
  6753.     (setq x3 (verify_d "x3_pt" value x3))
    " a8 r" s: w; Q( A5 x" T# n
  6754.   )8 \3 ?+ v0 o$ R/ p
  6755.   (defun ver_y3 (value)! [! s0 ^3 R* l$ g- }3 d
  6756.     (setq y3 (verify_d "y3_pt" value y3))9 @& R0 ]$ W6 {. w/ M4 j
  6757.   ); L5 j- Q- m/ {' K
  6758.   (defun ver_z3 (value)
    ) N0 k8 l  k* ?* z$ @7 H- C
  6759.     (setq z3 (verify_d "z3_pt" value z3))
    7 [) D, [" g) R- ~
  6760.   )
    * M( k! x) `0 `' k
  6761.   (defun ver_x4 (value)' g" e' N- I8 [6 s7 q4 z: t
  6762.     (setq x4 (verify_d "x4_pt" value x4))
    * n" L& k% y6 D7 {& e
  6763.   )0 v1 p- m( d3 ?2 N, m+ H
  6764.   (defun ver_y4 (value)
    # D: ]  j4 v5 O# K/ E; K
  6765.     (setq y4 (verify_d "y4_pt" value y4))
    1 }7 x  `9 u# w" e
  6766.   )
    ( V2 ^" [) m- ~; i# G+ \6 |8 u' y6 [
  6767.   (defun ver_4 (value)
    & d4 T3 X0 O, S. z% K. ?4 r3 Q, u
  6768.     (setq z4 (verify_d "z4_pt" value z4))- i* C$ z7 r# n# w4 C3 V7 v- |
  6769.   )2 Z+ z- Q) j5 O& a; Z5 u* w9 R$ ?
  6770.   (defun ver_xscl (value)% ~& b! w5 s9 s1 Z5 C
  6771.     (setq xscale (verify_d "xscale" value xscale))! Z( g  g9 {: G* L
  6772.   )
    6 Q0 A2 T3 N% f2 L- n8 b
  6773.   (defun ver_yscl (value)3 Y* S. F% o0 y& B' E- p% o: {- z
  6774.     (setq yscale (verify_d "yscale" value yscale))$ _$ ?8 d0 h" k- P7 T
  6775.   )
    . P/ P" s$ a' I& A# m+ _, h
  6776.   (defun ver_zscl (value)( t8 y2 |" k$ d5 E3 w
  6777.     (setq zscale (verify_d "zscale" value zscale))
    ( }2 i) H/ ?! D
  6778.   )
    ' G4 I( }$ J, P
  6779.   (defun ver_colsp (value)) k# [: t7 W' T
  6780.     (setq col-sp (verify_d "col_sp" value col-sp))
    ; v8 P$ w# n1 c9 h
  6781.   )4 w- m  }0 l" V: ^, `0 l2 s8 X) J
  6782.   (defun ver_rowsp (value), g; m3 }& t) o: i5 _5 U; @: z
  6783.     (setq row-sp (verify_d "row_sp" value row-sp))
    : J/ r7 F! a1 @) d6 `
  6784.   )1 J0 U. S% e& g5 Z
  6785.   (defun xclip (); E* P7 R; z* J0 S4 d; x3 T' K
  6786.     (setq xclipmode t)5 m+ m: i) A$ [; U) r' ?& w
  6787.     (if (= xcliponoff "1")+ }0 |+ o' i* ^. l5 i$ q
  6788.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_on")9 O& \9 j3 [, G2 t
  6789.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_off")
    * C7 j; g& @( a
  6790.     )" ^0 Z- I# w1 e; q! n. H
  6791.   ); D! W- J: x" K& L1 s8 S6 e2 Q  Y# {
  6792.   (defun ver_rad (value)' w/ a& K  j9 \" B
  6793.     (if (setq radius (verify_d "radius" value radius))! I+ L* b/ _; d
  6794.       (calc); x  p. N4 z5 {' N
  6795.     )
    - |- B+ I8 u+ G8 e
  6796.   )
    * ?* K) R; U! v$ o( T3 B$ F# _( D. q
  6797.   (defun ver_majrad (value)
    9 k4 C" n* v7 \0 p% c9 W# j
  6798.     (if (setq majrad (verify_d "majrad" value majrad))
    ; Y4 c# z$ A! _! m# X, c1 Q+ x
  6799.       (ell_calc_newval "majrad"). ?( r4 o) a+ ^/ w7 M4 x# k
  6800.     )1 k1 M/ e7 f! T1 z" j" P6 a1 _
  6801.   )2 I6 Q  p( T. A' C- I
  6802.   (defun ver_minrad (value)
    ! z6 R, ~, H, l: {3 x3 J- O  P4 B8 e8 |
  6803.     (if (setq minrad (verify_d "minrad" value minrad))  [( a1 R$ N$ z
  6804.       (ell_calc_newval "minrad")2 j# Q# F8 Z  w' m4 Z" P
  6805.     )$ E0 V8 L0 o% P+ H
  6806.   )
    5 |& z1 `; R  f5 P
  6807.   (defun ver_hght (value): [, O2 i1 Z2 ~4 u7 U
  6808.     (setq hght (verify_d "hght" value hght))
    8 `( e6 S! [+ s# h- z$ k/ \; @
  6809.   )
    ( X2 f) y6 Z* [
  6810.   (defun ver_wid (value)( ?  y6 [& I1 G' ^" B
  6811.     (setq wid (verify_d "wid" value wid))
    ( N$ [/ B* L1 R1 o% _: P. M" }
  6812.   ): e2 U3 O. Z8 r4 X+ V6 P; W
  6813.   (defun ver_xline_x1 (value / temp)
    + D% q2 v" U- i, e
  6814.     (setq temp xline_x1)
    / [$ t3 E& Q! K6 H
  6815.     (setq xline_x1 (verify_xline "xline_x1" value xline_x1))/ I' U: Y7 T) c: F: J  X
  6816.     (if (/= temp xline_x1). r: [8 g6 T3 w% u" X: h$ G
  6817.       (progn (modify_xline 0) (set_tile_dirv) )5 j( p) X; O5 t" W; Y3 E: ^
  6818.     )# w8 p5 |9 _% _9 w0 [
  6819.   )
    / {5 j! T' X, a/ d/ U
  6820.   (defun ver_xline_y1 (value / temp)
    ; |7 L0 w2 a! B& m! g& `; N
  6821.     (setq temp xline_y1)
    4 \" \* Z' ^" X/ h+ Z% i' M8 u
  6822.     (setq xline_y1 (verify_xline "xline_y1" value xline_y1))+ t" ?( I; [# R( y# A
  6823.     (if (/= temp xline_y1)" g# S! C7 A$ H" b0 |$ T
  6824.       (progn (modify_xline 0) (set_tile_dirv) )
    # v. z3 P7 m4 [/ x
  6825.     ); p. ]  Y0 ^! q2 j! N
  6826.   )
    ( Z" g9 s7 Q5 R2 c8 E
  6827.   (defun ver_xline_z1 (value / temp)/ c+ ?+ P3 y( {' b
  6828.     (setq temp xline_z1)
    " O- Z" [* ?* q# a$ @! A. x8 C+ w
  6829.     (setq xline_z1 (verify_xline "xline_z1" value xline_z1))$ i" g* s; H# O% I; ^. g  w
  6830.     (if (/= temp xline_z1)
      ~; F, O2 N- i# u" ^7 i
  6831.       (progn (modify_xline 0) (set_tile_dirv) ): ~: s; W9 K, H$ [
  6832.     )
    , z# X' o$ H$ S, r# j# i
  6833.   )2 {' d# U( _+ l( q5 \, `! ^
  6834.   (defun ver_xline_x2 (value / temp)
    9 T2 ?" w5 {' V2 x
  6835.     (setq temp xline_x2). y4 |3 c0 ^9 [8 `, y
  6836.     (setq xline_x2 (verify_xline "xline_x2" value xline_x2))9 q/ q4 }1 o4 ]) h- |  b% X: b
  6837.     (if (/= temp xline_x2)& G! @* J- h! }) \- N% c
  6838.       (progn (modify_xline 0) (set_tile_dirv))
    # [; m* j  c/ q6 e) S1 y
  6839.     )/ W; J; m* d6 X& j2 b) Y
  6840.   )" \+ |2 \/ @$ F# `# z" q4 `8 A
  6841.   (defun ver_xline_y2 (value / temp)) p' U7 g) o  j7 f! X& R
  6842.     (setq temp xline_y2)# L  ]: s, |1 [8 p8 N5 [% K
  6843.     (setq xline_y2 (verify_xline "xline_y2" value xline_y2))/ s9 m2 ?$ _( @8 H! d8 q
  6844.     (if (/= temp xline_y2)
    7 ?5 p* K0 g2 y8 o; b1 S
  6845.       (progn (modify_xline 0) (set_tile_dirv) )
    3 k" V# s$ i9 b' Q8 e) t9 T
  6846.     )
    / Y. q: l- p5 `' O
  6847.   )' U$ O  {+ ^3 a8 H, F4 H1 Y) m
  6848.   (defun ver_xline_z2 (value / temp)5 _/ L+ D; h" ~- C
  6849.     (setq temp xline_z2). @6 z2 V$ R8 o9 ^% X
  6850.     (setq xline_z2 (verify_xline "xline_z2" value xline_z2))
    / C; R3 E! D6 [; N6 x$ H
  6851.     (if (/= temp xline_z2)
    ' c5 l& n/ E8 v/ K/ Z4 P, l# ~  R
  6852.       (progn (modify_xline 0) (set_tile_dirv) )
    / B9 F$ E2 N: w
  6853.     )
    5 v' T& W1 m2 J" e" N: c
  6854.   )
    - ?' b- O9 m* @5 `
  6855.   ;;
    / E5 Z4 T9 @* b; o# X$ W3 W& w) c
  6856.   ;; Functions that verify tile values for angles; e/ C& l) w0 l- r# I: ^
  6857.   ;;
    * U8 R# a) \8 u# j0 {1 M+ m
  6858.   (defun ver_ang1 (value). T( v$ n: m- {" [) U# n
  6859.     (if (setq st_ang (verify_a "st_ang" value st_ang))
    % O$ ]% ~# J4 m& }( k% Z
  6860.       (calc)! w8 X/ N; L9 _" t/ [
  6861.     )
    , Y; s% U$ M# }+ V* y6 u6 w7 h
  6862.   )
    ! w9 Y: M: ^9 m% r
  6863.   (defun ver_ang2 (value)
    ' K! u. J) e& I" E- j# g; L
  6864.     (if (setq end_ang (verify_a "end_ang" value end_ang))
    ) |4 J" D5 x0 |! c2 l9 m" _# `
  6865.       (calc)
    ! _/ f0 i6 ?6 K& _
  6866.     )5 Z; S1 `2 k# m/ k
  6867.   )
    ) b. o) T  H' u' t& y4 V( O
  6868.   ;;
    8 D- Z1 l+ |1 M" C
  6869.   ;; Verify tile value for ellipse end angle. Handled slightly
    5 M1 s5 d3 W4 Q7 }6 Q; l
  6870.   ;; differently than the other angles.
    ( `( O! k% p7 j5 D' l5 n
  6871.   ;;$ n! I0 ?& k) E- J1 j' w& l
  6872.   (defun ver_eang (value)
    : |! }& Z7 z  C/ X6 A
  6873.     (setq end_eang (verify_ae "end_eang" value end_eang))5 g9 ^* @* s- g6 V/ b
  6874.   ): K. G2 h1 Q$ Y4 s! {
  6875.   (defun ver_rot (value)
    0 Z$ C9 Q8 N2 m* B( ]
  6876.     (setq rot (verify_a "rot" value rot))
    2 V- W5 I0 F5 O/ O  H
  6877.   )) b5 Z8 U, z/ s. H
  6878.   (defun ver_obl (value)) u4 |5 Y* }' \! `; s
  6879.     (setq obl (verify_a "obl" value obl))" q5 K. p4 c+ }' H/ u/ Y/ j( |
  6880.   ); D; o# `: ?- _0 n: Y8 J6 \
  6881.   ;;+ Y) _+ c# B0 n! m
  6882.   ;; Function that verifies attribute tag field for null string,% X* O+ A2 X5 o, P0 S3 X9 i
  6883.   ;; or a string that contains one or more spaces.  Tile value
    # a0 A" R/ ]2 r5 S5 e
  6884.   ;; is also converted to upper-case as well.. S: I1 V$ O! w7 ~. a# n
  6885.   ;;1 l- n  d8 e& N% g% B
  6886.   ;;/ q% j* n" y4 i6 g( i/ J
  6887.   (defun ver_tag ( / tval)$ h5 u: \7 y) T: ]$ M! X- {7 a
  6888.      (setq tagval (get_tile "tag"))
    7 [* F) Z" M3 Y( ?9 M& }& G$ y
  6889.      (set_tile "error" "")
    8 ?! _% V7 t# @2 A- T
  6890.      (cond
    2 n, Q8 P, h; z$ I4 k
  6891.         (  (or (eq "" (setq tval (strcase (ai_strtrim tagval))))4 o- v* a9 e. f/ B  C$ h! g1 B  A
  6892.                (wcmatch tval "* *"))
    ( I  o7 N- Y/ ]( R) P, w& X; V
  6893.            (set_tile "error" "Invalid attribute tag.")' X1 a( }: k/ j
  6894.            (mode_tile "tag" 2)
    , e8 e. ]9 [" F* R7 M( y
  6895.            (mode_tile "tag" 3))& C3 i. F0 N" j, _) U
  6896.         (t (set_tile "error" "")
    1 H. z. ?$ x' [9 c9 l: @: J
  6897.            (set_tile "tag" tval)! a  r/ ]0 \: I5 z/ e
  6898.            (setq attag tval)))( d4 n, @; ]% E- T: [1 ]
  6899.   ). j; f5 o/ ~( k& C% y5 Y
  6900.   ;;: {2 o7 D) m1 W5 V0 }  B
  6901.   ;; Calculation functions
    ! A1 F4 U9 z: b! u4 g# j4 f/ P
  6902.   ;;
    7 k: A4 ~4 @8 l# m5 c' h
  6903.   (defun calc ()
    , P7 X* D* {1 b) X$ [7 P0 p6 ?
  6904.     (if (= etype "LINE") (line_calc))
    $ U) f4 J4 U) i
  6905.     (if (= etype "ARC") (arc_calc)): v& e8 R# u9 |9 E: M
  6906.     (if (= etype "CIRCLE") (cir_calc))
    7 Y! J. E" n6 K) a, l
  6907.   )
    ! t* y8 I/ T2 ?1 B+ p( V
  6908.   ;;
    6 _0 Y, b( o7 I% S# a5 H
  6909.   ;; Calculation functions for lines, arcs, and circles! J$ |4 q* T4 H. T) E/ {! B
  6910.   ;;  {( V. X& F. |
  6911.   (defun line_calc ()
    / u4 w. E  @& p4 m" N* a8 ]' }
  6912.     (setq stpt  (list x1 y1 z1))
    % d4 W" u+ V$ E9 I% s* i
  6913.     (setq endpt (list x2 y2 z2))* a. @: x" D! ?0 O4 g
  6914.     (set_tile "delta_x" (rtos (- x2 x1)))4 |8 t: k5 i$ }: W0 t4 d
  6915.     (set_tile "delta_y" (rtos (- y2 y1)))
    2 g: ^4 V! i3 ?# R- Q
  6916.     (set_tile "delta_z" (rtos (- z2 z1)))
    8 F8 W# s& Q4 P' `5 G
  6917.     (set_tile "l_length" (rtos (distance stpt endpt)))2 z$ o( t& Y: r
  6918.     (set_tile "l_angle" (angtos (angle stpt endpt)))2 j- Y' R) F/ N
  6919.   )
    ; r8 ^/ O7 C6 h+ p; g8 v: A
  6920. ( C3 |7 P) H6 Z3 k: k3 a
  6921.   (defun cir_calc ( / area units)' Z3 f( N1 z6 h. Z/ G  N
  6922.         (setq radtest radius)
    . {8 I( Z9 _) k. h
  6923.         (set_tile "Dia" (rtos (* 2 radius)))  }9 p1 V7 n0 V5 b
  6924.         (set_tile "Circum" (rtos (* 2 pi radius)))
    ; J& w: c+ [# ^4 _
  6925.         (setq area  (* pi (* radius radius)))7 z% T% L1 D& P' z% v! ?+ k
  6926.         (setq units (getvar "LUNITS"))
    : Z! ]$ z1 D$ J) o* C
  6927.         (if (or (= units 3) (= units 4))
    , g* M8 d' N$ S( q) y/ Z! f# C/ _: o' ]! b
  6928.             (progn
    . U2 B8 p: s* [+ H+ h$ u0 {
  6929.                (setq area (/ area 144.0))
    & s! S' y2 T; I8 O, V
  6930.                (set_tile "Area" (strcat (rtos area 2) " square ft")): m. z0 N6 s) l0 m% ^) ^
  6931.             )
    , s) w# Y" ^' q3 J( E6 @
  6932.             (set_tile "Area" (rtos area))
    . k$ K& k7 |- s- s. w- N
  6933.         )9 v5 h+ V1 G0 O
  6934.   )
    ' `- S9 w. o+ v4 W
  6935. ; F& u& s& e2 T8 U
  6936.   (defun arc_calc ()
    1 L  a2 W8 c7 o% s) x6 h8 U
  6937.     (setq totang (- end_ang st_ang))
    ! k9 U% ]7 `- n
  6938.     (while (< totang 0)
    ) s/ N" X# U) N
  6939.       (setq totang (+ totang (* 2 pi)))- ]& B6 _8 j; V- \  @- P& v( ]
  6940.     )
    . ~' g. ]9 \4 v* {/ D
  6941.     (while (> totang (* 2 pi))) b5 k' E5 k( E( \
  6942.       (setq totang (- totang (* 2 pi)))
    2 f9 p" G1 X" H  l4 g  i
  6943.     )
    # g2 N" w+ K3 G6 \" C9 g0 R; ^
  6944.     (set_tile "tot_angle" (angtos totang))* Z' c6 v& b9 p# S; v
  6945.     (setq arclen (* (* 2 pi radius) (/ totang (* 2 pi))))
    & F, A0 r0 v0 d5 x; U
  6946.     (set_tile "arclen" (rtos arclen))
    9 l' m6 a# k" X& T: C
  6947.   )
    & y: {/ O& O2 t$ ~, O/ d2 ^9 h
  6948.   ;;
    , o3 u( O* L+ z$ _) j
  6949.   ;; Calculate the major radius, minor radius, major axis direction.; [! ?" K# P. H) ]- M- L
  6950.   ;; Get radius ratio. Convert Start, end parameters to start and end
    6 ?3 y/ M; w2 ]
  6951.   ;; angles. Save Major Radius value in "old_majrad" in case the user+ a: U  s, _3 g, ^" x' f
  6952.   ;; chooses to input a new Major Radius value later. It's needed to
    " w+ P2 n9 P  T0 ?& R
  6953.   ;; calculate a new Major Axis Vector value.
    $ J1 }" l% y" J! X% [' C
  6954.   ;;" |$ B# z* }" R1 }3 ]6 x
  6955.   (defun ell_calc ()9 T3 B# F- c4 }' J# c0 m; I
  6956.         ;; Get major radius from the major axis vector.
    % L3 P0 ?9 g8 J
  6957.         (setq majaxis (cdr (assoc 11 elist)))  m9 p+ M6 j% Y- W$ ~3 R
  6958.         (setq xx (car majaxis))
    ' j5 ?+ i3 c- ]( ?+ B0 f
  6959.         (setq yy (cadr majaxis))7 R+ c. x2 w1 @. Z% }
  6960.         (setq zz (caddr majaxis))
    9 H9 t6 R& `5 {
  6961.         (setq majrad (sqrt (+ (* xx xx) (* yy yy) (* zz zz) )))
    " @6 P/ m5 C" t- K
  6962.         (set_tile "majrad" (ai_rtos majrad))
    ( O$ U- i1 T' z$ X
  6963.         (setq old_majrad majrad)
    2 _& z& U3 j. p# I2 E
  6964.         ;; Get radius ratio' n3 o  q1 [9 u0 c+ S
  6965.         (setq rrat (cdr (assoc 40 elist)))6 R3 B& y2 w9 i' ~8 X0 f
  6966.         (set_tile "rratio" (rtos rrat))& N8 t5 M' F' R  B1 y
  6967.         ;; Calculate minor radius: ]) \0 n+ c8 h
  6968.         (setq minrad (* majrad rrat))
    7 s" B4 Y5 R* ]. B5 g$ q% u
  6969.         (set_tile "minrad" (ai_rtos minrad))
    * z9 f5 K6 ?! q% S( x, ^
  6970.         ;; display major axis vector5 B5 F3 N9 E' F& ]7 f* g
  6971.         (set_tile "Majraddirx" (rtos xx))
    9 I7 F* D! A& l1 |* F3 R
  6972.         (set_tile "Majraddiry" (rtos yy))
    3 c; s! H# K( N7 _
  6973.         (set_tile "Majraddirz" (rtos zz))
    * J  Z( d! W) {

  6974. / m$ b- i* e- N7 O, X2 ~) e+ F8 K
  6975.         ;; Convert start parm to start angle. y3 b- G& n5 S. c' X9 }4 V! `
  6976.         (setq stparm (cdr (assoc 41 elist)))
    ' L; [+ Y3 Z- M- Z2 C% O! N9 d
  6977.         (setq vecx (cos stparm)); ?1 I6 w- a9 m9 p5 U! h7 T- i
  6978.         (setq vecy (sin stparm))
    5 ^5 p& n  [8 ?$ J' o
  6979.         (setq st_ang (atan (* rrat vecy) vecx))' ?6 F9 m3 G# |* |/ N2 n
  6980.         (setq tempst_ang (ai_angtos st_ang))
    7 K& R) v6 y! K6 r+ O. k: @
  6981.         (set_tile "st_ang" tempst_ang)
    - m: a: A9 ?% T9 g9 b! ?5 [/ B3 t
  6982.         ;; Convert end parm to end angle. If end angle evaluates to 0
    ' d! Y. Y. q1 A0 Q, r3 X  i
  6983.         ;; degrees then display it as 360 degrees.9 @, D+ c! q9 K9 s$ Q5 W8 ^6 [
  6984.         (setq endparm (cdr (assoc 42 elist)))9 @1 @: q2 @( N! [" [$ @* i# [1 ~
  6985.         (setq evecx (cos endparm))
    7 f; m) i3 Z( l
  6986.         (setq evecy (sin endparm))
    . m- T7 R4 s1 W5 w$ v
  6987.         (setq end_eang (atan (* rrat evecy) evecx))
    . B5 z: E6 ~# z( h) t
  6988.         (setq tempend_eang (ai_angtos end_eang))
    & d8 N2 d" f8 f0 I  o* X% k7 \
  6989.         (if (= tempend_eang "0")
    - j& x$ u" s/ w; G# v4 F  n& G
  6990.             (set_tile "end_eang" "360")
    6 R3 ]! U! ^$ E+ V+ s* A) |5 w- c0 Q8 n
  6991.             (set_tile "end_eang" tempend_eang)
    % p4 s4 f" N4 J4 Y- A1 C1 y( B* [( g
  6992.         )
    / Q1 o" ~: g# l6 S2 T4 k4 j1 _
  6993.         ;; Get area of the ellipse.6 P, w! u6 n- L0 p( p7 Y
  6994.         (ell_calc_area)  ]: I5 Z) |  G, o# o6 r
  6995.   )
    ) W" L6 u. R7 P4 d
  6996.   ;; Calculate area of ellipse. If it is an arc then: K* R7 ]" ~+ X9 w
  6997.   ;; grey out area display.
    & a# [& Y% e8 _
  6998.   ;;
    - g* Y1 O' u8 w7 r% @7 H8 }* Y
  6999.   (defun ell_calc_area ( / area units)
    1 k. u- s) [' W3 y3 g# W
  7000.      (if (and (= tempst_ang "0") (= tempend_eang "0")): \4 e, p! I+ J9 h
  7001.          (progn
    & L! D8 q  b8 [* }" e
  7002.              (setq area  (* pi majrad minrad))
    $ i: W3 f% k) m6 @7 w: U
  7003.              (setq units (getvar "LUNITS"))* y: S$ a/ W( e3 [$ f
  7004.              (if (or (= units 3) (= units 4))4 j1 ^' ~# L  y, a0 I# J
  7005.                  (progn# h5 s, k* T; P9 O/ x- J
  7006.                      (setq area (/ area 144.0))
    2 U. l# `: p. O1 S' i$ U
  7007.                      (set_tile "Area" (strcat (rtos area 2)" square ft"))/ G# c; W6 A0 O9 w* L& o
  7008.                  )- A3 |: ~8 i/ V) F
  7009.                  (set_tile "Area" (rtos area))
    * X8 k! K6 j/ Z) }! Q
  7010.              )# L/ O; A  r+ j0 u% B- Z" F
  7011.          )0 w8 w9 l8 }  E
  7012.         (mode_tile "Area_text" 1)
    & m5 }% r# _! k) T  y3 B5 {+ u
  7013.      )2 |, K& R  u* b0 X5 |5 j; F( H
  7014.   )
    , a  B5 U% F' v% g) E3 t$ B
  7015.   ;;
      Q& l) r! F& C1 w4 l# i3 J$ b
  7016.   ;; Calculate new values for ELLIPSE/ G. z: t7 n# y
  7017.   ;; Minor Radius, Area
    6 r% j$ x* `5 z  _5 M! P+ ?8 B2 X
  7018.   ;;
    9 [  g4 t# l2 C) A5 @3 M/ {
  7019.   (defun ell_calc_newval (ell_tile)3 y4 w! T; J# s+ `' Z
  7020.     (if (= ell_tile "majrad")$ ^. ]7 j5 q* T, Q. F0 R
  7021.       (progn# g' m3 }8 v$ E" `# ]0 a+ C
  7022.          (setq rrat (/ minrad majrad))( L( E; m+ ~0 a" B( P% K( x
  7023.          (set_tile "rratio" (rtos rrat))
    - b6 [6 y4 L* r
  7024.          (ell_calc_area)
    . J2 W5 ]5 s% [3 U, r  c
  7025.       )4 G% S( N: ?! Q
  7026.     )
    + C( ]; ?. L! a1 ~4 A
  7027.     (if (= ell_tile "minrad")8 u' H  R( {, }0 H( a
  7028.       (progn8 J& N4 ?9 z3 o, V; g9 L
  7029.          (setq rrat (/ minrad majrad))
    7 ?, Q3 \( }1 w
  7030.          (set_tile "rratio" (rtos rrat))
    * E1 q- X. T9 D3 v0 `
  7031.          (ell_calc_area)
    & D' v7 \# Q3 m) Z3 Z' h: K
  7032.       )$ i1 T4 F$ ]9 \5 s& }9 D
  7033.     )7 h' u! R- T8 r" _) x5 e% C+ @  V
  7034.   )
      V9 N; ], g. Y# O! V9 O' h

  7035. 2 F' I$ w+ f9 }; k1 Q  n1 p+ Q* C
  7036.   (defun set_dimen_props (/ loop a stl txstyname)
    : }! X+ s3 K5 X+ k0 Q9 v! q9 x

  7037. & A4 w0 t5 y" z
  7038.     (setq stname (cdr (assoc 3 elist)) ; get style name
    ( H$ Z2 p4 |6 W* B. d/ i6 A
  7039.           stl (tblnext "DIMSTYLE" T)6 H7 Z3 _8 h' r
  7040.           stlist nil)
    8 F" c9 r# o' Q4 r$ E) g* y
  7041.     ;; Get all style names and list them in alphabetical order
    & S6 P) U' {+ H6 M9 B8 F' O
  7042.     (while stl& O9 k( L# ]8 a+ j" G1 w
  7043.       (setq sname (cdr (assoc 2 stl)))6 J$ d" ?0 [3 [$ e
  7044.       (if (/= (logand 16 (cdr (assoc 70 stl))) 16)# J7 F& {+ g' f; R3 |
  7045.            (setq stlist (cons sname stlist)))+ P7 M4 ?% {5 h% J1 e
  7046.       (setq stl (tblnext "DIMSTYLE")))
    , f! ?* P5 t7 I( G7 P/ O
  7047. # @! w* s! P7 C
  7048.     (setq len    (length stlist)
    6 L/ m! v! X% O
  7049.           loop   0, `4 h& ^- w0 B0 a' t
  7050.           dimsty stname
    7 w' S" f7 z. s6 a
  7051.     )
    ( \6 K: D! k4 `3 l4 Z
  7052. . U& H7 a, d# E) z( k
  7053.     ;; alphabetize style list, depending on maxsort6 P. S) l* o, J3 O
  7054.     (if (>= (getvar "maxsort") len)
    4 f8 J; W3 m  A' P5 u: V. Z. p
  7055.         (setq stlist (acad_strlsort stlist))4 m4 u; |2 n- `2 V& ^& c
  7056.       (setq stlist (reverse stlist)))
    5 D" i% w7 S! k0 k1 l3 p. I
  7057. ' }5 L; t: k# ^4 [
  7058.     ; *UNNAMED style (dimsty = nil at this point) is replaced with5 }. s0 N- y. l6 ]+ V8 a9 A1 l% @: o
  7059.     ; the current style.  After R13, we require dimensiosn to have a
    : F$ b3 U( w9 N! X
  7060.     ; dimstyle, so we plug any holes where we find them.1 f+ ]5 m% W2 W8 `* h- x( L
  7061.     (if (null dimsty)
    5 a1 G7 l5 D/ v% o9 V: O
  7062.       (setq dimsty (getvar "dimstyle"))
      u+ Z. }2 g1 e" c) w: p
  7063.     )0 \* p! `8 e* n
  7064.     ; Show the styles in combo box- O  ]$ A* v8 @9 [& x3 W5 s
  7065.     (start_list "mod_style" 2). W! k0 m! b% q& K  m9 T1 l+ f
  7066.     (while (< loop len)2 Y$ U8 ^  J8 _7 z6 S0 F% f  y
  7067.       (add_list (nth loop stlist))2 ~+ l5 ]( k9 K5 L# y
  7068.       (setq loop (1+ loop))- M$ T9 q$ y5 o
  7069.     )
    3 A0 ^, N1 R8 l. \0 {

  7070. 4 v  l" d. I# E2 S2 O1 `9 p/ T
  7071.     (end_list)
    4 o% S. T7 [, I2 t

  7072. & g, l7 g- a9 A/ y' q  L: \
  7073.     ; Hilight the style name of the selected entity! g, O7 z) g7 @; l
  7074.     (while (and (< 0 loop) (/= dimsty (nth loop stlist)))8 t: T) x6 S1 N4 n+ f
  7075.       (setq loop (1- loop))
    % H" m. S+ |- Y6 f. _! }- x
  7076.     )5 P+ ]0 N" K3 ~$ C/ Y) v
  7077.     (set_tile "mod_style" (itoa loop))
    2 C& D2 \$ ?# ?, L8 \+ @6 i  |+ {- R
  7078. 4 K0 u% c2 E0 o3 p$ X
  7079.     ; The following is the list dimvars. It must be sorted in the same
    5 V, Q& R  T7 n  j: n
  7080.     ; order as the resfub returned from DDIM (ADS module).7 U3 v1 M* r% |, q. z. @7 G
  7081. 9 }# @+ I2 O0 E  J. q7 Z
  7082.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"6 W5 j4 }( {0 M' i/ V9 d% D& ?
  7083.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"
    , v5 {2 w1 C) A8 x
  7084.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
      b- t9 |6 l, ^+ \, d1 ^
  7085.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"
    5 D6 W9 g+ h+ P6 J& O
  7086.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    $ Q1 o7 `  r" l# R
  7087.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"
    * ^, r9 \. g. ~; i
  7088.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"% {! d9 k7 y+ V- w1 C; a
  7089.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"
    & Q4 W* Q' C. s( u2 {: o6 \2 l
  7090.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"
    . d/ w1 @9 ?# ~/ e5 g; \% }
  7091.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"5 r) i5 h1 o6 h
  7092.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"3 ^' O! y* d7 C
  7093.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"; r  Z4 X9 b/ M  H* l
  7094.         "dimtxsty"# a% H9 p  C' x
  7095.     ))
    ( _/ v9 z1 e( e5 ^  G5 t1 c; q
  7096.     (progn
    / |$ L1 p& l5 Z
  7097.         (setq sv_dvlist (ddimen_getostate dimsty)
    4 o' Y5 j, K, U0 g, T0 t
  7098.               txstyname (assoc 340 sv_dvlist)' Z& u- s6 [8 g6 p6 X
  7099.               sv_dvlist (subst (cons 340 (tblobjname "STYLE" (cdr txstyname)))
    9 O5 y0 R2 h1 w$ A6 u
  7100.                                 txstyname sv_dvlist)
    ! F, ~) H, y8 x" _  l! C& U
  7101.               dimlist sv_dvlist
    3 q8 ~# D: K: ?+ K8 T
  7102.         )
    7 _& k* [; t8 \" R$ O
  7103.     )
    3 j* A% ^1 A; c9 \% M, t
  7104.     (if (= dimtype "DDLEADER")
    # l. N( D1 }1 d8 E' \) g+ J
  7105.       (mode_tile "mod_format" 1)0 @! U. g* ^! t- j# a5 ]  k9 l
  7106.     )- H/ q2 E0 A  [8 f- ?3 ?* E
  7107.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")
    . w5 ]& Z5 R; R3 ^
  7108.     (action_tile "mod_text"  "(done_dialog 4)")* ^4 \' E/ q# V- s, ^+ e0 v" n
  7109.     (action_tile "mod_geom" "(setq dimlist (ddimen_dlg dimtype 11 dimsty dimlist))")
    3 m" i6 S. O+ M- M+ j+ ], _
  7110.     (action_tile "mod_format" "(setq dimlist (ddimen_dlg dimtype 12 dimsty dimlist))")
    # n* v9 W/ K2 Y  s0 t$ D8 s  S$ q
  7111.     (action_tile "mod_annot" "(setq dimlist (ddimen_dlg dimtype 13 dimsty dimlist))")' [& z+ z6 O$ K2 \2 d7 c% E
  7112.     (action_tile "accept" "(done_dialog 1)")
    ' O7 j. c" R1 W2 I
  7113.   )3 f# L: N' A& R1 m  C; }
  7114.   ;;
    : }; [2 d0 }" h. S; }0 A. {* |0 j
  7115.   ;; Get dimvars that have been restored.
    , d, n3 C4 N0 D# H7 k6 x
  7116.   ;;
    + \( L# t" M/ q) s
  7117.   (defun ddimen_getvars (/ elm dvlist dv i)' w3 ?0 g% v- T' T# L- y8 v
  7118.     (setq i 3, b( Q' x0 N9 W
  7119.           dvlist (list (cons 0 "DIMSTYLE"), Q% \' P8 k0 D" x* }2 v
  7120.                   (cons 2 (getvar "dimstyle")) (cons 70 0))8 q+ `, k* N) z  z. s1 a
  7121.     ): \9 ?0 C4 t$ U3 L, [* R4 ?  a/ {# `# _
  7122.     (while (setq dv (nth i dimtbl))
    ( [* q4 h" u, c# p# @( t" _
  7123.       (setq elm (getvar dv)
    . ]8 v# O  i8 @6 |5 f& P8 J/ F3 ^+ M
  7124.             dvlist (append dvlist (list (cons dv elm)))* X8 m* R' E- M- U: t
  7125.             i (1+ i)* `9 q8 o4 q- _6 b" f
  7126.       ); A# ^. o0 x2 m
  7127.     )* P, R- E/ e+ X9 {3 x1 T
  7128.     dvlist
    / P4 m+ C+ L$ x0 E6 {8 O5 d
  7129.   )9 R7 {9 I( C- J; [# a# }
  7130. 0 T. D) S5 ~$ O, Y0 C
  7131.   ;;0 _$ h* l6 b( U) C6 y8 }# |* v
  7132.   ;; Get the original states of dimvars. This is for DIMENSION entities.
    $ q5 u9 n/ @: N  U
  7133.   ;;
    . s; V' B* \9 x9 h* {1 ^
  7134.   (defun ddimen_getostate (dimsty / dvlist elm i dvvars)% \! F5 e. [$ f9 {6 o2 Q) S! J
  7135.     (setq dvlist (tblnext "dimstyle" T) ; Get a skelton list
    % k% G/ m8 G3 B: b7 z9 U% p, A
  7136.           dvvars (ddimen_getvars)       ; Get dimvars for that entity
    ! i( I, ~) u8 P) T1 B
  7137.           i 12 y+ F/ _4 |; ?0 r
  7138.     )* U) n* H3 O5 ~( y% K2 K
  7139. 5 e# D0 W0 m! u
  7140.     ; Create a list that contains values of the selected entity.8 M  s* C8 S" ]" r

  7141. 5 o' U) D8 Z7 n  m
  7142.     (while (setq elm (nth i dvlist))& [0 ~& O& _- I/ E+ W% o- F
  7143.       (setq dvlist (subst (cons (car elm) (cdr (nth i dvvars))) elm dvlist)
    5 e1 A6 p+ }0 B$ ?
  7144.             i (1+ i)
    , R1 }7 z! E; f: _, x4 g
  7145.       )
    ( P6 c; |  ]5 t! L  o3 O8 \" `9 F
  7146.     ). a) j; ^$ x5 U6 u' d( C
  7147.     dvlist
    4 h& V( \7 E/ Y1 k; X0 Y
  7148.   )
    0 Y1 W2 s8 A/ h' y  U
  7149. 3 W* H# a1 m% w) z) ]
  7150.   ;;
    ; n! ^/ L1 B& y9 ]- k9 t& V
  7151.   ;; Restores dimvars of the selected enity.. C0 Q8 S/ U4 H9 ^/ z
  7152.   ;;
    8 k. M& C* B1 K  q1 u4 g
  7153.   (defun ddimen_dimsty_restore(/ dimtbl dimsvcurset en)
    / V/ Q1 ^3 s  T. e
  7154.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"
    ( M. I- Y+ Y3 w2 s+ c2 m
  7155.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"3 s) ?# v! T/ v
  7156.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    0 {: |2 `% w" S
  7157.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"
    4 D! w0 _2 T0 p9 Q
  7158.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp") t8 a' E5 |* P4 b+ s
  7159.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih") z$ q4 T4 p% v2 a
  7160.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"
    1 F( @% X" X* ^# L
  7161.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"4 m1 z! t; ]) P! o$ D: V7 S
  7162.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"
    ! I  k2 g9 \' ~$ U& [
  7163.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"* q) ~8 n0 O$ }0 J0 h% V
  7164.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"( J; z& m' |! i% p) }& I4 o$ p0 E
  7165.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"% g# ?7 f) H5 H# r# _, y2 q" T9 w
  7166.         "dimtxsty"
    ' `# b% K0 a$ }8 y7 p) e
  7167.     ))( n( K+ L' X1 X% l, H: W
  7168.     (setq dimsvcurset (ddimen_getvars))  ; Save current variable settings  F. G% _0 D6 x8 A* u3 w
  7169.     (progn: r5 K: @6 V3 Y5 ?
  7170.         (setq en (cdr (assoc -1 elist)))6 ?& K; E6 g- t$ ~' ~1 n& F; N5 K
  7171.         (command "_.dimstyle" "" "" en)
    + T. h8 p% P) r/ u+ q
  7172.     )$ f5 o& a- ~7 ~6 n
  7173.     dimsvcurset1 B- m4 m1 k0 z6 }2 f' J' y
  7174.   ): u4 W, A- ~) O2 ~' u" F
  7175.   ;;1 K0 h* x9 J6 S. ~
  7176.   ;; Modify Leader1 f. {& Z6 p8 [' g' A& u
  7177.   ;;  Q3 y# s3 A, k0 V
  7178.   (defun ddleader (/ dtypebit blkname bename sublist a  stname n dimtbl4 z: U+ V0 a' Q
  7179.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist( E3 P& I/ d% B* }1 b4 o
  7180.                    dimtype dimsvcurset)
    . G. g* v/ \. W1 B5 S
  7181.     (setq dimtype "DDLEADER"+ M5 \+ n; T$ S
  7182.           dimsvcurset (ddimen_dimsty_restore)
    " O' N! @1 A$ [% U
  7183.     )
    ! k  I1 v+ l: U! `
  7184.     (if (not (new_dialog "ddleader" dcl_id)) (exit))
    0 `, O3 g. R* ?1 P; t4 c8 O
  7185.     ;; Set initial tile values
    , _9 j* A7 S) W, I
  7186.     (set_tile_props)
    5 x4 H; f/ {- j. S' b
  7187.     (set_dimen_props)
    + S4 f9 N4 D1 `+ X
  7188.     (set_tile_handle)% O4 |1 K+ K& T7 l
  7189.     ;; Define action for tiles' P& }2 u, D" s& f5 N  r4 D
  7190.     (set_action_tiles)! S* p% b/ l/ z# A7 ~
  7191.     (mode_tile "mod_text" 1)) m2 x0 V$ O/ k$ P
  7192. 6 D. }$ \! z# Y. s! C! a) F- U
  7193.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")
    4 t% d! n( @& x1 s8 B
  7194.     (action_tile "accept" "(setq leadtype (get_tile \"s-s\"))(setq arrow (get_tile \"arrow\"))(done_dialog 1)")
    ( J; a% M: g. {0 b% R
  7195.     ;; Get ARROW and TYPE.
    5 b9 q  [1 y! w) J
  7196.     (if (= 1 (logand (cdr (assoc '71 elist)))) (set_tile "arrow" "1"))
    $ J( \6 P+ v5 U8 S
  7197.     (if (= 1 (logand (cdr (assoc '72 elist))))
    2 k2 A8 ~  y% h5 k
  7198.       (set_tile "s-s" "spline")
    : w5 R7 F; H' a
  7199.       (set_tile "s-s" "straight"); M0 i0 ]! k8 i$ Q
  7200.     )% U  w* f2 r3 j+ J& i* V" e
  7201.     ;; Start the dialogue.  m: [. b5 q+ z0 e  b  ^! {
  7202.     (setq dialog-state (start_dialog))1 Q9 M: X% j" a& y
  7203.     (if (= dialog-state 1)& S0 M5 W. \) p& h
  7204.       (progn$ O" ^8 [5 _' b& L
  7205.         ;; update the style
    ; c' t9 p# X& Y; L
  7206.         (if (/= dimsty stname)
    " f: k+ t* ~4 q9 f/ A9 o, c3 i2 ]/ F
  7207.           (progn
    3 |# O: V2 ?0 |# W8 ~. y8 a! G* K
  7208.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    ; T& g9 D% l$ m1 H% x
  7209.             ; doesn't have it.
    4 P3 U8 [* y) l5 K2 M7 m
  7210.             (if (null (assoc 3 elist))7 W6 o/ I; K; y& P7 @( y: \3 C
  7211.               (setq elist (append elist (list (cons 3 dimsty))))
    ! @/ ^* X. M& k
  7212.               ; else just replace it.7 ?' E% D  S0 M( j7 s& M  }- h
  7213.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    - [" a- ?6 m# H: q# e
  7214.             )
    : w; s+ Y( v7 Z  f9 o
  7215.             ; refresh sv_dvlist with new dimstyle.
    9 `: c, Q& o5 M9 h9 a
  7216.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))8 M9 }% D1 w! \. [7 b7 p' _
  7217.           )
    : o6 F3 s0 h* l! p  ~
  7218.         )
    : J. Q1 S( M5 v' m  a
  7219.         (if (not (null dimlist))   ; attempted to change dimvars
    ' M% _3 V$ D) d# T* R8 {, N. k' Q0 v
  7220.           (ddimen_complist sv_dvlist dimlist dimtbl)9 B& j5 p- k; {8 E$ s, i+ N4 q
  7221.         )5 Z" Q3 }4 P& a: o
  7222.         ;; update for ARROW.
    2 v" F& b# N8 q" ?2 O9 d: n4 I
  7223.         (if (= "1" arrow)4 x  f2 w' t+ F* r6 F/ Y4 b% p: s
  7224.           (setq elist (subst (cons 71 (logior 1 (cdr (assoc 71 elist)))) (assoc 71 elist) elist))
    ) ]1 y" f: M. S
  7225.           (setq elist (subst (cons 71 (logand (~ 1) (cdr (assoc 71 elist)))) (assoc 71 elist) elist)): ?/ l3 g  H1 z" |
  7226.         )
    5 O7 F6 v% g) Y
  7227.         ;; update the TYPE.
    " H$ j; E# w5 x+ {
  7228.         (if (= "spline" leadtype)
    5 e) E" A0 \" Y8 k8 y
  7229.           (setq elist (subst (cons 72 (logior 1 (cdr (assoc 72 elist)))) (assoc 72 elist) elist))
    # @- u# _  v0 g; K( n  b6 j3 F1 M
  7230.           (setq elist (subst (cons 72 (logand (~ 1) (cdr (assoc 72 elist)))) (assoc 72 elist) elist))
    0 p+ O- K$ J; I( k
  7231.         )
    % v! k' }% o1 l
  7232.         (modify_prop_geom)
    $ H9 p6 e5 l" H
  7233.         ;; update the Color, ^% A( g) W3 A  }4 s) D! P' m* ~4 Z( N
  7234.         (setq elist (subst (cons 77 ecolor) (assoc 77 elist) elist))9 y$ D& B: ?. v4 a5 X1 U) j' B
  7235.         (entmod elist)
    ! `7 E' l8 I& V  u7 y+ E
  7236.       )9 M, A1 n+ j+ p4 t
  7237.     )4 M( h/ v6 P) {* T4 Y' |
  7238.     (ddimen_setvars dimsvcurset)      ; Prepare to exit! u- ?+ t" ?5 i9 s' X1 M  j
  7239.   )
    % F  g& _: |: X5 R8 R9 ?

  7240. 5 r! |) A( B$ f" i# D) g# E4 t3 E
  7241.   ;;3 W; D4 _) M  W9 F  \  Z/ {
  7242.   ;; Get dimvars of a dimstyle with overrides.# W" E# Y3 }! B+ s* r- ?2 H' h2 U
  7243.   ;;9 K) Z- w3 c1 P5 r3 V/ Y
  7244. 0 K+ c* ^; F' p
  7245.   (defun ddimen_getdimvars (dimsty / dimovr dvlist elm i)
    $ J1 u" H! s( H- o. e# h
  7246. ( _  ]+ ?! m, K8 ^# C! C2 p
  7247.     ;; Get override information for the specified entity.
    2 ], @$ j; g" \4 X
  7248.     ;; Leader/Tolerance cannot be restored by DIMSTYLE command, so we' @. y8 H( n& w, A0 m
  7249.     ;; must obtain override information through this tedious operation.$ W8 f+ {" c3 x5 t' h0 R
  7250.     (setq dimovr (car (cdr (assoc -3 (entget (cdr (assoc -1 elist)) (list "*")))))
    $ c; b3 T- A# _, D- y
  7251.           dvlist (tblsearch "dimstyle" dimsty)  O' B+ V3 w- p5 [4 C+ e% a8 t
  7252.           i 2
    ! Q5 e2 i" b9 n
  7253.     )
    & b4 J; J  k. s9 J+ Q) \9 b9 K
  7254. , d. B& J% I  n' Y* ?+ Y
  7255.     ; Update the list with overrides if overrides exist.
    0 t! H3 l* |, \9 |; I

  7256. : P& M8 u" t/ d/ u* [
  7257.     (if (and dimovr (= "DSTYLE" (cdr (nth 1 dimovr))))
      u- H+ m0 p: Y! [  ~
  7258.       (progn7 \! v5 ^: M& Z
  7259.         (while (setq elm (cdr (nth i dimovr)))( H: u% n" {5 y8 I9 O( R3 i0 C' X
  7260.           (progn( E: t1 u: a, b5 P
  7261.             (if (or (= elm "{") (= elm "}"))
    3 o2 s% b8 M0 B
  7262.               (setq i (1+ i))
    , @7 B6 q. E, f# ~
  7263.               (progn( h+ s$ n( j( F& L, S9 k
  7264.                 (if (or (and (< 180 elm)
    : Y) S) X# H& t6 Z+ {6 m0 t
  7265.                              (< elm 190)& k: n& z# t) l) v. T
  7266.                         )0 Q6 W  ]7 o. w3 v; h) y
  7267.                         (and (< 80 elm)
    . |4 X" b2 G. L! C. o
  7268.                              (< elm 90)4 P3 c4 W$ k0 k4 P+ A! ]6 ?, A8 P
  7269.                         )
    0 a% Y/ i9 [) k! X
  7270.                     )6 `% A1 Y1 ], R$ m
  7271.                   (setq elm (- elm 10))
    % x/ c" n9 J% g3 H- o3 M
  7272.                 )" c1 M" {0 h# C
  7273.                 (setq i (1+ i)3 U( _" v# M. l* ?9 ^' Y7 w
  7274.                       elm (cons elm (cdr (nth i dimovr)))
    " O! J  H& ^5 ^0 }% \1 M* N
  7275.                       dvlist (subst elm (assoc (car elm) dvlist) dvlist)" M# z( C5 G! v
  7276.                       i (1+ i)7 H4 F5 w- O) x6 V
  7277.                 )  E! P- I. ^8 f$ L) A
  7278.               )0 h4 K: F/ F2 a# l8 u  M& m0 j
  7279.             )
    0 k# q6 A% z% G6 g
  7280.           )
    ; Z/ K9 c  f$ L
  7281.         )( s8 @1 b; X* D- f" z. M
  7282.       )
    2 y3 T8 b+ u; _. E8 @2 t
  7283.     )4 `) I. r2 w+ I( M" v* D+ p
  7284.     dvlist% _. Q2 e% I; f. M; }& ~$ l
  7285.   )! r- ~7 l& o& n

  7286. 5 [/ c* t" G% K; e
  7287.   ;;
    % y( f4 |7 b: w8 ~+ `& h
  7288.   ;; Modify POINT  t" |) x8 O4 H9 V, O- w
  7289.   ;;$ P6 B, R9 d& m7 @
  7290.   (defun modify_point ()
    + |5 U4 w' P9 E( W6 _
  7291.     (modify_properties)
    " `0 T7 u1 X5 m9 ?
  7292.     (setq pt1 (list x1 y1 z1))8 O8 y8 [# U3 w4 @. }* F1 I( {; B
  7293.     (tempmod pt1 10 0)
    ) N0 Q! f6 Y( F1 P" G* ^3 e
  7294.     (entmod elist)+ _( Y5 x- a; _* R3 t/ ^: g& Z1 o
  7295.   )0 e+ K" ]5 @* ^. E& B( I

  7296. ) w& L" Y! J7 x" M) E( V3 }: M
  7297.   (defun ddpoint ()
    9 k& c8 l: b. A
  7298.     (if (not (new_dialog "ddpoint" dcl_id)) (exit)): n' v. H; n: Y8 Y+ }
  7299.     ;; Set initial tile values/ U( |  ^% l6 D1 s
  7300.     (set_tile_props)
      w- h; e5 m% L0 w0 `# ~- E
  7301.     (set_tile_handle)4 u1 x; Y5 C6 t% ]
  7302.     (set_tile_pt1 0)
      d' R. c( H1 O" T
  7303.     ;; Define action for tiles4 E; x- Z6 M+ Q: r
  7304.     (set_action_tiles)3 W9 G# g* _# ^7 [  e9 J4 j
  7305.     (setq dialog-state (start_dialog))
    ! f# B+ ^/ T" `1 r+ v
  7306.     (if (= dialog-state 0)
    7 ^# x  u, d/ k: V' u# u0 I
  7307.       (reset)( ~' P5 O; D+ E5 @. x! k
  7308.     )
    ; f$ r8 r* y; E+ M7 {  X3 H
  7309.     (if (= dialog-state 3). w% k5 Z0 n1 L( L7 H/ q5 L
  7310.       (progn& ?  J, K' ]) C9 }& H
  7311.         (modify_point)) ]. U2 U0 G  X* R) h9 Z
  7312.         (setq pt1 (getpoint (list x1 y1 z1)  "\nPoint: "))( W) }& j- |( I
  7313.         (ver_pt1 0)
    # ?4 {5 y6 W8 T; n
  7314.         (ddpoint)1 X" V. O4 k2 X( _+ w9 i
  7315.       )
    6 a9 `6 G+ s& H  ~" A9 P2 k
  7316.     ); A) \, h3 ?5 H5 N7 p# ~. q3 o7 I
  7317.     (if (= dialog-state 1)
    1 k7 M# Q8 J( P* I
  7318.       (modify_point)& {* E6 v1 E2 V6 [+ J7 P# l3 P' \
  7319.     )) e# f$ F7 T7 }% ^) z7 k: e* Y
  7320.   )9 b. K( [8 a, k. ^% ^
  7321.   ;;0 Q4 \6 d; r" @$ a4 v
  7322.   ;; Modify LINE7 Y8 l% i! B# g
  7323.   ;;3 X2 f- y  h4 r4 G! {5 c+ B1 o
  7324.   (defun modify_line ()
    : |* }5 a0 i4 q+ u( ]: {2 ]: i* m
  7325.     (modify_properties)8 J  ^- [1 n! n+ G- g  T
  7326.     (setq pt1 (list x1 y1 z1)); d4 p7 X- s. ?% z0 j. h
  7327.     (setq pt2 (list x2 y2 z2))
    ' [) F$ I  q# ]5 U
  7328.     (tempmod pt1 10 0)
    ( }0 I# B3 o, v/ a3 ?
  7329.     (tempmod pt2 11 0)
    1 A, @+ {) d9 J1 k7 y
  7330.     (entmod elist)+ G) r5 }  ]0 B( J* T: y9 g# B7 \' K
  7331.   )
    - _3 v& B' J% ?" p2 Y/ a$ A
  7332.   (defun ddline ()
    3 [( R; ~  T7 l9 Y; e: t  m+ ]- `
  7333.     (if (not (new_dialog "ddline" dcl_id)) (exit))
    * i. ~1 ~' L9 e  k- ~
  7334.     ;; Set initial tile values. L0 G, `6 v( A3 {
  7335.     (set_tile_props)' m6 G- ]1 u5 E: t7 N) O. M
  7336.     (set_tile_handle)3 c# r3 B. y. |6 S
  7337.     (set_tile_pt1 0)
    8 C9 b" t' Q, Y0 M
  7338.     (set_tile_pt2 0)
    ) z4 S) \4 I; X6 v3 N
  7339.     (line_calc)
    8 I, P4 U% ^* X4 l' ?
  7340.     ;; Define action for tiles0 g( h1 D' q' _3 |( V0 q. {
  7341.     (set_action_tiles)* p" T# U! G6 ~9 Z
  7342.     (setq dialog-state (start_dialog))
    7 M4 k: ~, U8 q# k3 G+ q
  7343.     (if (= dialog-state 0)
    ! ]9 ~/ D0 c* N9 b9 K, c
  7344.       (reset)
    & ]9 q9 g" c( u5 f4 T- w
  7345.     )' q, d* y$ `  T' `: M; B
  7346.     (if (= dialog-state 3)& @& d2 G: Y, J" N& @
  7347.       (progn% Y' t, x5 N* N; S$ Z8 g3 W" a1 l
  7348.         (modify_line). Z' c! I  m7 y0 c+ _
  7349.         (setq pt1 (getpoint (list x2 y2 z2)  "\nFrom point: "))- u  b8 A$ I: x8 W+ ^# P
  7350.         (ver_pt1 0)4 u9 D. D3 F+ L
  7351.         (ddline)
    9 k6 K3 R' F1 l! \; `
  7352.       ). k8 a/ u$ q- w9 ^
  7353.     )( Z0 n9 _) \0 ~& i7 W
  7354.     (if (= dialog-state 4)
    5 R% U5 y% Y6 O3 w0 J
  7355.       (progn
    5 r# v6 q( u+ b2 N$ v) i
  7356.         (modify_line): A* D. K$ z% T; m
  7357.         (setq pt2 (getpoint (list x1 y1 z1) "\nTo point: "))7 }( n. p- j4 h% \' ]
  7358.         (ver_pt2 0)4 K% ~% t% H, {4 E2 {4 S
  7359.         (ddline)0 e3 A' S3 v9 ~: z; J
  7360.       )
    * j0 v3 O9 n2 A5 b! ~
  7361.     ); w, _4 ^& O. v0 f% f
  7362.     (if (= dialog-state 1)
    & z1 g. U# h/ x8 V6 [( ~4 [
  7363.       (modify_line)
    / g& m' b4 q& U/ J# ^! [- i+ C3 ~- a
  7364.     )5 R, Z/ e+ ]6 L+ q2 @4 d; g
  7365.   )4 w! ], X# V* u9 \' N* C& x/ }
  7366.   ;;( ?4 c, p/ y5 F% `9 B# S
  7367.   ;; Modify MLine
    ; f, d0 U2 h4 ]( B8 \( Z5 z
  7368.   ;;
    : |% F2 A8 x2 \
  7369.   (defun modify_mline ()( r- J% m& Z, |$ W( c
  7370.     (modify_properties)
    1 X" T5 j/ O- [! e7 {( ^
  7371.     (entmod elist)
    1 N) I, w: H: H$ O0 `) F
  7372.   )3 D7 S9 U. C7 Z0 ~
  7373.   (defun ddmline ()
      N  y/ a6 k, y6 e7 u
  7374.     (if (not (new_dialog "ddmline" dcl_id)) (exit))
    ) m5 K6 O. ~+ q
  7375.     ;; Set initial tile values
    ! @; x; ]0 i! p4 k
  7376.     (set_tile_props)
    * Z- a/ f/ l# A( U: a
  7377.     (set_tile_handle)
    ' E( H1 v  J2 u5 `
  7378.     ;; Set mline style text field.
    8 I& b$ R5 y7 u2 D+ v
  7379.     (set_tile "ml_style" (cdr (assoc '2 elist)))% i1 n. n" C) T- _7 }+ X5 @- Q7 m

  7380. 7 o% e* S! R5 ^; ^- a
  7381.     ;; Define action for tiles- ~) I( c4 T6 W1 V& c$ C
  7382.     (set_action_tiles): M1 t" Q5 K" u( M, m7 h) \
  7383.     (action_tile "ml_edit" "(done_dialog 3)")# y) e  c, z( I- O# _, Z! Y5 _
  7384.     (setq dialog-state (start_dialog))
    % H" q" _3 @3 w
  7385.     ;; Dialog cancelled, reset to original values.. k5 i  O0 X. o5 E* `% l% |
  7386.     (if (= dialog-state 0)
    7 z- ~+ J0 z# W. X" j$ b1 M
  7387.       (reset)
    , c! \) {- Z+ B- n; Q
  7388.     )( a8 c6 K$ i" K# [  o
  7389.     ;; Dialog OKed, update the mline.4 D$ Q1 d# H+ U- ]! {
  7390.     (if (= dialog-state 1)3 K! B2 Z9 |7 @" D' ]7 ~% ~
  7391.       (modify_mline)4 ^  Q4 ]* o; B4 w( M
  7392.     )& c. [+ W. v% `5 w8 J& Y& }. R) R
  7393.     ;; Edit Mline, call MLEDIT.
    ( E9 ?+ B; t: e
  7394.     (if (= dialog-state 3)$ b* G( [- ~: i
  7395.       (progn( S5 |0 V( M) ^! \# M  O6 z! `
  7396.         (modify_mline)
    ; E  z5 O; L8 Y
  7397.         (command "_mledit")! Z7 ~1 m" K8 o6 E4 W
  7398.         (ddmline)
    ' `7 i. ?2 Y: `. ~: Q/ n
  7399.       )
    7 Q& d) V) R4 @& e
  7400.     )/ A- ^  T4 o8 H! o
  7401.   )
    6 t, _! F( v0 s) c$ e  a
  7402.   ;;' {: {% V( D1 h9 i* l: C  F6 R8 b
  7403.   ;; Modify Xline- m, z' l# y3 Z" i* {5 G; _. X$ z& v3 _" }
  7404.   ;;# F( ^# U: Z/ x' B' U3 d1 ^
  7405.   (defun modify_xline (flag)
    6 h& {9 i1 b% E' G- z
  7406.     (modify_prop_geom)
    & R2 y* P4 e8 \2 p5 v
  7407.     (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))
    1 {4 Q& F6 X" p4 T3 Q% _
  7408.     (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))
    " G4 M: y/ F$ W$ l. U- X, Y+ w
  7409.     ;; Update the Root point.0 N4 n& U% [* u* {
  7410.     (setq elist (subst (cons 10 (trans xline_pt1 1 0))
    1 l* V, M! y& v" {# S! [1 _
  7411.                        (assoc 10 elist)
    # L% k* m3 L7 M# V5 I( u) l
  7412.                        elist3 c5 K7 Z  M. {* Q# M# `+ D
  7413.                 )
    * M  Z2 R, g8 C& ~" u  k9 m
  7414.     )
    2 V: ]/ X8 p+ d
  7415.     ;;* Q6 Y6 l7 Z! u4 P- q
  7416.     ;; Calculate new Direction Vector WCS" r. v. S% ~2 `+ Z1 g' u& D/ }
  7417.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))& ?1 W& `7 r3 X& t

  7418. ) P% R$ M/ [' E$ S( N; R7 N4 F+ X
  7419.     (setq temp_dir (trans xline_pt2 1 0))9 A, s6 i+ V- O9 x9 U8 D. `
  7420.     (setq temp_dir_x (car temp_dir))
    # X" M! o, ~6 Z
  7421.     (setq temp_dir_y (cadr temp_dir))
    % I' N+ I+ ~+ U0 b. k
  7422.     (setq temp_dir_z (caddr temp_dir))
      b, B+ N( X8 ]7 `
  7423. 3 {  d# n$ d) e5 E
  7424.     (setq temp_xline_pt1 (trans xline_pt1 1 0))
    $ {+ l" A9 i* U' x4 Q3 ]" |
  7425.     (setq temp_xline_x1 (car temp_xline_pt1))
    " C0 q! k) {/ L7 s  T5 [! J' U% |
  7426.     (setq temp_xline_y1 (cadr temp_xline_pt1))
    ) ]" x& L4 [6 u6 U  }$ g- r2 E5 B
  7427.     (setq temp_xline_z1 (caddr temp_xline_pt1))$ w7 t  Z1 T" P* r# [" K

  7428. % Z/ d, S, [5 z& ]: t' h: d8 M" \3 ^1 u
  7429.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    7 E) @7 C/ t* F: E; W6 h6 S
  7430.                          (expt (- temp_dir_y temp_xline_y1) 2)7 S" f/ Y6 t4 D' J# r
  7431.                          (expt (- temp_dir_z temp_xline_z1) 2)1 p& ?0 S: ?3 g  W
  7432.     )))
    6 d8 H0 L4 o" W% V
  7433.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))
    ; J/ x* J# ^9 y* J7 B3 }
  7434.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))
    ( l. X! ?) F/ O* |
  7435.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))
    ' A) K% j/ E; e# X
  7436.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))1 h4 N. l& Q$ N
  7437.                        (assoc 11 elist)
    2 ]! Z: p$ g8 |2 N; D& @5 s
  7438.                        elist3 F7 g; F: I4 r  X5 n" W
  7439.                 ); r) N- D- Q1 E/ Z. c/ K$ n
  7440.     )# @, t% C$ j3 Z+ G( j
  7441.     (if (= 1 flag)9 G3 o& g6 [# R0 k4 t3 i% ?& K$ H
  7442.       (entmod elist)
    5 T0 F3 r: b8 W0 U* n* X; k) v7 o: Y
  7443.     ), i& }" t& x0 I9 l; i
  7444.   )3 s5 m7 g6 _- {8 k4 x. b4 P

  7445. 8 z) R" I$ i" l9 `9 c
  7446.   (defun ddxline ()
    0 |' E, o* a8 L! k2 V: Z# B$ _1 c
  7447.     (if (= etype "XLINE")
    , I8 J% }7 A$ n- C! r) O( n
  7448.       (if (not (new_dialog "ddxline" dcl_id)) (exit))
    : {* P+ J! e+ D
  7449.       (if (not (new_dialog "ddray" dcl_id)) (exit))6 _( I& ]+ q" @
  7450.     )
    # B8 b4 w$ w: ~( X1 f
  7451.     ;; Set initial tile values
    4 Y; K; |) O8 T; G0 }4 z9 U$ S) e6 a
  7452.     (set_tile_props)- H6 N$ o6 Y2 {3 h8 A
  7453.     (set_tile_handle)  c. a/ H* u$ M
  7454.     (set_tile_xline_pt1)
    $ Q  B9 w2 _; w/ C- s- D* a
  7455.     ;; Convert to UCS and post Direction vector.
    % p7 \/ B) |( i+ Y; y
  7456.     (set_tile_dirv), J" d; D- F2 I/ G
  7457.     ;; Calculate second point by adding Root Point + Direction Vector.
    $ B! r1 l5 ?0 |' @# J& L, Z/ P
  7458.     (set_tile_xline_pt2)
    1 E6 g9 d2 C3 G: |1 c
  7459.     ;; Define action for tiles* ^, }* P5 P: K. u7 |
  7460.     (set_action_tiles)
    / j% J" K3 B* u+ X
  7461.     (setq dialog-state (start_dialog))1 d; e% a+ a9 @' G9 u' x
  7462.     (if (= dialog-state 0)
    4 b) K& h! m8 U. [6 Y
  7463.       (reset)  ~6 c7 @5 ]. ~% }$ E2 E1 D$ ]
  7464.     )
    ) y6 `) T4 _6 H' m
  7465.     (if (= dialog-state 3)
    # \1 E) k6 S2 c/ J
  7466.       (progn+ a4 p# A& Q% y. f! ?7 O) V
  7467.         (modify_xline 1). `( h5 S4 W. z; V
  7468.         (while (equal xline_pt2; [+ n- n$ D$ }
  7469.           (setq xline_pt1 (getpoint xline_pt2 "\nRoot point: ")) 0.000001)
    / Q2 ?* S# {5 j1 E  u9 k5 Q. F+ S
  7470.           (princ "The Root point cannot equal the Second point.")0 W+ i" h0 n7 n" R# D
  7471.         )
    4 }. G8 H. \' h1 ]
  7472.         (ver_xline_pt1)
    ! n0 v; R% k7 p2 ?; x
  7473.         (ver_xline_pt2)
    ) M7 J! ~: A- S0 x7 H1 `
  7474. (princ)
    . K0 ]& c/ T2 |% _( f
  7475.         (ddxline)) h: D  u* E, I1 F! V
  7476.       )
    : w2 C+ x. y: V! i! K( \9 Y
  7477.     )
    ) o6 W6 }/ {* d1 P7 _
  7478.     (if (= dialog-state 4)
    " m- f+ ^8 o4 ?8 j9 [3 k" ^! y+ w& k" {
  7479.       (progn; a, Z. q8 ^! t. S- s6 u9 e
  7480.         (modify_xline 1)
    4 _$ A- n  I. x. Z) z. a% P
  7481.         (while (equal xline_pt12 `7 _4 l2 l3 Q2 b' ?/ y& D
  7482.           (setq xline_pt2 (getpoint xline_pt1 "\nSecond point: ")) 0.000001)
    4 l4 F8 K% ~! v7 U+ K4 ^3 e
  7483.           (princ "The Second point cannot equal the Root point.")
    : {+ M* T1 X/ A1 ?! t
  7484.         )! S6 [5 p& Z" b6 T" O5 \, B- k* ]2 d
  7485.         (ver_xline_pt2)' n1 K: w) g+ U2 p9 X1 Z7 F; O
  7486. (princ)
    / x4 l, B7 B/ `' T6 v* O
  7487.         (ddxline)
    / E9 j3 z: v% S+ i& [
  7488.       )' z6 j1 Y- F# B( y$ i8 x/ x6 k
  7489.     )! {& u' T. b8 c- E
  7490.     (if (= dialog-state 1)
    6 P, Y9 v+ C: B5 Q- D
  7491.       (modify_xline 1)
    * O' g$ T1 _% S& N- a. g
  7492.     )9 s" f- k5 I6 B$ b3 ?
  7493.   )9 R1 ]) T8 }8 n) ]
  7494.   ;;  I2 B, R4 K# S  w; O
  7495.   ;; Modify ELLIPSE1 E: a: [& q: z$ d- [; v
  7496.   ;;' e$ O" ]# e, G9 H1 ~
  7497.   (defun modify_ellipse ()
      ?: J8 v( v3 v8 c3 W) F8 m
  7498.     (modify_prop_geom)9 R5 M: @- J9 p' T# {9 U: B
  7499.     ;; Update Ellipse Center Point value.
    ; ^0 N% s9 Z+ q4 Y0 W' C4 H4 e9 S  M
  7500.     (setq pt1 (list x1 y1 z1))6 ?! h9 C9 s0 `* \: Z$ c
  7501.     (tempmod pt1 10 1)( y3 H1 H& m9 A; ?' f* o) b
  7502.     ;; Update Start Parameter value.
    6 A, f' |% c) v7 G% T$ J; ~
  7503.     (setq y_val (sin st_ang))
    / t5 {+ j" A, O: A
  7504.     (setq x_val (* rrat (cos st_ang)))
    $ f. F7 W7 ^$ Q( r$ E' i2 a1 j7 f/ z9 h' p
  7505.     (setq stparm (atan y_val x_val))
    ) ^, d8 y7 ]( c5 P2 b2 w0 ?
  7506.     (setq elist (subst (cons 41 stparm) (assoc 41 elist) elist ))
    . ^0 N$ f3 l% ^+ u
  7507.     ;; Update End Parameter value. Normalize it, if it's less than
    # n% C) L; k' I* {6 E
  7508.     ;; the start parameter.
    8 U" N' n) d( |8 O1 Z
  7509.     (setq y_eval (sin end_eang))
    - r6 T. I, p3 F  Y; I, a
  7510.     (setq x_eval (* rrat (cos end_eang)))1 b- b, C  {  _" {, J- H# L
  7511.     (setq endparm (atan y_eval x_eval))
    4 h7 ~/ ?# |# o3 O: f; _) J
  7512.     (setq diffparm (- endparm stparm))4 x& d9 P! j6 \2 C( |  m2 A) q# B
  7513.     ;; Epsilon of 1.0e-6 radians for checking a zero length arc.
    * t  ^) i5 }" Z9 p
  7514.     ;; Since zero length arcs are not allowed - construct the full
    # ?0 p8 R5 U: t
  7515.     ;; ellipse in this case.
    - X3 I. _% _8 E% {+ ^
  7516.     (if (<= (* diffparm diffparm) 1.0e-12)
    % u, v$ O8 y* P4 Q6 ^
  7517.         (setq endparm (+ stparm (* 2 pi)))" a9 }3 u  O1 {" f( n
  7518.     )
    9 w" j! E+ L; o1 ?
  7519.     (if (<= endparm stparm)
    : d- O6 z9 ^# g5 y( W7 F+ \8 P
  7520.         (setq endparm (+ endparm (* 2 pi)))
    & d% u+ B  A+ S* s
  7521.     )) G/ O; t4 }8 u) Q1 ], r4 B% J
  7522.     (setq elist (subst (cons 42 endparm) (assoc 42 elist) elist ))2 _3 ^0 |3 o5 S& f9 m
  7523.     ;; Calculate the Major Axis Vector by first calculating3 f( y. E" B; W; s6 t1 h
  7524.     ;; a unit vector using the old Major Radius value. Then
    - S5 k  q$ A/ O$ E. x8 D% c
  7525.     ;; Multiplying that by the (possibly) new Major Radius
    ; U- y- N( w+ y+ {  u$ t( o) _0 W
  7526.     ;; value to get the new Major Axis Vector value.6 p( j$ S( o4 E" G5 w
  7527.     (setq unitxx (/ xx old_majrad))8 g5 m; @: `3 ]: ^$ x4 ^; l
  7528.     (setq unityy (/ yy old_majrad))
    1 j; i5 w7 Z: t" y: g
  7529.     (setq unitzz (/ zz old_majrad))) y  n: B: N. J; R8 d% \
  7530.     (setq newvecxx (* unitxx majrad))$ X) o7 I0 k, G
  7531.     (setq newvecyy (* unityy majrad))/ x' {4 s9 {- L( o, j
  7532.     (setq newveczz (* unitzz majrad))
    : Z+ u3 B9 ^' _
  7533.     (setq newmajaxis (list newvecxx newvecyy newveczz))
    5 b  \6 S! e; v! u+ ^* W
  7534.     ;; Update Major Axis Vector value8 R9 ^) c/ l/ l
  7535.     (setq elist (subst (cons 11 newmajaxis) (assoc 11 elist) elist ))
    : ^% P% W& @  V# V2 `
  7536.     ;; Update Radius Ratio value+ _! F3 J$ I6 i  M
  7537.     (setq elist (subst (cons 40 rrat) (assoc 40 elist) elist ))
    , [8 W3 V% s# ]% \/ z
  7538.     (entmod elist)
    1 }2 x/ y* X! w. ^7 f
  7539.   )
    % k. U5 k* r! E; L; V

  7540. , P7 Q; `* e& @. m3 d6 k
  7541.   (defun ddellipse ()* c! H, w- q% u6 z6 A" T( Q
  7542.     (if (not (new_dialog "ddellipse" dcl_id)) (exit))
    " T# Q2 V. y9 `# C! O
  7543.     ;; Set initial tile values4 T( k3 A7 V$ _- ~3 }
  7544.     (set_tile_props)
    & _( E$ i: w: C
  7545.     (set_tile_handle)$ |: Q' a, [& G/ R7 Q
  7546.     (set_tile_pt1 1), ^6 ^* Q  N4 H. `: `# c( j
  7547.     (ell_calc)
    5 v3 [1 s# ]! B  C& v# `
  7548.     ;; Define action for tiles
    $ k2 d4 G6 H2 v9 q1 p
  7549.     (set_action_tiles)( h1 j$ F) o  X: F. z
  7550.     (setq dialog-state (start_dialog))6 w/ l1 _) w: {8 h: o
  7551.     (if (= dialog-state 0): t4 o, u0 N1 F7 C6 @* J- k
  7552.       (reset)
    4 o$ Q0 p7 o( b
  7553.     )
    & G# T5 ]; w2 Q4 k9 m
  7554.     (if (= dialog-state 1)9 q+ m% K7 R8 H- u: h
  7555.       (modify_ellipse)
      Y/ k( D# V' x$ w
  7556.     )1 h: c% s& R; N/ R: V
  7557.     (if (= dialog-state 3)
    6 N" o, _9 k% [4 R8 `$ H( i
  7558.       (progn! o: R( J* p6 G( ~& s# @8 L4 i
  7559.         (modify_ellipse)' c5 d# P. T) A9 R
  7560.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))1 f8 g# C5 t6 W  D0 L
  7561.         (ver_pt1 1)$ |7 Y4 A" I0 b2 c4 T
  7562.         (ddellipse)3 v+ Y# l9 h9 z$ s1 @1 r1 L+ z
  7563.       )
    $ n- {6 p' g9 @! J) {& A
  7564.     )$ y8 M7 o! v+ c" n7 ^# S* `
  7565.   )
    0 O; c; ^# ^! D- n& g
  7566.   ;;3 A2 o/ |" g8 G  e; P
  7567.   ;; Modify REGION$ Q, W1 ~: U* f- q
  7568.   ;;! l5 n' U( K, L/ Y/ X; n0 O) q7 A! ]
  7569.   (defun modify_region ()
    8 S! @2 K/ _/ p6 j3 W2 \% g
  7570.     (modify_prop_geom)
    - R# e6 m% e* w
  7571.     (entmod elist)
    0 O3 R8 l/ B* `$ O$ Y
  7572.   )
    : B' [, w6 C" F6 I2 G! w
  7573. ( `7 g" O9 w/ }$ m/ N3 f
  7574.   (defun ddregion ()0 @; K% V" u) c4 D
  7575.     (if (not (new_dialog "ddregion" dcl_id)) (exit))
    ) Z# c% M& s8 T- S
  7576.     ;; Set initial tile values
    1 G7 _5 V7 S! {" ~
  7577.     (set_tile_props)
    1 ~/ P8 m* w! N* ^+ U& f
  7578.     (set_tile_handle)
    1 p' ?( D- j2 c2 Q
  7579.     ;; Define action for tiles0 B' U2 b2 a+ L/ M( C
  7580.     (set_action_tiles)/ ]+ P) ~5 G$ ~, k/ A- n% i) B
  7581.     (setq dialog-state (start_dialog))
    & m' g3 \  W6 j: y, S7 u, q" a# h
  7582.     (if (= dialog-state 0)# i) V! ]0 m$ L1 b3 p$ O1 Q! ^
  7583.       (reset)
    & X$ \- X( B  |( B* g) s# m2 n, O
  7584.     )
    0 o: f8 T8 l: {0 l) n5 B
  7585.     (if (= dialog-state 1)% ^; L# D2 a6 w! _/ Z
  7586.       (modify_region)+ o- v" A. ?, P& C2 w& M
  7587.     )( ?+ h; C. o) l" @
  7588.   )
    3 L. I4 J+ `7 i, F* G" G
  7589.   ;;
    ! {6 J' }% w; E/ z" t+ z, @1 C
  7590.   ;; Modify 3DSOLID
    8 }. X, \: |0 a" a5 B% T* C
  7591.   ;;
    8 `8 o3 \& p4 _7 k
  7592.   (defun modify_3dsolid (); e! K/ G9 W: Z& c' X
  7593.     (modify_prop_geom)
    6 b, s+ Y1 \* H4 b, ]+ s7 A* S  N
  7594.     (entmod elist)
    ! e; }1 d9 m" S. ^, m, w
  7595.   )( R  J" n; [& Z, v' i2 Y6 T

  7596. : q! r' F/ E* s
  7597.   (defun dd3dsolid ()
    - b2 w2 ?) P' o7 b& R# K
  7598.     (if (not (new_dialog "dd3dsolid" dcl_id)) (exit))1 ^2 X+ |( d' V  Y6 e$ l
  7599.     ;; Set initial tile values
    + K  O& Z% N: ], a) {& ^, F
  7600.     (set_tile_props)
      l$ N2 g9 ?* M$ Y
  7601.     (set_tile_handle)* a  z" W, u$ O/ {1 c) @& Z- ^# {
  7602.     ;; Define action for tiles9 U+ @% V- B9 N+ `- P
  7603.     (set_action_tiles)
    9 W5 }8 t% J* C( q" t  V
  7604.     (setq dialog-state (start_dialog))
    3 l+ W% }, t2 x3 [9 s5 Z2 E8 O
  7605.     (if (= dialog-state 0)9 \( G" ]# t/ ?9 `
  7606.       (reset)
      Z! a4 ^0 o! F$ w* s
  7607.     )
    5 E* \, b1 v! H* G. R
  7608.     (if (= dialog-state 1)3 k0 _/ T8 L" }- w7 d9 k
  7609.       (modify_3dsolid)* i2 w, N" w# C
  7610.     )
    5 n5 W3 j: e# x$ d% Q
  7611.   )# R) N0 p& U0 c8 L7 i! Q2 @
  7612.   ;;
    " k+ o$ A2 n0 E# ~6 {; C
  7613.   ;; Modify AcDbHatch* k2 J* ~( v+ {5 j! K# Y
  7614.   ;;
    9 t! Y" s  N0 h  X8 {# E" i, V
  7615.   (defun modify_hatch ()
    : S) q* c2 z! Y) Q8 F' W+ y& P
  7616.     (modify_prop_geom)
    ( A- K9 @0 Q3 B
  7617.     (entmod elist)
    , `, R- J. Q9 J3 G& x+ P
  7618.   )
    # i, G' R) _* J$ h- V3 }; ?

  7619. 4 `: R# a$ `# p& w" E8 P; r
  7620.   (defun ddnewhatch ()- X. `5 n" b& k# E4 R
  7621.     (if (equal hatch-elist nil)" s+ T5 k: {3 j- i
  7622.          (setq hatch-elist old-elist): g( d% b& d. [+ e2 `# @
  7623.     )
    5 U, T) ?: r& V5 H, q5 o9 |) A
  7624. $ n3 j7 T4 O4 i; q4 o$ V9 z
  7625.     (if (not (new_dialog "ddnewhatch" dcl_id)) (exit))
    0 k! f! Y; i/ e5 [, a1 n& W% o
  7626. ! N% u1 Q* V2 z- n! V8 i  X
  7627.     ;; disable the thickness tile
    * l1 ?. f& Y; U& x' i
  7628.     (mode_tile "eb_thickness" 1)& ^* [* C- B2 ~( I- T
  7629.     (mode_tile "e_thickness" 1)
    # u4 S" \- ^( E; v# N2 s: J, f

  7630. 6 m# a7 q4 h( |# }! O
  7631.     (setq help_entry "modify_associative_hatch_dialog")6 ]5 y7 H. y- p- z5 }
  7632.     (set_tile_props)" K+ P1 ]+ \: |! r' n5 o/ b
  7633.     (set_tile_handle)
    ; ^6 x* n5 L- H! A/ l5 a5 @

  7634. . J8 d1 \4 S6 O8 N9 G
  7635.     ;; Define action for tiles- a' E8 ]/ t/ ~8 V
  7636.     (set_action_tiles)
    6 q8 x6 \4 X5 q! _# {
  7637.     (action_tile "b_hatch" "(done_dialog 2)")" j* P0 v: x& h. Q
  7638.     (setq dialog-state (start_dialog))0 l8 L& s; I: Q( l
  7639.     (cond
      d; L6 @! |( _" t; g% t
  7640.        (  (eq dialog-state 0)
    ) ?1 S1 x/ V& _6 D& P0 r+ b1 N
  7641.           (setq old-elist hatch-elist)3 |) L' N3 }6 ?1 v) x$ _% x
  7642.           (setq hatch-elist nil). V$ @$ l' R4 K5 a+ N  c: U! K, o* z
  7643.           (if (= (checkforlockedlayer ename) nil)) B( k. _$ X* v" M; R) h: j0 n6 L( h
  7644.              (reset). o( v0 z% a" F4 G/ }
  7645.              (progn         ;;; special handling for locked layer reset
    * @4 G) v$ Z& E: g( w1 e; k3 E
  7646.                 ;; unlock the layer* y+ X1 h) R! s+ j
  7647.                 (setq layername (cdr (assoc 8 (cdr (entget ename)))))
    % c" V' ^' T% |7 e
  7648.                 (command "_.-LAYER" "_Unlock" layername "")
    + @" ^/ L* }8 h( K" {
  7649.                 ;; reset modifiction
    1 z* B  l2 W0 {( x  j4 R8 `
  7650.                 (reset)
    3 T  _" @) X3 V' l2 H
  7651.                 ;; lock the layer again
    " ?, `7 o- F! s; C
  7652.                 (command "_.-LAYER" "_Lock" layername "")
    : b9 G- c/ E$ {, y3 Y5 ~
  7653.             )
    % q% z# u' B! K3 |9 l: \6 ^9 D1 t
  7654.           )- b  O  X/ E# W4 x) u0 F
  7655.           nil       ;;; makes (ddnewhatch) return nil for Cancel- F  J) M5 [) L$ r/ Z, E% e
  7656.        )
    8 Y) u7 m: I7 e7 Y: G. E* F+ y/ c
  7657.        (  (eq dialog-state 1)* l8 S: l; f! e7 C
  7658.           (setq hatch-elist nil)
    9 p% C8 b+ U  p! y, ?
  7659.           (modify_hatch)% Z# \) g8 Y, W* ?: o1 D
  7660.           T         ;;; makes (ddnewhatch) return T for Ok
    ( C0 M, y) q( m# K
  7661.        )
      }% X& l6 h. R+ F2 B4 @% x# l4 O
  7662.        (  (eq dialog-state 2)2 y6 @3 W. E* \0 K
  7663. : u* j& C7 f" t. W; r. ?$ w
  7664.           (if (= (cdr (assoc 70 (tblsearch "LAYER" elayer)))9 {% U& J4 {4 v
  7665.                  4( b* |/ r9 W2 l! G4 o
  7666.               )            
    ; r2 l- D* B* Q& e8 l1 v$ n
  7667.               ;;; new selected layer is on a locked layer
    7 w2 g0 N& L+ Q7 w9 }& j6 M
  7668.               ;;; we can simply modify the hatch properties; G1 e7 M+ n: F* k
  7669.               (modify_hatch)
    - o: ]4 Y$ O7 M& b3 Y  ?
  7670.               (progn" ^6 H2 s" b! i
  7671.                     (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (cdr elist))))))
    & D- D( }/ m& }/ Y
  7672.                             4
      w. }3 _! n4 e) m  H' u
  7673.                         )           
    + z, r  U% a! W1 \; P
  7674.                         ;;; We changed the layer previously and now the hatch lies on a locked layer.% X# B8 O3 {+ ]' l7 X
  7675.                         ;;; We have to unlock the layer forethat we can update the hatch properties.
    ; e% n/ ]0 _1 b, N0 c( ]
  7676.                         ;;; If we don't do that (entmod) fails to update to the new layer.
    ) J( w: v8 X8 ^+ ?0 i9 Q
  7677.                         (progn" h9 n% ^& r- L7 r% s4 G0 l
  7678.                             (setq layername (cdr (assoc 8 (cdr elist))))  G" j, N! i$ C# [/ c
  7679.                             (command "_.-LAYER" "_Unlock" layername "")     ;;; unlock the layer
    6 P& }7 L: ?: ~' j( h  x
  7680.                             (modify_hatch)                                  ;;; update the properties/ s* r6 G& Y, l) g7 w
  7681.                             (command "_.-LAYER" "_Lock" layername "")       ;;; lock the layer again/ g. m9 t; y4 a5 g3 @
  7682.                         )9 E# ~$ J4 x# c2 J# D
  7683.                         ;;;  All other cases we simply update the properties0 S/ N  S1 S1 q* M% |# p
  7684.                         (modify_hatch)
    - u" z3 f7 b3 N2 Z
  7685.                     )
    - }3 f; ]5 h0 B. X& D# j" [! K
  7686.               )2 i# Y( X& |9 j4 J
  7687.           ) . q6 e& X& q' J  D8 _- t
  7688.           (if (= (checkforlockedlayer ename) nil)% @! N, M- a0 r' B' b& S
  7689.               (command "_hatchedit" ename)% S; b/ O/ m* J3 Y" k$ J2 P, Y
  7690.               (alert ;|MSG111|;"The hatch object is on a locked layer.")$ @+ q1 D( v6 @0 ?
  7691.           )
    6 m  I0 a1 z+ u* l1 j: f
  7692.           (ddmodify ename)
    - e+ F+ T+ o4 e8 a9 O. q/ `
  7693.        )7 R- i8 L( Z+ r$ F1 U- k- u: o
  7694.     )
    % l2 a# q8 {: X2 i
  7695.   )7 G6 Z: U, G0 W
  7696.   ;;7 v9 y9 s0 ?7 r& c  |9 s
  7697.   ;; Modify BODY
    7 }5 c# H" N2 H" Y% H% F# Z
  7698.   ;;
    9 Z/ \. I* Q' i5 z7 J" X. ~+ O% g, d
  7699.   (defun modify_body ()
    . N; Y+ ?! H+ C2 _+ o6 a6 A
  7700.     (modify_prop_geom)
    % z4 k# X9 G% f
  7701.     (entmod elist)6 A4 W" h8 j$ U8 Q* P9 h
  7702.   )- ^5 p0 `1 k* M8 j0 r- {& R
  7703. % H5 P+ z7 G' e( c6 o3 {3 o/ E- g
  7704.   (defun ddbody (); o8 \7 k! C3 p' n% t# A; Y
  7705.     (if (not (new_dialog "ddbody" dcl_id)) (exit))
    + g# B. t5 N6 l8 n, b
  7706.     ;; Set initial tile values, p' p) ~  T0 e% t% {8 U! m
  7707.     (set_tile_props)
    ( W% ]7 P3 C  V! }$ [; S2 z
  7708.     (set_tile_handle)
    % {/ @% M5 E7 x/ d
  7709.     ;; Define action for tiles' o7 b( A0 y& J& Y' P$ @  u  X
  7710.     (set_action_tiles)/ d, ~% C4 J  L
  7711.     (setq dialog-state (start_dialog)): }' [- r. q) H) ^' t" ]8 z9 w
  7712.     (if (= dialog-state 0)
    7 ]  N8 o* \$ D7 p$ V
  7713.       (reset)5 [! p+ E, L0 G( J7 v6 x& X
  7714.     )
    # Z, c- z- b% W. B# X  x/ l
  7715.     (if (= dialog-state 1)
    8 z4 y4 L" k- d$ a5 a( Y
  7716.       (modify_body)
    % F4 v8 K0 |" I8 d$ l; H3 r
  7717.     )
    . u' y4 C: t2 ^+ o. G  ~; n* `( Y
  7718.   ); C6 j3 P2 t7 r" k- x8 c/ m) h
  7719.   ;;
    & s; e/ [: N- _* _4 W. B" i
  7720.   ;; Modify CIRCLE
    ; A2 Y/ I! r. x5 q" L
  7721.   ;;9 O! A. n! n4 u* e
  7722.   (defun modify_circle ()
    % r1 J2 _, D! `& U1 ]( _7 M
  7723.     (modify_properties)
    7 `  s1 T7 I# ~0 J1 M* W/ M' H
  7724.     (setq pt1 (list x1 y1 z1))7 e) ~) W0 S! T" L0 n' S/ e
  7725.     (tempmod pt1 10 1)" m$ Q# \' T$ f9 C
  7726.     (tempmod radius 40 nil)
    ( u0 v& o. _/ F2 y/ t& K
  7727.     (entmod elist). g2 F! y) ?- L  D5 `
  7728.   )  M: p9 m/ L3 \9 _# h
  7729. 4 |. ^: ?; l1 C" a. P: G2 l- [
  7730.   (defun ddcircle ()% X1 e" q5 t* J  W$ a& r
  7731.     (if (not (new_dialog "ddcircle" dcl_id)) (exit))
    ! z; `& G" q4 }3 H) R/ k3 ]
  7732.     ;; Set initial tile values
    " L) O+ _1 L0 j- {9 z, v& [& ?
  7733.     (set_tile_props)6 p% {4 H# M( x+ W3 R
  7734.     (set_tile_handle)
    ) c( V4 N; g& U5 X. ~, |
  7735.     (set_tile_pt1 1), V; z4 L5 V! v  Z, W$ H0 `
  7736.     (set_tile_rad)& J1 I, T; }3 q) G
  7737.     (cir_calc)# n+ |  \# q% x. ?
  7738.     ;; Define action for tiles
    ! c4 u+ m1 F) a
  7739.     (set_action_tiles)& G! x; t- Q$ \+ i
  7740.     (set_tile_pt1 1)  N) i- |9 n7 L# N, |: V
  7741.     (setq dialog-state (start_dialog))
    2 m; @3 h$ A6 u3 v" ~/ N
  7742.     (if (= dialog-state 0)1 v# C# K* Q5 R" `; i/ ?9 R  A0 d
  7743.       (reset)
    ( P/ F% R7 Q8 u5 O7 f/ Q0 |
  7744.     )
    & S- |. E& w4 W+ ~+ n4 Y. [( P
  7745.     (if (= dialog-state 1)# P0 w5 z2 X1 }% J  Y& R' b: k
  7746.       (modify_circle)
    ! j; A) ^  @+ f- a
  7747.     ). Y1 d  L0 K6 R, `& n
  7748.     (if (= dialog-state 3)8 F  L7 U( h! ~
  7749.       (progn
    7 C  z1 }  n: m$ p' P- b  v
  7750.         (modify_circle)4 l* s$ d# W( o9 U' o) {) [& R
  7751.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))" y* z* a/ P6 ?& u
  7752.         (ver_pt1 1)
    . K  q  a& h2 p7 R) k( c9 G
  7753.         (ddcircle)  r3 V/ D0 q$ U& I
  7754.       )7 c& a8 Y9 _" `# g* |
  7755.     )5 n: i+ X8 M0 J
  7756.   ): ^3 h+ Q" ~. a4 Z0 B
  7757.   ;;
    " g$ _* ?" {& m- I/ l
  7758.   ;; Modify ARC; G) A8 G) G" m. v4 l! L
  7759.   ;;
    1 p6 E) `  x4 u5 l; l: z+ a1 [
  7760.   (defun modify_arc ()3 r, B5 F5 w, {3 O* l
  7761.     (modify_properties)$ F+ w2 J, F, k8 J; Q: Z- A
  7762.     (setq pt1 (list x1 y1 z1)): Q/ t5 g; R) @, I! R! o
  7763.     (tempmod pt1 10 1)3 s6 @/ w& |( f5 J/ j
  7764.     (tempmod radius 40 nil)
    ) _/ @8 [: K' X$ G
  7765.     (tempmod st_ang 50 nil)
    9 Y1 s+ J" h6 R+ V) j! e
  7766.     (tempmod end_ang 51 nil)
    + i, L4 ?7 S8 k  B% i; V7 B
  7767.     (entmod elist)
    % B+ w7 ]6 W0 }4 l
  7768.   )" O; v7 a6 X9 E
  7769.   (defun ddarc ()
    ( d8 v: b: F& O! O, y
  7770.     (if (not (new_dialog "ddarc" dcl_id)) (exit))
    & b3 z7 D; y& b8 r  d: L/ f
  7771.     ;; Set initial tile values
    - [' `/ W& N5 F& S( z
  7772.     (set_tile_props)$ L( ]5 K& \7 H
  7773.     (set_tile_handle)) h# P) C. O6 g6 H5 e" M
  7774.     (set_tile_pt1 1)
      {- j- k! D. A
  7775.     (set_tile_rad)) d# c1 @4 w- X( W0 J; I
  7776.     (set_tile_stang)
    $ H5 s0 }* c! q. b. b
  7777.     (set_tile_endang)
    3 j! j' q8 X0 N7 Z
  7778.     (arc_calc)
    9 y$ ^8 Z7 I# M# L* ]
  7779.     ;; Define action for tiles5 f6 R# ?7 ~! ]: ~
  7780.     (set_action_tiles)
    2 C# z+ u) B& q; m
  7781.     (setq dialog-state (start_dialog))( J2 V$ ~; o6 m# b& J
  7782.     (if (= dialog-state 0)
    + M1 i! t6 X- y. M: g$ A0 q
  7783.       (reset)
    7 q- F( l/ C% ^
  7784.     )
    + |) i& R" G0 v& ^1 }, P
  7785.     (if (= dialog-state 1)
    ( u! B$ B& n5 @6 p" C
  7786.       (modify_arc)6 c/ k9 W2 F# v( ^- i/ o8 }
  7787.     )" |# o) o! W% |/ W& i: L
  7788.     (if (= dialog-state 3)* q1 G9 F0 T4 F+ Z( r* f/ y2 l$ C
  7789.       (progn( p  T, e* O" `# T0 i5 d
  7790.         (modify_arc)
    8 q9 a8 y" j2 y" l8 a; S
  7791.         (setq pt1 (getpoint (list x1 y1 z1) "\nCenter point: "))
    - J/ R& ^* ]% y3 t, T9 y
  7792.         (ver_pt1 1)" I' v" p9 @6 k# ]
  7793.         (ddarc)1 v$ L6 @  Y2 ~. l
  7794.       )" M1 Y4 B8 a; \) e
  7795.     )7 i! V' i, K  t- T# G+ O" v: B
  7796.   )
    . [+ k- u, h% G9 R- M" Q: q
  7797.   ;;9 n9 U/ }% x) @4 H" ^* z0 G& P* k
  7798.   ;; Modify SOLID or TRACE3 `  L! V  m! d9 H  o3 U0 F
  7799.   ;; Note the Z value of the object is determined by the Z value of the fourth& Y/ Y- A. \& K: ?; V. k
  7800.   ;; point - code 13.  Changing the point values of a solid or trace from a UCS7 j- H7 l2 f3 S  S0 U: ~
  7801.   ;; that is nonplanar to the UCS the object was created may confuse the user.
    0 O! p1 W# M% o' N  H# r/ l
  7802.   (defun modify_solid ()
    % g- k) f5 T- Q( b- E* e
  7803.     (modify_properties)
    4 P9 J( ]* q* {8 b8 U
  7804.     (setq pt1 (list x1 y1 z4))
    * Y! A: A& Y8 u2 R4 Y
  7805.     (setq pt2 (list x2 y2 z4))9 B' v8 E) j  u& P) Z+ W" B2 c
  7806.     (setq pt3 (list x3 y3 z4))) J! g! {& F- a5 p" @) O  }
  7807.     (setq pt4 (list x4 y4 z4))* ~; a1 U0 _* E3 n' Q8 z
  7808.     (tempmod pt1 10 1)
    . H. r7 ^2 }! G- F" M7 y. c
  7809.     (tempmod pt2 11 1)( e' ]7 S. n; u8 P7 o
  7810.     (tempmod pt3 12 1)
    4 N( I4 P) t4 Y. [" `
  7811.     (tempmod pt4 13 1)
    ; \, f3 o3 G+ s+ F4 P
  7812.     (entmod elist)
    + l1 `* T+ ?/ B- V7 i! V
  7813.   )
      x1 w* k! N; |9 O

  7814. / ]8 f; s0 T4 B# _6 l, Y3 b8 E: m
  7815.   (defun ddsolid ()2 e! R' G) [! t0 U1 P
  7816.     (if (= etype "SOLID")
    5 K. \' P7 _2 b
  7817.         (if (not (new_dialog "ddsolid" dcl_id)) (exit))
    $ l! N+ N# R: w% c$ j
  7818.         (if (not (new_dialog "ddtrace" dcl_id)) (exit))
    ! m- u' [& c  C5 d
  7819.     )' z8 Z& V" o" o" x3 G4 G8 D" G
  7820.     ;; Set initial tile values; c. v! u3 \, g* M
  7821.     (set_tile_props)
    , u9 J) Z! `! L: a2 z* f
  7822.     (set_tile_handle)) E) [3 h1 `- n  _+ i+ _, m* o
  7823.     (set_tile_pt1 1)
    9 ^3 T* L- c7 U2 B3 B
  7824.     (set_tile_pt2 1)
    1 [5 O$ S. @7 z) N" ^- j
  7825.     (set_tile_pt3 1)( r  v* c% J1 g8 M( a1 y
  7826.     (set_tile_pt4 1)
    6 z1 q; z/ J/ m6 ?; G0 {. m" P1 R
  7827.     ;; Define action for tiles
    5 W3 T& R# D  z% F
  7828.     (set_action_tiles)
      ~6 e( ]; X/ q- R9 M, V3 g. i, R! X
  7829.     (setq dialog-state (start_dialog))
    5 h- Z& @: d% [0 k. w3 e' j5 l
  7830.     (if (= dialog-state 0)1 o6 S: D5 `6 e8 I; f8 k. E
  7831.       (reset); ]2 _: O0 L/ ?
  7832.     )5 `$ o" X; u1 E7 Q) A; v1 h1 B8 i
  7833.     (if (= dialog-state 1)7 u8 k3 g! z) }/ U
  7834.       (modify_solid)
    - H  a, }0 w. q. N9 T
  7835.     )
    ! Q! Y! c9 i1 n0 x
  7836.     (if (= dialog-state 3)
    / K: ?5 Z# t7 a. h0 x, E
  7837.       (progn
    : y3 k$ `* n( ?, T) K% [4 Y
  7838.         (modify_solid)5 G. G' ]3 m5 s0 u1 R" W3 v& W
  7839.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst point: "))
    , W6 i6 a8 d0 |; R8 z6 |! C
  7840.         (ver_pt1 1)
    2 H% H4 {' o' U% \! J! e
  7841.         (ddsolid)
    7 i) B# X  d# H, b: @( |
  7842.       )
    ) O0 g$ A% k2 a  |2 P. `
  7843.     )
      T- D4 q: h8 w: M
  7844.     (if (= dialog-state 4)% i: E  o. Q- s9 E
  7845.       (progn
    1 W# w' W1 z! S1 u/ S
  7846.         (modify_solid)2 W1 ~* b  [5 o  N# H0 I2 F! ~
  7847.         (entmod elist)
    ' b. @1 p- h/ D3 H) C
  7848.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))7 b5 R* H+ w4 z
  7849.         (ver_pt2 1)( ]9 {+ O/ M( H; x. Q6 r) b
  7850.         (ddsolid)2 i; L; G# r# V& _8 b- I6 G3 l
  7851.       )9 r( b+ \' C5 q
  7852.     )( t, q7 O8 Z0 g0 }) C* w$ c
  7853.     (if (= dialog-state 5)6 C8 G; N2 z( D: T8 x, m$ g+ U
  7854.       (progn; p# O( e* e9 H# s( I) W
  7855.         (modify_solid)( W1 Y8 H8 v# o7 \
  7856.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))  H9 j9 p) B% \& S) O7 r, j" N) z
  7857.         (ver_pt3 1)
    1 z( J  W  x! G
  7858.         (ddsolid)( [/ [' u, V+ I8 C! t" a9 n' V
  7859.       )
    $ h' I* f3 I* K) K, m6 T
  7860.     ). a6 q( I! U5 L7 S
  7861.     (if (= dialog-state 6)' C) N& s& M; H2 b" K7 h# X
  7862.       (progn& `& h) y! D; `1 V7 a; b7 \2 t0 s
  7863.         (modify_solid); B' S/ }3 r  `( T
  7864.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))
    - P5 N$ M' G3 N
  7865.         (ver_pt4 1)( j/ Y2 d- [8 ^! E
  7866.         (ddsolid)& |5 j+ w3 x0 T
  7867.       )+ i/ ^- o% r1 I2 i
  7868.     )
    - K( H5 s& q4 ^- N
  7869.   )  E( H* O' x5 R0 d
  7870.   ;;8 ^$ G' x8 N1 X9 o: A
  7871.   ;; Modify 3DFACE
    ( ?1 ]5 q( ?7 _) ?+ p
  7872.   ;;
    . T1 _  r/ f& Q- _& ]/ N* C
  7873.   ;; Check visibility of edges1 B. y0 B4 k2 [9 u) Y% e( |
  7874.   ;;( x" f& ~: v& x, O, \1 F( }
  7875.   (defun edgetest (/ bit1 bit2 bit3 bit4)
    1 w- j0 @" Z( M
  7876.     (if (= edge1 "1") (setq bit1 0) (setq bit1 1))9 _6 g0 ^4 W* m& Q  y
  7877.     (if (= edge2 "1") (setq bit2 0) (setq bit2 2))! P' S8 h* f% E/ P4 W. Z# H' _2 H
  7878.     (if (= edge3 "1") (setq bit3 0) (setq bit3 4))
    6 w: ~" a/ h5 B9 n* `9 \
  7879.     (if (= edge4 "1") (setq bit4 0) (setq bit4 8))( ~3 _1 K6 C$ m/ g6 O
  7880.     (+ bit1 bit2 bit3 bit4)& k  C( |: r& {; v1 i8 U
  7881.   )0 F* ^2 v$ R4 F

  7882. $ r9 Y' ~2 |  J" D- S' @' {# U% \
  7883.   (defun modify_3dface ()
    3 ~: p3 C9 c- Q0 o7 r
  7884.     (modify_properties)9 K( @1 j' I, E/ I% C
  7885.     (setq pt1 (list x1 y1 z1))
    4 R0 d% ^6 [) \7 C
  7886.     (setq pt2 (list x2 y2 z2))" ^2 L/ k4 [2 n# L* ~
  7887.     (setq pt3 (list x3 y3 z3))
    2 A* u8 n- ~# x5 }4 i; r  C& V
  7888.     (setq pt4 (list x4 y4 z4))0 s: |7 t$ z9 t
  7889.     (tempmod pt1 10 0)* B( A. p2 `8 \6 y. W
  7890.     (tempmod pt2 11 0)
    & _2 S" U, L1 z" x$ M
  7891.     (tempmod pt3 12 0)( k/ {) E+ D2 J6 S# p, q
  7892.     (tempmod pt4 13 0)6 n# ~& t; a& ^$ @1 d4 G: P
  7893.     (tempmod (edgetest) 70 nil)% q! Q; l: f% J% K/ A5 v
  7894.     (entmod elist)
    , Q, D* Q9 K1 O( G# q% Y; }, F% O
  7895.   )
    , t/ \, Y5 v7 h- z9 r8 y( i' @
  7896. 6 X- z* P; K/ o* ]) t( N# m
  7897.   (defun dd3dface ()6 w3 O! s0 [6 u( g. f
  7898.     (if (not (new_dialog "dd3dface" dcl_id)) (exit))/ k9 ~" t$ l" x  X/ [3 V
  7899.     (set_tile_props), i( ]; ?. I- s& S* F4 |
  7900.     (set_tile_handle)
    ; E. o% [% s. k' t6 r
  7901.     (set_tile_pt1 0)
    ) a) Q3 J  ^  B
  7902.     (set_tile_pt2 0)$ r7 |/ X& L- ?/ v
  7903.     (set_tile_pt3 0)0 X7 \& a5 ~; I
  7904.     (set_tile_pt4 0)9 V3 J: v9 ^3 s6 _
  7905.     (set_tile_edges)/ j# X. S) r7 Q+ H7 ]
  7906.     ;; Define action for tiles. B% Z/ }. }* ^* R" ~! Q
  7907.     (set_action_tiles)& k, z$ `$ \) q/ `& B: L! m  b$ \
  7908.     (setq dialog-state (start_dialog))" t* `" r2 ]5 T  ]# H( k) A
  7909.     (if (= dialog-state 0)
    ; w. r2 H! X6 n9 D5 z+ a" I
  7910.       (reset)
    5 _2 f6 Z1 y* S7 u( S0 X
  7911.     )
    ; Z  _& ^: f. r. w! i9 z7 ~6 N
  7912.     (if (= dialog-state 1)8 n/ r0 N! j# E/ F8 ?* `2 Q( _
  7913.       (modify_3dface)
    ! q# l& e7 m8 B: Z
  7914.     )
    ! X( L1 h$ l/ I9 \$ J7 H8 a; P  ]& f
  7915.     (if (= dialog-state 3); h/ O5 w5 }& [: n+ v
  7916.       (progn' t' E7 @9 E! r+ Z8 a- Z0 }" m1 z
  7917.         (modify_3dface)# D; Q# a4 A( t5 ?  t
  7918.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst pt: "))
    2 p: [9 i- C# f3 e5 ~. `$ z
  7919.         (ver_pt1 0)( C% z3 B, g$ \6 {
  7920.         (dd3dface)
    , {; }2 x; s4 Y: i
  7921.       )9 w0 F0 R  B- t, b6 r4 F+ l' p
  7922.     )
    3 Q% x6 v$ \' p9 N3 B2 F
  7923.     (if (= dialog-state 4)
    ! Z4 D! i7 v5 m8 X  @, k3 A, e3 _
  7924.       (progn
    2 S  O4 o8 g2 n
  7925.         (modify_3dface)% g$ _6 }  s5 C: a$ L  h
  7926.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))
    8 ^# [+ `) ?, r/ \; e
  7927.         (ver_pt2 0)' ^* b9 ?: |% D% `( ?
  7928.         (dd3dface)) G- w, h" P9 ]" K
  7929.       )  R4 v" j' {+ g( U6 }9 x' @% t; U/ V
  7930.     )# d: `/ K, ~* q
  7931.     (if (= dialog-state 5)
    9 R/ b4 X# i0 x) g. s! W2 G
  7932.       (progn
    , l4 X4 W- T( e  Z  k
  7933.         (modify_3dface)1 v% j* ^$ q+ ^  D  B& b# O! z
  7934.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))
    . B! _) x0 P) q2 k/ X4 m4 k
  7935.         (ver_pt3 0)- ^. I. I5 g3 |% s
  7936.         (dd3dface)
    5 \+ J9 N5 h; b' d2 M4 m* R# l0 {7 r
  7937.       )
    3 N2 [$ f% A9 j" n8 i3 |9 U  h
  7938.     )0 C/ V0 k( \: l3 t+ A, H& v( {
  7939.     (if (= dialog-state 6)' H, Z4 ?1 W# A7 @  v( H9 F
  7940.       (progn) z. q$ [) F  h# v# n
  7941.         (modify_3dface)
    ( M" B/ }  Y! W  E6 p
  7942.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))
    . p* v8 o* a. @4 F9 ?
  7943.         (ver_pt4 0)
    6 l7 u, T' s$ V, y. f2 y
  7944.         (dd3dface)
    1 h2 V: |0 C5 A% y8 D' n
  7945.       )
    8 H2 y) E* c& |6 u+ P1 D
  7946.     )
    5 q, e6 \/ B3 M. L* F1 X4 l, E! _. l
  7947.   )  S; c( z% m% w! u

  7948. ' h% v8 H; I2 \) A* u7 t
  7949.   ;;7 z* O" ]& q; L7 L+ }
  7950.   ;; Image functions8 @9 m- M$ `+ ?1 G) p$ n# W
  7951.   ;;
    % T! I- u" R6 I& C+ b
  7952.   (defun image_scale (/ upixel en n userscale temp)! K# p( J$ n. S* q
  7953.     ;; Calculate the size of an image pixel in AutoCAD units
    " l+ V/ o/ A8 h
  7954.     (setq upixel (distance '(0 0 0) (cdr (assoc 11 elist))))9 u- n# g2 I; Z& C7 K

  7955. 1 @# }) z. Q1 A0 [0 a2 _  [
  7956.     ;; Retrieve the user scale
    1 \+ T* @" \% j2 M& G2 F% d  o9 ]
  7957.     (setq en (dictsearch (namedobjdict) "ACAD_IMAGE_VARS"))
    ) X, Q" p) C) ]1 ]6 `$ E

  7958. 6 d: {8 d. X* I: a
  7959.     ;; Next, extract the image units and pixel resolution( q' j, n; z, B3 V, f0 X8 P. l
  7960.     (if (or (= 0 (cdr (assoc 281 image:olist))) (= 0 (cdr (assoc 72 en))))
    ( \  N/ g5 G: m
  7961.       (setq image:scale (* (cadr (assoc 13 elist)) upixel))' N+ P2 @* Z# z% Y4 R8 b
  7962.       (progn+ }+ x8 N& d8 `# u' B
  7963.         ;; Convert the user scale to the proper word
    % M* L0 D0 e, P" B/ e
  7964.         (setq n (cdr (assoc 72 en)))0 Y$ o/ }  x$ S0 B& O
  7965.         (setq temp (getvar "LUNITS"))) m2 I  D* g; @# [
  7966.         (if (and (/= n 0) (or (= temp 3) (= temp 4))) (setq n 5))
    : w, h9 X+ E3 |
  7967.         (if (= n 1) (setq userscale "Millimeter"))
    7 y4 m4 t9 _' b, Q" N
  7968.         (if (= n 2) (setq userscale "Centimeter"))
    % Q8 w; I5 L* {* N9 i
  7969.         (if (= n 3) (setq userscale "Meter"))* f/ X7 h2 _" z/ U% F# \% z8 n
  7970.         (if (= n 4) (setq userscale "Kilometer"))* X& {6 _5 R# w' c" M
  7971.         (if (= n 5) (setq userscale "Inch"))
    : \  i7 h; H: G" H( f
  7972.         (if (= n 6) (setq userscale "Foot"))" w% }0 D5 X: \. Q- o! O
  7973.         (if (= n 7) (setq userscale "Yard"))* O* t6 l$ L: f: n, f6 O! c; I
  7974.         (if (= n 8) (setq userscale "Mile"))9 s1 P7 v$ X7 A# X1 O3 @
  7975.         (setq image:scale (/ upixel (cvunit 1 "Millimeter" userscale) (cadr (assoc 11 image:olist))))
    1 n' e5 U% m7 x7 @+ r, S9 q
  7976.       )9 P. V& @6 E$ H# E: l# |
  7977.     )
    - {# ^/ p! c- {( }- w! i
  7978.   )
    " G. @- q1 d; C& p: G

  7979.   ~, y7 _5 @7 e" s& U, v; B
  7980.   ;;% g. x8 r1 o% S$ ]
  7981.   ;; Scale factors for block insertions
    , p* o% |9 N- W' X2 }# ^
  7982.   ;;( G9 j: O6 y! X) D2 b, {
  7983.   (defun image_set_tile_scale (/ temp)
    ; B" Y- ?* ]# D0 X# _* L$ J
  7984.     (setq temp (getvar "LUNITS"))
    . g& T1 c" a" \/ `% p; W- S
  7985.     (setvar "LUNITS" 2)( v$ c& s6 v" W1 p& f3 A  `
  7986.     (set_tile "xscale" (ai_rtos (* image:scale image:mult)))) |% J  ~9 w0 q
  7987.     (set_tile "wid" (ai_rtos (* image:width image:mult)))
    # F6 {" w: @+ i9 a
  7988.     (set_tile "hght" (ai_rtos (* image:height image:mult)))
    6 G' d1 N3 e) y2 V# I- ^
  7989.     (setvar "LUNITS" temp)
    ) t6 a* u4 X# `
  7990.   )
    * E" k2 j+ {3 I8 {$ A
  7991. 4 m3 z1 Z" s9 \; g2 D
  7992.   ;;& y# \+ D8 l6 y0 [9 G
  7993.   ;; Set the scale, width and height values appropriately./ X1 p0 S9 J1 x$ k# B! p
  7994.   ;;
    9 g; K2 o+ X9 y( M
  7995.   (defun image_update (field value / orig_value new_value mult)3 p( V$ U, l9 P1 Q
  7996.     (if (= field "xscale")
    0 R, C) T" }1 j( i
  7997.         (setq orig_value image:scale)
    7 @, ]6 D. v0 r
  7998.     )
    * V9 u5 l3 v$ D3 c" n# D2 `! j
  7999.     (if (= field "wid"), ]' ?+ C, x% a/ F
  8000.         (setq orig_value image:width)
    ! Q) E# u! k, F* h9 O: C) `8 \6 O
  8001.     )- w2 Y/ k: R# r) r4 M, E% N
  8002.     (if (= field "hght")% h7 L- }% `) {7 u  d( g
  8003.         (setq orig_value image:height)2 t. B4 Y9 ~  [; T) }, U/ D
  8004.     )
    2 P$ V% A( d' V7 R0 ?0 \
  8005.     (setq new_value (verify_d field value (* image:mult orig_value)))* q) ~0 I0 T6 J& s+ S
  8006.     (if (/= new_value old_value)
    ) e2 S" U# i( b
  8007.       ;; Make sure the user has entered a sufficiently large value
    . }1 g7 f* n: j
  8008.       (if new_value
    ' c6 C. O5 O9 c3 d3 X7 O2 ^7 ?
  8009.         (progn& P. m  P' j, l
  8010.           (if (< new_value 1e-8)
    8 P4 G3 I& j/ Q# \
  8011.             (setq mult image:mult)7 A( H# d4 t2 c; _. |- g/ U* O
  8012.             (setq mult (/ new_value orig_value))* i7 N3 y  E; W3 G2 _/ X* n, \
  8013.           )
    " h+ q5 P' `6 J9 }7 z1 @, G
  8014.           (setq image:mult mult)
    0 G! B7 S7 O; [# |  Q" H
  8015.           (image_set_tile_scale)
    # E( K1 H# k+ I! b* h/ W2 e
  8016.         )
    1 f  t" D% `6 w% A
  8017.       )/ }+ o$ q- ]# W2 G3 G! g
  8018.     )
    5 P  D! P7 B/ r" n! i
  8019.   )
    1 s; ]( M5 C3 U
  8020. , {' R1 o. ?6 R* S* }" v
  8021.   (defun image_disp_opt (bit)
    6 @  s) ~" [& B( e
  8022.     (setq image:options (Boole 6 image:options bit))0 q6 F! k- z& r2 w
  8023.   )$ W  @& H( s8 D

  8024. ; D* c  p8 i2 {! O$ f
  8025.   (defun image_modify ()
    - |2 f7 P9 n- p! d) G$ g6 E4 s
  8026.     (modify_properties), v, U" \: \9 g! y5 |
  8027.     (setq pt1 (list x1 y1 z1))2 |# }' [; w/ L3 V
  8028.     (tempmod pt1 10 0)
    " W3 z# B# t6 T6 ~0 y# p* ?
  8029.     (entmod elist)* p% T) h( ^; ^- s. _; i& @! ~
  8030.   )3 m8 N& d) \! b' y4 ?" s

  8031. ) v9 {* [; E+ \+ l9 {& T7 p
  8032.   (defun image_clean_variables ()
    * K( w3 E0 @: @1 B6 g% }% b) h
  8033.     ;; Clean up global variables used here
    0 ~! v+ \) ~0 M% I  J- T
  8034.     (setq image:scale nil)" ^% y6 s  U5 e/ ]- X! {! a
  8035.     (setq image:angle nil)
    ! T6 d+ y+ H+ M) G
  8036.     (setq image:width nil)
    3 Q5 g6 v7 y+ l8 f; F/ x1 o
  8037.     (setq image:height nil)+ ~2 j4 i# H  U5 u7 q2 S
  8038.     (setq image:options nil). t, S) U: B0 r
  8039.     (setq image:oname nil)/ R  n, U* t6 d0 K
  8040.     (setq image:olist nil)
    5 N5 d: |8 y+ \# S4 B2 \; t
  8041.     (setq image:mult nil)% A# e7 e) B: F$ X! A" {- ?
  8042.     (setq st_ang nil)
    " R' J4 w" ~# K* V3 c, w# S
  8043.   )
    1 ?( _  o: ^! w. Y% H- u
  8044. / F! O: ]1 u  ?/ X8 ~( o: d! S1 l; v
  8045.   (defun image_scale_vector (v1 value)" e1 Y' l0 k- e. G1 i
  8046.     (list (* (car v1) value) (* (cadr v1) value) (* (last v1) value))
    - q/ N2 Z! a6 M& z3 Z  U8 p
  8047.   )7 X0 w) x. J8 a( S" S
  8048. + I  [5 k3 ~) h7 m
  8049.   (defun image_cross_product (v1 v2 / vx vy vz), o& E1 e" b  c
  8050.     (setq vx (- (* (cadr v1) (last v2)) (* (cadr v2) (last v1))))
    - P1 T6 O; W8 F  [$ d( `& I
  8051.     (setq vy (- (* (car v2) (last v1)) (* (car v1) (last v2)))): d( T- M+ u3 @2 Z7 Q2 `& f
  8052.     (setq vz (- (* (car v1) (cadr v2)) (* (car v2) (cadr v1))))
    / t# ~, K7 B9 x( V
  8053.     (list vx vy vz)
    , ?7 S8 X) F) L2 y8 J
  8054.   )3 L9 U7 g& l" Q& x

  8055. ' k- I( u4 }$ t" i  R
  8056.   (defun image_dot_product (v1 v2): _5 Z7 u% g5 S+ X1 n- P$ s5 z
  8057.     (+ (* (car v1) (car v2)) (* (cadr v1) (cadr v2)) (* (last v1) (last v2)))
    ! `% C; C) l! w( k! T- N: C4 Q
  8058.   )# X& e& E# q4 n, g' x- O9 {' S

  8059. ( o& p" ^* T1 S3 p. I, e
  8060.   (defun image_add_vector (v1 v2)
    8 w! W  M3 o( v) l
  8061.     (list (+ (car v1) (car v2)) (+ (cadr v1) (cadr v2)) (+ (last v1) (last v2)))$ G4 x4 w2 @' I: e
  8062.   )$ ^3 n% V+ n1 _' t3 C" I

  8063. ) l2 D7 m6 r( g) O% w
  8064.   (defun image_subtract_vector (v1 v2)
    7 n- A* h' N1 i4 N
  8065.     (list (- (car v1) (car v2)) (- (cadr v1) (cadr v2)) (- (last v1) (last v2)))# F- R! D; W2 p8 C; Q
  8066.   )
    2 `; J8 _1 Z1 A$ V6 `
  8067. * Z/ H: l& v9 h# W" j* h7 o
  8068.   (defun image_normalize_vector (v1)8 }/ a0 `- {  Q3 G7 W5 \
  8069.     (image_scale_vector v1 (/ 1. (sqrt (image_dot_product v1 v1))))
    5 ?. v- b6 L% d5 m: S, q
  8070.   )
    $ U: _0 K9 P6 c+ q) u" I* F; i

  8071. 2 y  \4 J. s. J5 L% I7 d
  8072.   (defun image_rotate_vector (vector angle axis / along_axis axis_x_in_rot_plane axis_y_in_rot_plane in_rot_plane)2 i7 T5 Z9 o, p: t
  8073.     ;; Normalize the axis
    3 G7 z2 C1 f$ b  o1 e6 E; T
  8074.     (setq axis (image_normalize_vector axis))
    & h0 o1 A) {0 o/ X# F
  8075.     (setq along_axis (image_scale_vector axis (image_dot_product vector axis))): \! G5 ]# ]9 D4 ]
  8076.     (setq axis_x_in_rot_plane (image_subtract_vector vector along_axis))/ x3 U4 ^1 U) u6 ^3 i9 ~+ Y) Y
  8077.     (setq axis_y_in_rot_plane (image_cross_product axis axis_x_in_rot_plane))
    / n" a3 e3 b5 W3 R* q1 |
  8078.     (setq in_rot_plane9 v% W! L& p1 [: @
  8079.       (image_add_vector# k9 q- H& n2 q8 F7 E8 B0 U' {
  8080.         (image_scale_vector axis_x_in_rot_plane (cos angle))
    ( o$ P- O, |: e* V  s8 O/ X0 |
  8081.         (image_scale_vector axis_y_in_rot_plane (sin angle)); Z! L# \# J5 C" W
  8082.       )+ I4 l, t4 m* P7 J! [9 J1 _7 R
  8083.     )" v* i) r* ~* _* U
  8084.     (image_add_vector along_axis in_rot_plane)" W; o$ V- W$ N5 r. L5 V8 x
  8085.   )  |0 S, p9 e' A  I
  8086. " k5 K- b9 Z" D
  8087.   ;;
    8 A2 Q- J; p% ~
  8088.   ;; Calculate current rotation angle if appropriate.0 u" Q& D$ R. V0 N; ~# @0 h3 g
  8089.   ;; If not, grey out the rotation field.
    7 x7 c6 z3 Q" B
  8090.   ;;
    * {4 w- v) l+ L) [
  8091.   (defun image_rotation (/ normal rlength zlength sqrt_tolerance)  u2 T7 D4 |6 V- _
  8092.     ;; Determine if image normal is codirectional with' e% ^1 h/ P8 d$ t5 K  n1 R
  8093.     ;; the current UCS Z-vector.' c, T4 h2 k0 T
  8094.     ;;0 H' h- H6 u/ \- W: Y) i2 Y8 Z
  8095.     (setq normal (trans (image_normalize_vector (image_cross_product (cdr (assoc 11 elist)) (cdr (assoc 12 elist)))) 0 1 1))7 h7 U+ h; B6 l8 j
  8096.     (setq rlength (+ (* (car normal) (car normal)) (* (cadr normal) (cadr normal))))- _0 ]) Y* r) _
  8097.     (setq zlength (* (last normal) (last normal)))
    8 \, f" _% O, x7 Q: [$ @- {! c& m- q
  8098.     ;; Note that the value .0001 in the radians is approximately 0.0057 degrees.+ }; F  p7 M) \* E4 t' L. ~6 q( }9 F) ?
  8099.     ;;
    # x5 M+ y' A3 D: K% L' \
  8100.     ;;                cos(.0001)^2* @0 p: |8 F7 G
  8101.     ;;   Tolerance = --------------8 D. C# P3 H* C8 }! m
  8102.     ;;                sin(.0001)^2. L# q" p( v. d" s5 l3 g
  8103.     ;;
    6 k- ?' G* C: c& X7 `" c1 _" F* ~
  8104.     (setq sqrt_tolerance (/ (cos 0.0001) (sin 0.0001)))
    0 V) q  l  Q9 l" M" N) r2 v9 o5 R
  8105.     (if (and (< (* rlength sqrt_tolerance sqrt_tolerance) zlength) (> (last normal) 0))
    , ~& j9 e( X" k
  8106.       (setq image:angle (angle '(0 0 0) (trans (cdr (assoc 11 elist)) 0 1 1))); j4 k9 c3 x; o7 n7 h- p6 _8 [# b
  8107.       (progn
    : P. ?0 v+ e7 c. }- X# t
  8108.         (mode_tile "st_ang" 1)
    9 f  f7 E6 L+ d
  8109.         (setq image:angle 0)
    3 v5 j6 @! g* h* N/ K: u' X& ~1 I, w7 a
  8110.       ): O3 t: F% J- y7 Z
  8111.     ); E7 Y; E$ ~0 W3 ?8 W
  8112.   )! y" p) ]) f1 v3 V
  8113. 8 y7 G8 O3 i& B, `; b
  8114.   ;;
    3 i( A# ]" G: N% V
  8115.   ;; Modify Image
      x; b% l+ p: h7 G
  8116.   ;;
    ! L% O, `5 j" F$ G- \/ E
  8117.   (defun modify_image (/ u_vector v_vector z_vector)
    2 M+ t$ r/ x( f
  8118.     (modify_properties)
    " N9 P" O4 O9 Q& F1 O$ U- |
  8119.     (setq pt1 (list x1 y1 z1))
    / [" t* M, W/ V" Y: n7 D7 n* J
  8120.     (tempmod pt1 10 0): C+ }2 u& E* B7 Q% ]
  8121.     ;; Make display option changes to image
    ; `+ ?! p7 r: p3 \% U7 O
  8122.     (emod image:options 70)
    ; Q- e' J  r0 _" v/ u! H) [& _# q
  8123.     ;; Get the u and v vectors
    2 m1 e' M; ?6 F. ^
  8124.     (setq u_vector (cdr (assoc 11 elist)))
    / k4 [  N$ K! X( p: s
  8125.     (setq v_vector (cdr (assoc 12 elist)))7 m6 k5 e( z1 g" ~9 U

  8126. # j4 \; K. M+ Z' O4 v4 m
  8127.     ;; Make scale changes to the vectors
    , s+ G; ^  U. z1 @* k6 f
  8128.     (if (/= image:mult 1)/ U1 j: G/ g! K; U5 v: ^- z) y
  8129.       (progn7 n* z$ L/ a4 G
  8130.         (setq u_vector (image_scale_vector u_vector image:mult))
    # P  K. F1 L* J8 u
  8131.         (setq v_vector (image_scale_vector v_vector image:mult))+ D3 W9 y: ^8 z1 c( T
  8132.       )
    & k+ R& Z2 d' |% Q
  8133.     )
    0 h  {8 o2 w5 \: }4 e* u5 @
  8134.     ;; Rotate the vectors& t1 p+ U* {6 p9 N9 \
  8135.     (setq st_ang (- st_ang image:angle))
    : H8 F7 V6 v" r* k7 W6 o1 P
  8136.     (if (/= st_ang 0)  A3 ?  F: h, n8 R
  8137.       (progn
    ' q' u3 P8 h6 ]  b6 Z
  8138.         (setq z_vector
    $ ]6 Z. x0 i" \3 v( v
  8139.           (image_cross_product# p$ Q! l7 A; C2 p6 h' c
  8140.             (image_normalize_vector u_vector)/ z- j' f6 [9 N& k* U; d
  8141.             (image_normalize_vector v_vector)0 L9 l# i4 L6 K0 \% E/ c
  8142.           )" R) x5 ^* T! i5 |
  8143.         )
    , q, N' v" X( h: O* P" `. X
  8144.         (setq u_vector (image_rotate_vector u_vector st_ang z_vector))# m1 ~6 W+ s% X, c
  8145.         (setq v_vector (image_rotate_vector v_vector st_ang z_vector))
    7 |4 ~& z1 e  E
  8146.       )  P0 F  k* C9 o% u* ~
  8147.     )2 k% \: m$ H8 g% \
  8148.     (emod u_vector 11)
    1 y$ J" A% j7 R0 }8 t- t- n/ Y
  8149.     (emod v_vector 12): @3 k* k: ?( R) G' O) q% p
  8150.     (entmod elist)
    ( S9 z8 z! |" }& Z7 E
  8151.   )# g* |% f& x/ S
  8152. # F; b4 Y( A; o" C+ c9 D) e- e2 m
  8153.   ;;
    , ~- t4 A7 y4 j* q
  8154.   ;; Run imageadjust on given entity, working around possible- ^  n" S% c' ^
  8155.   ;; re-entrancy problems) L- \) T2 Q3 E' L7 j
  8156.   ;;# M) k% i/ p1 _+ t: f
  8157.   (defun image_adjust (ename)
    # r( }7 Q% F$ Y$ F' S4 @
  8158.     (verify_arxapp_loaded "ism.arx") ;; make sure it's loaded...! U$ F9 y2 A! R8 W& |
  8159.     (imageadjust ename)& M5 Y% G, [9 V8 I" p
  8160.   )
    : u2 b6 s% e9 w: I) V. G6 H- K6 \
  8161. % A0 E, Z- \  L* V, g$ [/ X
  8162.   (defun ddimage ()
    1 T3 b! _2 W( q& M+ }0 G
  8163.     (if (not (new_dialog "ddimage" dcl_id)) (exit))
    ( S" s: \5 p: e- S
  8164. ; O7 L% v% n. s- n0 f! x# u
  8165.     ;; Grey out the thickness field.
    2 W3 ~8 o& a! _1 b% E& w
  8166.     (mode_tile "b_thickness" 1)
    3 J% m5 T* Y( `, Z/ e) H
  8167.     (mode_tile "eb_thickness" 1)
    6 |% l0 z* x# Y8 q" I+ m
  8168. : ]0 D# Q9 F4 @  f# a8 F
  8169.     ;; Get the associated def object.8 p. M! D* v8 D
  8170.     (setq image:oname (cdr (assoc 340 elist)))
    * ]7 G% e0 M6 c2 y5 l7 U
  8171.     (setq image:olist (entget image:oname))
    ' C5 _" T& g' ^: ~) E0 X% O
  8172. ) {/ L. b7 H: m- ?( D( g
  8173.     ;; Set initial tile values
    . b1 O7 f5 w) _+ \/ l  r
  8174.     (set_tile_props)+ ^! o. G: J8 s: [( @/ O8 c: t
  8175.     (set_tile_handle)
    ) D/ F6 T  X* @
  8176.     (set_tile_pt1 0)
    2 _  P" d1 B: I8 K1 E( V0 u* M- O
  8177.     (setq image:scale (image_scale))
    . v  v5 Z0 V! [
  8178.     (setq st_ang (image_rotation))8 I" H2 K. {) w* M/ ~, u/ o
  8179.     (setq image:width (* (distance '(0 0 0) (cdr (assoc 11 elist))) (cadr (assoc 13 elist))))4 b( S: A+ |2 A! I8 v
  8180.     (setq image:height (* (distance '(0 0 0) (cdr (assoc 12 elist))) (caddr (assoc 13 elist)))): a7 ~9 A/ o/ P6 J& p+ @& Q
  8181.     (setq image:options (cdr (assoc 70 elist))), [$ y/ _; l- A. \7 d, v: I# e9 \! |

  8182.   R) {7 w* S8 J$ c) E2 X- `
  8183.     ;; Record the last multiplier for use in image_update function
    % w( _( k, O) G- X* h1 Q1 s
  8184.     (setq image:mult 1)7 f( U  a2 z7 e' k
  8185. . i& e( S: X( ^
  8186.     ;; Retrieve the image name1 p, H4 N# V1 @1 S! h' r
  8187.     (setq fn (reverse (dictsearch (namedobjdict) "ACAD_IMAGE_DICT")))% _8 \% K7 O5 t6 I2 r3 w8 j
  8188.     (setq flag 0)$ g- e* F+ k* o9 D7 Z
  8189.     (foreach n fn# n: N! B8 W/ f+ |9 _4 b8 r
  8190.       (if (= flag 1), q  z4 Y/ k: W* K1 B  @  w
  8191.         (progn
    ; s; r% U9 R3 ^) g
  8192.           ;; Display the image name
    1 T0 E7 s$ B: Q$ l
  8193.           (set_tile "image_name" (cdr n)): w- x- {5 K& ~" D
  8194.           (setq flag 2)0 d& j  o/ I& S
  8195.         )7 R2 ]9 I- S0 q
  8196.       )
    * u# v" Z) }# L8 }2 B1 O$ F
  8197.       (if (= flag 0)
    5 B1 o) P0 v1 N% {; K! u
  8198.         (if (equal (cdr n) image:oname) (setq flag 1))* N% a9 E$ ~! \+ H! g* V0 @$ l* l
  8199.       )
    + U/ Y6 a- e" O! y* O
  8200.     )
    5 m+ ?/ U8 f" E# y7 Q; P5 M
  8201. 7 z/ |3 @- N. g! I) S, R( J8 {
  8202.     (set_tile "image_path" (cdr (assoc 1 image:olist)))3 l; {  x: F; N6 }5 m
  8203.     (set_tile "st_ang" (ai_angtos image:angle))
    , X) g: s4 x3 h/ j7 i
  8204.     (image_set_tile_scale)
    ; y# h. B8 o' A4 e5 W% v/ B4 O

  8205. 9 V: `* ~+ [3 d7 E* U
  8206.     ;; Check the appropriate boxes4 Y' [" v1 s# c4 _+ F  D! k
  8207.     (if (/= (Boole 1 image:options 1) 0) (set_tile "image_show" "1"))
    6 _4 l  f3 E. I6 y7 s8 k# \' v- U
  8208.     (if (/= (Boole 1 image:options 2) 0) (set_tile "image_non_ortho" "1")). e% D: J+ ?$ S: y- m" S1 R4 a
  8209.     (if (/= (Boole 1 image:options 4) 0) (set_tile "image_clipped" "1"))3 P6 a# F; q* U: p) P
  8210.     (if (/= (Boole 1 image:options 8) 0) (set_tile "image_transparency" "1"))! D( a# `5 t4 ^8 O

  8211. ) R: w2 @2 d' _. d7 F% T9 A6 u
  8212.     ;; Define action for tiles9 u4 U( S# g* `
  8213.     (set_action_tiles)
    0 A# R& S0 i9 L# j" t5 D
  8214.     (action_tile "xscale" "(image_update \"xscale\" $value)")/ U- {! _9 x* C2 S$ Z2 [
  8215.     (action_tile "st_ang" "(ver_ang1 $value)")' j. z% X, w7 b! \
  8216.     (action_tile "wid" "(image_update \"wid\" $value)")
    $ I% j7 Z8 f9 {' J
  8217.     (action_tile "hght" "(image_update \"hght\" $value)")7 K2 u: e+ i2 ]
  8218.     (action_tile "image_show" "(image_disp_opt 1)")' j0 h' e- r/ M3 d
  8219.     (action_tile "image_non_ortho" "(image_disp_opt 2)")
    " P. |* c" M' @/ \6 j
  8220.     (action_tile "image_clipped" "(image_disp_opt 4)")
      u% q9 ?# h, K
  8221.     (action_tile "image_transparency" "(image_disp_opt 8)")
    ) k. }* V5 T9 p0 q
  8222.     (action_tile "image_adjust" "(done_dialog 4)")7 t; z. Z1 ?+ j* A0 }1 Q
  8223. ( ~6 j; N  a. D/ C5 e
  8224.     (setq dialog-state (start_dialog))* [9 j1 y# M% N
  8225.     (if (= dialog-state 0)1 c) I; G- r: o) A
  8226.       (progn. w% h3 ^" G  v2 p% [) N; |
  8227.         (reset)! z5 |$ t8 `4 y6 U/ B$ @) I% _' x9 b
  8228.         (image_clean_variables)
    3 B& d  N7 I: U/ _; N
  8229.       )( O4 {# Y4 |5 l7 b/ l. P/ U( @
  8230.     )
    " K$ ]2 G; R, l/ }/ g1 i' z
  8231.     (if (= dialog-state 1)8 L& a6 C; `$ c% a1 m
  8232.       (progn: L5 o# z9 I0 q) C. Z$ l' ^
  8233.         (modify_image)9 B8 s' q8 O9 S3 Z5 _. ]( P2 ]8 I
  8234.         (image_clean_variables)- H. P# B1 ~' s
  8235.       )# ?' k  D  W% |$ H; @0 }
  8236.     )& M* p  Q  ^2 }, V! u3 }& A* g
  8237.     (if (= dialog-state 3)
    ) e$ f/ J  A' R  Y" O
  8238.       (progn- c2 l9 b! i: C7 j+ p8 ^
  8239.         (modify_image); ]! k# j! y$ D3 B/ n( X1 [7 U
  8240.         (image_clean_variables)
    . V% u6 L* E: I
  8241.         (setq pt1 (getpoint (list x1 y1 z1) "\nNew Insertion Point: "))
    ! f2 C, S2 S* X- K. w
  8242.         (ver_pt1 0). w; ~; ]3 J; e# x: q3 x) X
  8243.         (ddimage)
    # N4 Q) c3 }8 n8 G) i
  8244.       )
    , w4 C9 {3 R. ]+ h% C
  8245.     )
    4 e2 Y2 `* U4 r/ S% B
  8246.     (if (= dialog-state 4)
    9 Y$ u- Y' \$ P$ p
  8247.       (progn
    + E' H5 Q3 T" M  X& t+ q3 S  I
  8248.         (modify_image)6 @: U+ D1 ]0 t
  8249.         (image_adjust ename); I7 |. j8 k1 U
  8250.         (setq elist (entget ename))
    1 ]9 A& ]2 a1 `9 a- k5 J! U: E* T0 U" }- h
  8251.         (ddimage)
    4 a6 u" W! e& I7 N. n; \! }
  8252.       )
    , J, I8 f0 o, _3 s/ D& a
  8253.     )+ V1 g; @2 J, a! L6 N
  8254.   )6 V, N3 U" A7 A' B& W

  8255. , x- l( X( F/ w6 l& \
  8256.   ;;, `7 x; n- n8 w3 n/ s
  8257.   ;; Modify BLOCK (and its Attributes, if any)
    & G# T; g2 Z; l1 A" g
  8258.   ;;. @: z) l/ E% }! p& A
  8259.   (defun modify_block ( / el en2 p1 p2 oldp1 oldp2 new_hgt old_hgt attr
    3 L- \2 B: M0 L) s; |/ x+ K+ Y, J
  8260.                           new_wid old_wid old_rot scaling old_scale
    3 a: v, {- f, c6 k% g' H, w* P
  8261.                           xdelta ydelta zdelta xbase ybase zbase ipos)
    , M$ d4 v- ~$ q0 H8 W4 ?  o! Q3 M
  8262.     (modify_properties)
    0 {; S; g' G0 m- X! ~
  8263. 1 ?0 |2 z) |5 W5 @4 s
  8264.     ;; First, translate and scale the Attributes, if there are any.. m5 }2 ]% Q+ p" z6 Y, h
  8265.     (setq old_rot   (cdr (assoc 50 elist)). I) _9 V' G' c- K
  8266.           old_scale (list (cdr (assoc 41 elist))
    % K/ }& S1 W1 |  ~; A5 d" s
  8267.                           (cdr (assoc 42 elist))
    8 O6 R: f5 P; l! ]& j9 Q
  8268.                           (cdr (assoc 43 elist))1 S4 h( e3 t3 P  ~; V1 D6 R
  8269.                     )
    , e( w& _6 R; k
  8270.           scaling   (or (/= xscale (car   old_scale))
    ! S& [' A: g) y5 S' k1 d4 s
  8271.                         (/= yscale (cadr  old_scale))  n+ _1 t- J8 L+ r  S* n) L) z
  8272.                         (/= zscale (caddr old_scale))% b  L" x% H, D. e& Y6 c
  8273.                     )  F, H& U6 {/ _0 J% T3 E
  8274.           attr      nil               ; No Attributes modified yet  J9 n( D) n* b, r" M+ q+ Q: m, ^
  8275.     )
    & c' O( R9 c" e* M6 I" T
  8276.     (if scaling
    2 T  ~& {7 q5 N, [( M
  8277.       (progn
      g6 W) z2 `# X/ Q8 w
  8278.         (setq xdelta (/ xscale (car   old_scale))
    ; z) C/ [' ~( q
  8279.               ydelta (/ yscale (cadr  old_scale))4 G& V9 z" ^8 L& z5 |! Q
  8280.               zdelta (/ zscale (caddr old_scale))
    9 }+ a6 N5 H8 A, E8 f  E% i" X
  8281.               ipos   (cdr (assoc 10 elist))$ L$ }: x7 _5 r  v' v- ~. ]
  8282.               xbase  (car   ipos)* _( W1 _& U+ G1 f& f/ N
  8283.               ybase  (cadr  ipos)
    $ D8 [# [% E9 m0 p: D( @2 G
  8284.               zbase  (caddr ipos)
    4 L- w3 ^( g- ?
  8285.               en2    (entnext ename)  ; First Attribute
    9 Y1 E/ W9 e( s4 e. e1 k9 y
  8286.         )) ]/ D; J$ W3 x; W0 k* |
  8287. ( L" f4 v- t7 }6 n* `
  8288.         ; If the Block is rotated, temporarily un-rotate it, along
    7 W% i/ z) T& I
  8289.         ; with all its Attributes, so the scaling/translation of the
    $ Y+ |1 F  T7 N0 N7 C
  8290.         ; Attributes won't have to take the Block rotation into account.
    6 i. R( Z: {/ X# p* @& a
  8291.         (if (/= old_rot 0.0)
    : e/ K* f" ?1 n; L6 l# x" T
  8292.           (progn
    5 l9 I9 {' O. P$ H& U
  8293.             (command "_rotate" ename "" pt1 (ai_angtos (- old_rot)))
    4 R% o: S+ K6 k/ ?; w  u/ A7 U( E' E
  8294.             (setq old_rot 0.0
    $ y+ T+ M9 V. M7 d2 l( g
  8295.                   elist   (subst (cons 50 0.0) (assoc 50 elist) elist)
    % K) l3 W1 y% Z: d9 Q" W, J
  8296.             )0 X' X/ O% Q/ a" I3 h$ v: ?9 |- K
  8297.           )9 {% O7 g0 {% Q6 _
  8298.         ): T+ I1 G& \# l0 d# x

  8299. 1 H- f0 T. ^1 N2 `0 d+ \
  8300.         (while en2
    6 B0 w/ H, ?" X4 ]6 ?& U
  8301.           (setq el (entget en2))0 f+ B( S" l3 O- f. s% R
  8302.           (if (= (cdr (assoc 0 el)) "ATTRIB")
    4 D0 c, i3 q7 }) C" o! i9 Y) c
  8303.             (progn# M, p0 E: z' F8 w0 i1 X# [
  8304.               (setq old_hgt (cdr (assoc 40 el))  ; Height6 f$ l6 z$ v' V5 Z  ]
  8305.                     old_wid (cdr (assoc 41 el))  ; Width-factor
    ; m% D1 I& B6 [6 H: T/ w1 ~
  8306.                     oldp1 (cdr (assoc 10 el))  ; Generation start point
    5 h+ ?$ S' B/ ^1 s" N
  8307.                     oldp2 (cdr (assoc 11 el))  ; Optional alignment pt
    . c/ p/ ?" u( C: d
  8308.                     ha    (cdr (assoc 72 el))  ; Horizontal alignment5 Z, B+ Y2 ~  n! o( Z8 J
  8309.                     va    (cdr (assoc 74 el))  ; Vertical alignment
    * T5 b" i5 s0 k# f: t
  8310. . U3 O. {) F3 A% I- {- x
  8311.                     ; Translate gen. start point  u4 h5 V0 k& x) P# @0 s
  8312.                     p1    (list (+ xbase (* xdelta (- (car   oldp1) xbase)))8 N! @4 [( W% b( @
  8313.                                 (+ ybase (* ydelta (- (cadr  oldp1) ybase)))
    + E7 B+ N, v% ~8 _8 Y' g
  8314.                                 (+ zbase (* zdelta (- (caddr oldp1) zbase)))
    ( a( r# N" ]% E% h6 I
  8315.                           )
    ( U& s' W8 |/ T7 {+ `4 [+ b
  8316.                     el    (subst (cons 10 p1) (assoc 10 el) el)
    3 P5 E# W6 j- ^  ]% M$ ?
  8317.               )( m3 G5 F! [9 C( m1 ?

  8318. ' _' R* [9 O! u+ l, _# V: C+ R# v& L
  8319.               ; Translate alignment pt similarly, if present and applicable, ?* B7 e) G* W
  8320.               (if (and oldp2 (or (/= ha 0)' ]5 ]4 |' m) b& d1 L) _
  8321.                                  (/= va 0)1 e+ a- }9 `* x* j2 u
  8322.                              )
    ! ~. G6 ~; S- n% |
  8323.                   )- O8 F8 k6 }/ t  o1 }5 p
  8324.                 (setq p2 (list (+ xbase (* xdelta (- (car   oldp2) xbase)))7 T2 ~& A, ?0 P
  8325.                                (+ ybase (* ydelta (- (cadr  oldp2) ybase)))1 U$ V9 H1 G) {+ T
  8326.                                (+ zbase (* zdelta (- (caddr oldp2) zbase)))7 s% E4 ]& g) C  t# n
  8327.                          )% T4 X0 \3 v- \% j0 ?
  8328.                       el (subst (cons 11 p2) (assoc 11 el) el)
    ' D6 x: w& H+ x4 W* A1 q2 v
  8329.                 )
    2 R7 [& S3 x$ x0 N8 F5 U
  8330.               )4 B& c. ^+ g7 t

  8331. 3 @+ N8 e- Y2 n) M/ E/ W- Y, d' n
  8332.               ; Each Attribute's height and width-factor were computed" M0 I( _, _' o9 V; Q
  8333.               ; based on the Block's scale factors.  Adjust them now,
    1 H3 q8 E2 c" N2 t! J& [* s$ o
  8334.               ; by first reducing to values for 1x1 scale...
    7 P2 B3 R& _- D9 V0 p! y9 L
  8335.               (setq new_hgt (/ old_hgt (cadr old_scale))( E& H0 T% x4 Y
  8336.                     new_wid (/ old_wid (/ (car old_scale) (cadr old_scale)))
    0 M, c5 \" J( m( i* S
  8337.               )5 j- r6 o  ?& @8 Q
  8338.               ; ...and then rescaling.
    " l5 W. L1 j$ m5 r' R
  8339.               (setq new_hgt (* new_hgt yscale)  M2 A+ Y! H  J8 k: d/ [
  8340.                     new_wid (* new_wid (/ xscale yscale))2 i0 U7 c; G+ b( h1 p/ I* W6 i
  8341.               )
    + q9 \5 G+ C  R  W( c6 C' U' r
  8342.               (if (/= new_hgt old_hgt)$ T. g/ f, |' @2 t  X7 X
  8343.                 (setq el (subst (cons 40 new_hgt) (assoc 40 el) el))
    0 g: w3 F, J1 O/ I4 L: X
  8344.               )& [+ a& x6 P; i
  8345.               (if (/= new_wid old_wid)
    ' C( v) r& l1 F
  8346.                 (setq el (subst (cons 41 new_wid) (assoc 41 el) el))/ ?4 G& N1 |. R0 r' ~
  8347.               )
    , y4 T) @% p0 m& W2 e+ r
  8348.               (entmod el)/ Q. R6 o/ `+ T, Q/ r& @& ~; h
  8349.               (setq attr T             ; At least one Attribute modified
    . I$ Z  V4 X: n* M! I
  8350.                     en2  (entnext en2) ; Next Attribute
    + R. g1 b* e. {8 `- t- n, t! w/ J0 D
  8351.               )
    % O4 D7 k- x# o8 E& ^6 l: q' L
  8352.             )+ l( M7 g/ `+ y9 m# K
  8353.             (setq en2 nil)          ; No more attributes$ F$ |9 C6 R- w! j3 f
  8354.           )) R; p2 k5 h) m) v! q
  8355.         )8 u& C5 N0 t6 I9 w- Y$ Y: Y, Y; v
  8356.       )1 R, P+ M' @+ ]4 t* W  O! f1 G
  8357.     )
    / m; ^* {# K% L" S( K& f. I
  8358. ) t/ K& t# _, y2 K; ~6 Y- p
  8359.     (setq pt1 (list x1 y1 z1))
    $ l8 j1 w2 H) u+ p2 C$ Y  i, v
  8360.     (tempmod xscale 41 nil)
    2 x( s. y' I4 X' ]
  8361.     (tempmod yscale 42 nil)5 M3 P' {# H' e* w8 }
  8362.     (tempmod zscale 43 nil)  I' h( P2 g+ N8 @& M
  8363.     (tempmod col-sp 44 nil)3 _; Y  V5 c: h6 t; z
  8364.     (tempmod row-sp 45 nil)8 v9 M; z( ]6 Q
  8365.     (tempmod columns 70 nil)
    1 `9 k, h2 I, C2 O) T5 ]1 W& I7 ?0 h
  8366.     (tempmod rows 71 nil)+ Q7 l/ M* p8 b& b) Q* ~
  8367.     (if (= xclipmode nil)
    : G* N: @2 o1 D  R" Q' f, c" F
  8368.        (entmod elist)& U: ]$ y& F2 z
  8369.        (setq xclipmode nil)
    ' Y9 {# v  d8 J
  8370.     )
    $ ~0 N4 @" \* {( F0 W5 `# z
  8371.     (move_pt1 1)
    - R4 F$ R% z9 C# e) Q
  8372. ) a( b* _( t: `7 S
  8373.     ;; Now do the rotation with the ROTATE command.: y& ^3 R( D5 E* e
  8374.     (if (/= old_rot rot), i% K; F8 ?# w2 f
  8375.       (command "_rotate" ename "" pt1 (ai_angtos (- rot old_rot)))
    " [7 F4 P, K8 F% M8 Y, e" I8 M6 ]: I
  8376.       (if attr                          ; Else, if attributes were modified,
    # Y& f# y7 {# H6 G" v
  8377.         (entupd ename)                  ;   just regen to force attrib display
    . R7 L; W0 t% |  v2 U# S$ c2 X' t
  8378.       )
    8 q, v1 M( A& p) Y* t
  8379.     )8 I/ Z! O6 p2 E! K7 w
  8380.     (setq elist (entget ename))1 M8 {; t) e) `2 O' C
  8381.   )3 O; w+ J" B& C1 ~, n3 F4 j
  8382.   (defun ddblock (/ temp temp_xclip newhatch blkname blklist blktype program xrefpath)2 s0 U/ v" L. A, x0 w9 E' ^/ P
  8383.     (setq newhatch 0)
    9 f' ?# Y2 Z1 e* Z2 w  _2 H
  8384.     (setq blkname (cdr (assoc 2 elist)))
    , r. X( H, \1 N8 m
  8385.     (setq blklist (tblsearch "block" blkname))
    ( q9 @# K% t0 F) y& l
  8386.     (setq blktype (cdr (assoc 70 blklist)))% ]8 \  \" r  ?+ X! A3 }  Z/ u
  8387.     (setq xcliponoff 0)
    5 N; R1 X/ v' w) B6 t6 L
  8388.     (if (or (= blktype 0)(= blktype 36))
    / y' ^" O( f, e4 d! ?
  8389.             (progn
    / X* B; R2 H( A5 U% G
  8390.               (setq xcliponoff (xclipon elist))
    5 ~% ?2 [4 l* G6 D% K7 w
  8391.           (setq temp_xclip xcliponoff)/ H4 I5 r. [5 K5 c* o' I  F; k
  8392.         )
    ) z* a9 P7 G$ v
  8393.     )/ F& x4 }6 X* B% C8 F. m
  8394.     (if (= (logand blktype 4) 4)
    2 e0 s3 R  o  Z% |9 d1 p# b
  8395.       (progn
    & Q( C0 v" \- t. z1 L
  8396.         (setq xrefpath (cdr (assoc 1 blklist)))
    + _: }+ ?) \* q8 e8 [. ?  j; O
  8397.         (setq help_entry "modify_External_Reference_dialog")3 W) P" z! Y: S8 W7 y6 m) G
  8398.         (if (not (new_dialog "ddxref" dcl_id)) (exit)): @. w* ]$ q4 U3 M, w. J
  8399.         (set_tile "Bl_name" blkname)9 |5 ^! p3 O) c
  8400.         (set_tile "path" xrefpath)& x$ R) C, U; u: q% t
  8401.       )+ J# L* K+ d# {: d7 W% X
  8402.       (progn1 g2 Z& A) E$ W
  8403.         ;; Get program name for use as Xdata app name, {. B2 a2 R: W* E: r1 \
  8404.         (if (not (setq program (getvar "program")))
    0 l' w& _! t+ J' k4 F
  8405.            (setq program "acad")/ A' M$ [6 k( z/ W% l
  8406.         )  e& U1 {) }- W4 S
  8407.         (if (and (setq temp (assoc -3 (entget ename (list program))))
    3 q" ~$ u- w9 \. g
  8408.                  (= (cdr (assoc 1000 (cdadr temp))) "HATCH")$ ~9 t! F4 H$ ?/ Q7 d
  8409.                  (assoc 1005 (cdadr temp))! _- G3 B3 `7 E
  8410.             )
    7 b* T0 N4 _5 ^4 _, K* D
  8411.           (progn
    / _5 i3 l( G8 ~3 t$ @, f
  8412.               (setq newhatch 1)
    2 [. W5 K( P0 s8 N: J6 m( m, ~: `
  8413.               (setq help_entry  "modify_Hatch_dialog"); b+ m2 ]' _, @
  8414.               ;;; convert the object into a new hatch
    1 P. S+ ]% a: y. Y  d9 F
  8415.               (ai_undo_on) ;; enable undo" D( v5 j+ Z9 H7 L* w' I( M/ S% s
  8416.               (COMMAND "_.UNDO" "_Mark")2 W: M2 Z/ |$ B$ V5 o2 l4 Q
  8417.               (COMMAND "_.CONVERT" "_Hatch" "_Select" (cdr (assoc -1 elist)) "")) l8 n" f/ p' [. ^0 L- J: O& a% H
  8418.               ;;; suppress nasty message from convert command8 \: c! J" r4 p! u2 W+ ]& u  T4 G$ \
  8419.               (princ "\r                                                                      \r")
      h6 i/ W( ]+ G5 }2 m, q
  8420.               (setq elist (entget (setq ename (cdr (assoc -1 elist)))))- S  j$ _. E1 D1 ?7 E* s
  8421.               (setq old-elist elist)
    7 n9 ^& i8 u! ^) _
  8422.               ;;; If we have cancelled ddmodify
    . v% E: V) ^; g$ a6 D2 T
  8423.               (if (not (ddnewhatch))      ;;; (ddnewhatch) returns nil for Cancel or T for Ok0 o- w/ ~5 i& B* C; O
  8424.                    (command "_.UNDO" "_Back")* L3 G4 Y! j# m% |4 P
  8425.               )
    6 x; {' y- b  ?9 E$ a
  8426.               (ai_undo_off) ;; restore undo state
    7 X& S! h# n3 n6 @6 Z' l6 g: `
  8427.           )
    2 S; s8 i$ i- u5 C9 C; v
  8428.           (progn
    # q3 Z6 x4 N# A2 Q- e* K* z
  8429.             (if (not (new_dialog "ddblock" dcl_id)) (exit))2 q" f1 [1 Q: K+ _% A7 P2 `
  8430.             (if ( = "*" (substr blkname 1 1))
    , U. i3 g! t3 D" I5 c1 h4 ~
  8431.               (set_tile "Bl_name" (strcat blkname " - Anonymous block"))
    " m% }4 @5 h, `  S
  8432.               (set_tile "Bl_name" blkname)+ a) k5 r7 o+ H% [5 o
  8433.             )
    3 b* d9 O. p9 r) j. H  F
  8434.             (setq help_entry  "modify_Block_Insertion_dialog")
    ; p; ^! s1 l* G3 M
  8435.           )
      A! a1 E! H5 x2 r
  8436.         )  K4 l+ D1 y& k- P1 K
  8437.       )' R& f" d8 G- l9 K
  8438.     )
    . F# c! o% r* j7 c- S+ z: t/ P
  8439.     (if (= newhatch 0)% \+ k  N- n0 o+ [* I1 `$ J* [
  8440.       (progn
    * H9 v! \1 I& T% D
  8441.         (set_tile_props)
    4 c4 ~! r) \+ Z/ f8 A
  8442.         (set_tile_handle)
    - [7 P# h9 \, G( k: U7 {
  8443.         (set_tile_pt1 1)  E4 ~! c1 f3 Z3 C
  8444.         (set_tile_rot)
    ! X+ v3 Y& I! |) s* f
  8445.         (set_tile_scale)
    % E) T1 ~& `8 U- l6 q0 W6 ~
  8446.         (set_tile_rc)
    0 a; x, i2 A, w
  8447.         (if (= (logand blktype 1) 1)
    $ f1 S$ x  G; ?% K# F
  8448.           (progn
    9 Q/ p" [  t  j) k6 _$ r$ _; _
  8449.             (mode_tile "xscale" 1)
    ( S  A) [  _, }/ e
  8450.             (mode_tile "yscale" 1)* w. |- ?; \/ @" ?4 K0 k* j% o
  8451.             (mode_tile "zscale" 1)* D, F! a2 R: g! O
  8452.             (mode_tile "rot" 1)( K( X$ t5 ]: i* B
  8453.             (mode_tile "columns" 1)& ~: b" r' A1 r6 N' t
  8454.             (mode_tile "rows" 1)
    1 A& z3 q* X- e* g; G
  8455.             (mode_tile "col_sp" 1)- H8 K: j. q2 W8 W
  8456.             (mode_tile "row_sp" 1)
    9 S  [" a4 C. U2 T8 `
  8457.           )
    ' t: S( j; j+ s( L% E) L: r+ m
  8458.         )
      b% p% M# p0 b8 S) x1 t
  8459.         ;; Define action for tiles( K9 e, R4 t9 U* u/ W% E
  8460.         (set_action_tiles), T1 d% [+ {  Q, D6 u" G" E7 ^
  8461.         (setq dialog-state (start_dialog))
      V+ Z& g' ~! |6 G; \
  8462.         (cond
    8 R7 ]6 z) e. a7 z; C$ X
  8463.            (  (eq dialog-state 0)* k7 L, B1 `: X2 P! @) k1 M
  8464.               (setq pt1 (trans (cdr (assoc 10 old-elist)) ename 1))
    % _2 E! f4 u; v+ z5 Y
  8465.               (move_pt1 1)( V" c6 S. c5 W& Q9 A5 }0 M
  8466.               (reset))
    ; U- o% ]. V" E, i) X2 g  i* z
  8467.            (  (eq dialog-state 1)
    1 @$ d* k  H+ }+ ]' B
  8468.               (if (and (/= temp_xclip xcliponoff) (or (= blktype 0)(= blktype 36)))6 ^% c* n) U# J  f; _
  8469.                 (xclip)3 U, L$ \7 \, e  W" q' ^4 o- f
  8470.               )5 a: B9 @6 J/ r
  8471.               (modify_block))
    + j! J) O2 W2 t
  8472.            (  (eq dialog-state 3)0 ~0 U; M# ?  ^1 }* l1 |0 e0 N8 L7 e
  8473.               (modify_block)
      w) s+ h% Z2 M0 B
  8474.               (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    : e# v- ^5 z+ z# z* G$ R
  8475.               (move_pt1 1)
    ( V# g9 m  C0 _+ ?' Y/ b- o  m
  8476.               (ddblock))
    # [4 R' `8 J1 W1 p5 u
  8477.            (  (eq dialog-state 4)
    $ L" l$ T9 g; s6 U$ [
  8478.               (modify_block)! @/ C. Y2 I+ a% S% Z  ?: u( ^
  8479.               ;; Get current handle.
    ; \# @+ x0 w- F4 U+ m5 i
  8480.               (setq hand (cdr (assoc 5 elist)))6 h, p& f$ V. v; q) J! T7 R  W8 I
  8481.               (command "_hatchedit" ename)
    , Z& J3 @5 N! e: x1 S
  8482.               ;; If OK in hatchedit, a *new* entity is created and the old one
    - ^! u. L  f8 O* {5 s
  8483.               ;; is deleted.  So if the old one exists, it must have been a" W# R" C9 ]/ h% k3 i
  8484.               ;; so rest the entity.! G" [0 S' u9 A  @. j
  8485.               (if (entget (handent hand)) (reset))9 u; Y  s3 _9 E* B( o
  8486.            )
    - V$ M8 V; S5 N8 o
  8487.         )# v% W- B0 |& Z1 e/ d# o( v" X
  8488.       )
    9 E' o6 ]) b- a
  8489.     )
    ( d5 X3 [: N! T# d$ {# b# [2 [
  8490.   )6 ]8 h9 N: {2 {- u
  8491.   ;;9 C2 _1 q" f+ A, k5 z7 J
  8492.   ;; Modify SHAPE
    6 L! Z( U5 p9 A, l
  8493.   ;;% p% T8 [3 n- I8 \4 W8 n
  8494.   (defun modify_shape ()
    8 J) e9 W8 F& r
  8495.     (modify_properties)
    1 q' B) i0 @  z5 D/ ~- N, `  [
  8496.     (setq pt1 (list x1 y1 z1))" Y6 K& @* Y* x2 e7 I) S5 L
  8497.     (tempmod pt1 10 1)
    " J6 I: T/ V0 d. S: b; X
  8498.     (tempmod hght 40 nil)
    # p. P; U. R1 M: s
  8499.     (tempmod wid 41 nil); z4 {" p; S$ ^# C" b# d* f
  8500.     (tempmod rot 50 nil)
      {- f9 {6 P( T% q+ z  S2 ~4 }
  8501.     (tempmod obl 51 nil)1 K" M1 X# j( @/ o: w
  8502.     (entmod elist). A0 V2 D( U$ i. c0 t# y0 V
  8503.   )5 j% H  b0 |9 D% }$ ]  u/ v0 s
  8504. 0 ^: z" [! k! c/ B# k
  8505.   (defun ddshape ()0 K8 ~! F: h8 [+ [
  8506.     (if (not (new_dialog "ddshape" dcl_id)) (exit))
    + W1 E8 [' o- O
  8507.     (set_tile_props)# _+ [, _3 u+ J( ?. i" \7 K% Z1 t
  8508.     (set_tile_handle)! ]0 n, N7 v' t( U. f' z. Z6 t
  8509.     (set_tile_pt1 1)9 r4 J8 h1 Y' F
  8510.     (set_tile_rot)9 `! `" n- r' K, i  m
  8511.     (set_tile_hght)% f% p$ P- V/ @5 A$ c
  8512.     (set_tile_wid): x0 y% s& Q' [; C( a
  8513.     (set_tile_obl)
    2 m/ l9 C" I( w7 R
  8514.     (set_tile "sh_name" (cdr (assoc 2 elist)))0 g) r1 o' b& z+ A- m6 @. c
  8515.     ;; Define action for tiles
    ( ?2 e* O4 X9 u9 n. D2 O# L
  8516.     (set_action_tiles)
    ! d& g2 [" n  D( x! Y
  8517.     (setq dialog-state (start_dialog))% [) d3 y! n7 ]5 a8 F1 a! P- L
  8518.     (if (= dialog-state 0)7 \! h# E- }: k6 D9 y9 A" u
  8519.       (reset)
    5 {0 R5 G+ W* i/ I! ~: U
  8520.     )
    6 A4 m; Q6 P! b3 \7 ]
  8521.     (if (= dialog-state 1), ~: Q% y& X3 R
  8522.       (modify_shape)
    . ^' w% y2 s& q
  8523.     )8 _8 b/ q0 H' o# y8 E# E
  8524.     (if (= dialog-state 3)4 v6 R. S# }/ }6 ~
  8525.       (progn
    ) \2 l$ |9 E, [7 ^; P6 s
  8526.         (modify_shape)
    ( d" x3 j$ {5 x4 N" Q! V
  8527.         (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    / J" T) F# L3 ?" v- B8 c$ J
  8528.         (ver_pt1 1)# d, C3 r, q8 x) N& T0 ?: `
  8529.         (ddshape)' {' \6 Z) d7 Q6 \8 X
  8530.       )$ Y8 W1 N2 d! w  s. c
  8531.     )( w7 D4 l$ H# Y! g
  8532.   )
    ! @* E1 G1 |4 w, F$ d# ~& P
  8533.   ;;& q! W! [) A0 k, ^
  8534.   ;; Modify TEXT or ATTDEF$ s5 O" z( w9 ], r" o0 L5 s
  8535.   ;;
    2 \# h& F3 q/ b% z# S& ]) Q
  8536.   ;; Set bit code for upside-down and backwards setting) c- ?, _/ E+ P* g& ?" r" l3 D5 V& x
  8537.   ;;# Z" \# b' c( z" f* D
  8538.   (defun code_71 ()1 F1 q3 o( q  Q; H' O; L9 u. ~2 ~
  8539.     (cond ((and (= bkwd "0") (= upsd "0")) 0)
    . ]: t% N) v+ ?+ e
  8540.           ((and (= bkwd "1") (= upsd "0")) 2)
    3 R; Z4 F6 I# S' [
  8541.           ((and (= bkwd "0") (= upsd "1")) 4)
    % d/ P" }4 \9 j  ^
  8542.           ((and (= bkwd "1") (= upsd "1")) 6)- X& ]* K2 A! W5 }4 |6 l( S5 c
  8543.     )
    : f  S6 P  b& E5 ]/ O2 [9 @
  8544.   )! a+ ~: ]% M* t
  8545.   ;;
    , Z% O( w, ?: q0 \% P+ e
  8546.   ;; Style action.  Reset widget values to style defaults: I7 _& E. d3 [. m, B( \: _' s, l) K
  8547.   ;;9 f. y' s0 B  z! K) c4 m3 t
  8548.   (defun style_act (index / style-list)# T6 y: f. R! \6 j: w( X& ~
  8549.     (setq style-idx (atoi index))
    % e. k; v, L* ~. |9 h0 d
  8550.     (setq tstyle (nth style-idx slist))
    4 h' N/ X% X' ^3 }0 m+ L. i/ j' M
  8551.     (setq style-idx (itoa style-idx))
    5 e; F! l+ r' T2 Q
  8552.     (set_tile "style" style-idx)6 g$ ^# b3 d7 @# \" [: f
  8553.     (setq style-list (tblsearch "style" tstyle))
    1 \) g6 n0 t2 ?: _& c1 l( w3 |! A+ V
  8554.     (setq shght (cdr (assoc 40 style-list)))
    & K1 m2 r, d1 ~  k& C& y/ h
  8555.     (if (/= shght 0)
    9 m# L" I! |+ u! [; u
  8556.       (progn' e! L$ u+ `2 _5 E4 W
  8557.         (setq hght shght)
    ; V1 V5 w8 [' X- K8 H
  8558.         (set_tile "hght" (ai_rtos hght))
    , l* b  j" \# I$ V2 t! R- U
  8559.       )9 h) A6 g, U# E. U) o
  8560.     )
    8 L7 t& t1 @7 }+ X, B! w- G1 X; ~
  8561.     (setq wid (cdr (assoc 41 style-list)))* a9 m8 D# \$ B6 C* Z
  8562.     (set_tile "wid" (ai_rtos wid)). ]' w; A, O; A, u# ~% i7 Y
  8563.     (setq obl (cdr (assoc 50 style-list)))
    + R# r2 Y  E$ e5 ^
  8564.     (set_tile "obl" (ai_angtos obl))
    3 O' T) f  R' C# y- [' r( U: S
  8565.     (setq bk-up (cdr (assoc 71 style-list)))1 G4 p: K' ^! @4 r: Z! V( c3 d. f7 }7 m
  8566.     (if (= (logand bk-up 2) 2)
    & r: v4 `8 ]1 t/ S, [- D8 v
  8567.       (set_tile "bkwd" (itoa (setq bkwd 1))), \( c- d/ \- a5 R
  8568.       (set_tile "bkwd" (itoa (setq bkwd 0)))) n) V4 _8 X' }/ ^
  8569.     )
    , U' k* n2 c0 }
  8570.     (if (= (logand bk-up 4) 4)& h  {% J7 x4 |7 S  m5 X4 o/ v3 l
  8571.       (set_tile "upsd" (itoa (setq upsd 1)))
    - L2 V3 k, s) @7 L; I
  8572.       (set_tile "upsd" (itoa (setq upsd 0)))$ D5 ]3 r2 U" M5 i8 f
  8573.     )
    ( s  x( r6 o/ W
  8574.   )
    ( p8 ~8 I2 y' A8 G4 ?! K
  8575.   ;;) {+ d; ]- _# ?
  8576.   ;; Justification action.  Set vertical and horizontal alignment variables,4 p% l* n" F- [  f, z! d- ^
  8577.   ;; grey out rotation and height if alignment = "aligned", grey out rotation* {6 H, G$ j& L& j) K/ P- h; J
  8578.   ;; if alignment = "fit".
    ( B" F. n9 g8 L  _' J
  8579.   ;;
      n/ c0 g1 @* n9 d/ r4 m, W* ]
  8580.   (defun jlist_act (index / templist)9 l7 f' x2 P; s  E8 L) y5 Y
  8581.     (setq just-idx (atoi index))6 G2 V: l  M" A; n
  8582.     (cond+ W0 S: ?7 S8 S: i7 z
  8583.       ((= just-idx 0) (setq va 0 ha 0))2 X8 {) P: Y7 Z7 s+ @+ d4 ^
  8584.       ((= just-idx 1) (setq va 0 ha 1))
    2 ]9 @2 \+ r3 {- X! V
  8585.       ((= just-idx 2) (setq va 0 ha 2))3 T; B. s7 z9 Q$ X& e# |$ c9 s  X
  8586.       ((= just-idx 3) (setq va 0 ha 3))3 O, S5 |3 Z; M, {$ D7 M
  8587.       ((= just-idx 4) (setq va 0 ha 4))9 h+ N% _$ u; |
  8588.       ((= just-idx 5) (setq va 0 ha 5))
    5 X& K/ s, G( s' f4 _; F( C
  8589.       ((= just-idx 6) (setq va 3 ha 0))- J; ?) S8 Z2 T
  8590.       ((= just-idx 7) (setq va 3 ha 1))/ J" }( P( J# ^3 {, q
  8591.       ((= just-idx 8) (setq va 3 ha 2))
    # `: @/ v) _( {' A2 a5 ]& d% s
  8592.       ((= just-idx 9) (setq va 2 ha 0)), ~8 p5 q3 ]5 N, k
  8593.       ((= just-idx 10) (setq va 2 ha 1))
    ( B( n; J( Q  o
  8594.       ((= just-idx 11) (setq va 2 ha 2)): G- `& A! |" B3 Z& X/ U% T
  8595.       ((= just-idx 12) (setq va 1 ha 0))
    / T: A' U3 v8 L6 P8 p
  8596.       ((= just-idx 13) (setq va 1 ha 1))" \0 C, c6 h9 ~3 [( f
  8597.       ((= just-idx 14) (setq va 1 ha 2))
    ! P# x& u: }3 o4 c- y8 K$ C6 c
  8598.     )
    ! |( a0 J! o$ V- Q
  8599.     (if (or (= ha 3) (= ha 5))  ; If Aligned or Fit text
    8 U2 s7 f' |, p2 {. r' l5 o% G, I, j
  8600.       (mode_tile "rot" 1)
    . _6 [' P; z8 D7 N  S' |1 t
  8601.       (mode_tile "rot" 0)$ C! l, S! E  ?$ a% s! J) c: D  C1 x
  8602.     )5 J* c2 \$ O% @8 h/ U' }& \
  8603.     (if (= ha 3)                ; If Aligned text
    : [! D% t% }7 c% c; \! Q1 T
  8604.       (mode_tile "hght" 1)2 W" W) J" |9 D9 E9 T
  8605.       (mode_tile "hght" 0)
    & c% m7 B3 n; X) R: O9 r7 Y
  8606.     ): u/ Y/ a% X+ {
  8607.     (if (= ha 5)                ; If Fit text
    / v$ d3 E; N+ A5 B
  8608.       (mode_tile "wid" 1): i1 `: u' H" w, a- f& U1 |
  8609.       (mode_tile "wid" 0)
    ( g! ~, K3 b& B* ?
  8610.     )
    * }+ z: o6 @3 B# _; B- l
  8611.     ;; Reset rotation and height if changing from aligned.
    4 W& `+ G8 V$ A" o' o; f! o4 f' f
  8612.     (if (and (= ha-prev 3)  (/= ha 3))
    3 r! N; B( J, l3 h9 Y
  8613.       (progn
    & [- Q3 a  M' \6 l
  8614.         (set_tile "rot"  (ai_angtos (setq rot 0.0)))) d7 D( P7 ^6 }1 O- r9 _$ U0 R; ?
  8615.         (set_tile "hght" (ai_rtos (setq hght 1.0))). ?  P- |/ d& J7 n, @
  8616.       )& @3 ]( [5 C* p6 u- {- M$ b
  8617.     )7 C/ J7 W4 n) F/ s1 @

  8618. 4 ?9 E; `0 @; U6 p) M7 L/ O
  8619.     ;; Reset rotation and width if changing from fit.# h; W' n" E, d* l
  8620.     (if (and (= ha-prev 5) (/= ha 5))
    + y) J- l" h# B5 A# M4 v
  8621.       (progn( r4 s( M5 Q3 y: w
  8622.         (set_tile "rot" (ai_angtos (setq rot 0.0)))+ |) X' C( f, V' [
  8623.         (set_tile "wid" (ai_rtos (setq wid 1.0)))
    ( B5 K0 z# _( N( g
  8624.       )( _# N- R, o$ d
  8625.     )/ @, f, y  r: A6 s
  8626. & x2 D5 N# u  P9 W! a% j
  8627.     (setq ha-prev ha)           ; update ha-prev for next time
    8 y+ [4 u1 y5 p% P
  8628.     (setq just-idx (itoa just-idx))' o" l+ ?6 Q# N- o7 X- A
  8629.   )$ r9 ~& E) l4 J' A% Q9 I/ w
  8630.   ;;
    9 K  e3 B  C$ c4 R7 R2 o' @' k
  8631.   ;; Set intitial alignment setting based on vertical and horizontal alignment
    4 m# T$ G" |" K% w4 [9 p2 n! A7 ^
  8632.   ;; bit codes.
    / l' g* N6 G- l( q. m9 Z. N
  8633.   ;;
    & z7 i; J1 ^- O. V3 P: c
  8634.   (defun set_just_idx ()$ M! [: f/ X7 n$ {
  8635.     (cond
    , z) o# }. o/ t0 z7 e9 W& q
  8636.       ((= ha 0)             ; Horiz alignment = Left# S, L% O$ Y% N+ `
  8637.         (cond- i: R6 J6 }* x; K. A0 d. u
  8638.           ((= va 0) (setq just-idx "0"))
    ( \5 i! _# z1 Q  ~( D
  8639.           ((= va 1) (setq just-idx "12"))
    & w! b- i$ U' V; {& ~) K
  8640.           ((= va 2) (setq just-idx "9"))+ ]9 L: [: r& p* o5 ]4 s
  8641.           ((= va 3) (setq just-idx "6"))
    8 v3 S& ]5 r$ c3 W* E; z8 y1 t7 C
  8642.         )' S/ ~9 Q0 \) F3 W5 I
  8643.       )
    - d' f& L  |7 [9 G+ z( p
  8644.       ((= ha 1)             ; Horiz alignment = Center; O1 E; J0 _0 Z) j4 v4 ]
  8645.         (cond# A8 R( S' K4 H7 u5 y/ w
  8646.           ((= va 0) (setq just-idx "1"))
    ) V3 v2 {4 K/ e- G
  8647.           ((= va 1) (setq just-idx "13"))0 F9 M+ l; a! F$ ]  l! B7 c3 x
  8648.           ((= va 2) (setq just-idx "10"))& d8 B8 z0 [# ^4 W. F
  8649.           ((= va 3) (setq just-idx "7"))) ^1 W; a! b, R1 b, p- P6 t0 i/ [$ O
  8650.         ); {2 ^  z: K. a% n7 M6 l
  8651.       )
    3 q8 ^0 U5 C8 s# |
  8652.       ((= ha 2)             ; Horiz alignment = Right
      ^. R3 O% F" o
  8653.         (cond
    6 o- K+ J" [0 Y
  8654.           ((= va 0) (setq just-idx "2"))
    1 W2 z- R  P6 k1 A, U
  8655.           ((= va 1) (setq just-idx "14"))
    / U" |: O3 H6 A( g5 J1 b, p4 L+ C
  8656.           ((= va 2) (setq just-idx "11"))
    . x. L- P2 M! y8 |5 a2 L6 J
  8657.           ((= va 3) (setq just-idx "8"))
    5 O' a- c) B$ h; K: C
  8658.         )
    # L; b$ C8 O" d8 w
  8659.       )% r! @9 z: x2 V/ p0 H" h5 J8 M, x6 f
  8660.       ((= ha 3) (setq just-idx "3"))   ; Aligned9 ?) m; n8 z9 H" d- x
  8661.       ((= ha 4) (setq just-idx "4"))   ; Middle2 s% Y# w7 b0 l2 _! V1 q: d
  8662.       ((= ha 5) (setq just-idx "5"))   ; Fit! O' r0 n4 f) s) h" ?- y
  8663.       (T (setq just-idx "0"))
    ' a% @7 `5 y! x$ Z' _0 b
  8664.     )
    5 i+ l" O) ]4 s2 x4 T) P7 J
  8665.     just-idx* r4 E! y5 ^# S' u' I+ `
  8666.   ): u! P$ @' p" R9 m

  8667. / T2 {+ O1 E: s, r
  8668.   (defun modify_text ()9 }" I" O6 P3 O2 ~; E2 |
  8669.     ;;  insertion point. v5 E+ u$ @7 |% J9 P  Y- }
  8670.     (setq showpt (list x1 y1 z1))' d* l" O( m. [
  8671.     (setq bit-10 (trans showpt 1 ename))
    3 O/ @; J) n4 Z3 c1 n3 u7 T
  8672.     ;;  alignment point+ W7 R' a1 g! H' ~* a3 M
  8673.     ;;  for 'Aligned' or 'Fit', alignment point must be different- P2 |' u' N) ]8 G0 |
  8674.     ;;  for all others, use insertion point
    9 o' b  F$ o& |$ S% \
  8675.     ;;  (ACAD will recompute insertion point)
    1 u* w: s9 ^3 g5 q( |
  8676.     (if (or (= ha 3) (= ha 5)), ]$ T7 z. `# [2 W0 Z( }! X$ k( s
  8677.       (progn
    ' s; o+ b+ v/ j+ _* n3 I
  8678.         ;;  if no alignment point, fabricate one$ U! F$ c  k* d2 ^+ R8 q! Y
  8679.         (if (not alipt)+ N# x# `% S* Q6 }3 K
  8680.           ;;  add text width to insertion point- d& J8 U9 u( ^# z
  8681.           (setq alipt) C. |2 c. v" Q
  8682.             (list (+ (car showpt) (car (cadr (textbox elist))))
    ' h/ t# m+ k; N9 v! ?+ n
  8683.                   (cadr showpt)
    2 s0 G. u, g5 l+ D
  8684.                   (caddr showpt)7 x% `# q- o- P7 ~
  8685.             )0 `0 z5 j& Q4 i( S: @, l: \; N
  8686.           )  _5 E+ @0 _# I, N. l* R
  8687.         )
    ) R9 e' J: f$ Z+ x2 F
  8688.         (setq bit-11 (trans alipt 1 ename))4 S) ?! K. ]" z
  8689.       )$ w( o0 P9 {8 f
  8690.       (setq bit-11 bit-10)* i6 K9 |* W. f5 c; P  s* ]& i
  8691.     )
    $ W  a, B' ~# ?6 O2 t4 V# Z* v
  8692.     (modify_properties)8 b; \' L3 o; T9 \, T$ r) y$ D
  8693.     (tempmod tstyle 7 nil)" W# X% z& s7 N3 R
  8694.     (tempmod bit-10 10 nil)7 j+ z' T) u+ k. y, M1 I# |6 w
  8695.     (tempmod bit-11 11 nil)
    5 G8 w2 J, t$ `# l$ d, c+ E* z
  8696.     (tempmod text 1 nil)8 F" |0 F. K$ ]# o
  8697.     (tempmod hght 40 nil)
    6 T0 R2 s/ t6 \$ j! L! R
  8698.     (tempmod wid 41 nil)+ K4 C# v# j8 C6 o
  8699.     (tempmod rot 50 nil)
    * w! ^. o, N6 L/ G3 F6 Q
  8700.     (tempmod obl 51 nil)
    1 R/ x. y3 U" ^$ S; J! t
  8701.     (setq bk-up (+ (* bkwd 2) (* upsd 4)))
    8 g/ V5 A" ?( v) m1 \( k( L0 X
  8702.     (tempmod bk-up 71 nil)
    & z2 J: R( x0 L) m: |3 q6 V
  8703.     (tempmod ha 72 nil)
    ; K3 ?/ k  ], M! E1 X( H
  8704.     ;; Attdefs use 74, text 73
    9 @: n$ J9 S# H* n
  8705.     (if (= etype "ATTDEF")
    2 ~2 M; W# X: \: z$ L: E
  8706.       (progn
    4 ?; {$ x! M3 ]! }* K
  8707.         (tempmod attag 2 nil)
    0 @5 \2 j3 n' ?! K- }- C0 C- @+ q% `
  8708.         (tempmod atprompt 3 nil)
    ! I. T" L8 _8 U# H1 \
  8709.         (setq icvp (+ inv (* 2 con) (* 4 vfy) (* 8 pre)))
    + g) e9 ~* y" w8 ?
  8710.         (tempmod icvp 70 nil)6 z! U1 J0 P& k+ d1 g
  8711.         (tempmod va 74 nil)$ ~1 D5 t5 |/ m  b) }5 Y7 r5 r
  8712.       )5 |/ H4 V% {% W1 V8 [
  8713.       (tempmod va 73 nil)
    * @  U0 A3 M" D+ v" d( G
  8714.     )7 g7 o7 i0 R: D
  8715.     (entmod elist)
    9 w7 X* z; Q5 b# H$ \$ W3 {
  8716.   ). k( z; X  V6 `  _

  8717. ' q" W' l! N7 b* w0 d& I- V; a5 C
  8718.   (defun ddtext (/ 2ndpt slist i)
    " m) H, o- H7 j2 ?
  8719.     (if (= etype "TEXT")
    2 T% X& q! |) J5 x- \% \
  8720.       (if (not (new_dialog "ddtext" dcl_id)) (exit)); z7 b  n( B' L# C& z% L
  8721.       (if (not (new_dialog "ddattdef" dcl_id)) (exit))
    8 G! R9 z- {% V5 Y9 b) m, z: z2 J3 U
  8722.     )% d6 O! P. S. K! e; a
  8723.     (set_tile_props)0 S% l) X! }: \
  8724.     (set_tile_handle)
    4 r* C, A$ a  }) h: R
  8725.     (set_tile_text)6 u* ~# B2 C. U4 @( M  E
  8726.     (set_tile_tag)9 Q" P/ o5 N- w. w/ v% j
  8727.     (set_tile_prompt), u8 c0 \7 d/ p+ o9 \/ V
  8728.     (set_tile_hght)" _& m. D0 o1 s# H5 R8 O% ~+ }
  8729.     (set_tile_wid)
      }( V2 t  C4 C5 o) s% m
  8730.     (set_tile_rot)5 d  G2 Q4 v7 Q% |2 M. b! N
  8731.     (set_tile_obl)6 B% x7 ]! H3 ^: M9 ?' m) u$ |( H* p
  8732.     (set_tile_bk-up)' C: A6 J% T0 m$ K  T
  8733.     (set_tile_icvp)4 c# L' ^1 u1 O1 I* x: x. q7 h
  8734.     (set_tile_style)$ u) B* ?+ Q4 J$ {3 j7 P/ s
  8735.     (set_tile_just)
    0 {3 f) j8 F4 e% o
  8736.     (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    8 `- H. d# ~5 U# w6 e0 h" k8 l- b
  8737.     (if (not (assoc 11 elist))
    + e' U$ u0 r6 J( ~6 G
  8738.       (progn (setq pt2 pt1)
    4 h7 N8 L$ A7 ~8 S. Q$ X
  8739.         (setq elist (cons (cons '11 (cdr (assoc 10 elist))) elist ))9 ^+ ?6 @& h, o6 H/ ~6 e7 B5 y
  8740.       )
    0 [* Y# ]' T! F% g, M3 p( d; t5 ~% }
  8741. ;;(trans '(0.0 0.0 0.0) ename 1))' D' X7 p" g. [; @# D
  8742.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1)); {0 x. t9 R8 c5 v* w/ c9 G
  8743.     )
    2 Z  [5 }+ ?( ~0 ]2 I9 a$ \
  8744.     (if (or (and (= ha 0) (= va 0)). i0 `) t6 |; ^
  8745.             (= ha 3)
    : N$ f0 Q& ?9 D
  8746.             (= ha 5)
    1 c; L! n$ e" S7 X+ f) V' x
  8747.         )
    " q. t& j; ]% H) o3 ?8 C  h
  8748.       (setq showpt pt1)
    7 s/ v. u( ^! [( S, T1 H
  8749.       (setq showpt pt2)7 G4 s8 P* W1 a- i
  8750.     )3 z8 G; ~/ t2 F; Q
  8751.     (if (or (= ha 3) (= ha 5))
    7 U, B# e5 X4 z/ n
  8752.       (setq alipt pt2)6 p( r5 b' g! [, V: V  Q5 B
  8753.       (setq alipt nil)% n8 @0 e% B: c
  8754.     )
    ) o, \5 `( X) E4 W% Z1 z
  8755. . o% H+ c( o+ D, U
  8756.     (set_tile "x1_pt" (ai_rtos (setq x1 (car showpt))))
    $ Z$ i8 E; U6 h2 g, @& b( o% p
  8757.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr showpt))))$ t. Q- I, u3 I: e
  8758.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr showpt))))
    " Y. m7 {1 C2 o
  8759. 1 a* u; L6 U$ q- U. X2 K9 D" _
  8760.     ;; Define action for tiles
    7 ]+ f; o; k: V* r6 f  Q' h& O
  8761.     (set_action_tiles), t2 h5 k: b" l3 ]; j
  8762.     ;; Set focus initially to the text edit box.9 j, _+ @- _- l% \! b; A& G0 R
  8763.     (if (not i) (progn (mode_tile "t_string" 2)(setq i 1)))
    ' V  ?' i8 C7 d& [0 q* N: P  ?# r0 M
  8764.     (setq dialog-state (start_dialog))
    " ^. w" W- {, A
  8765.     (if (= dialog-state 0)$ N9 h; i9 F& B9 w: d4 X8 R) o
  8766.       (reset)
    & D5 f8 {) w6 R0 ?
  8767.     )
    1 }6 F/ f& K5 {3 a
  8768.     (if (= dialog-state 1)
    $ h9 ^% P3 S# p
  8769.       (modify_text)
    4 l" _5 @) V( e, X, L
  8770.     )
    % L. O) \9 y% U2 h5 u% ]
  8771.     (if (= dialog-state 3)) a- U2 k' F* [3 V) E: _9 q
  8772.       (progn
    . A: a8 I7 O2 X! G% P( g- ^
  8773.         (modify_text)
    ( y% M6 @8 R4 m
  8774.         (if (or (= ha 3) (= ha 5))
    0 i8 F, n4 Z5 s
  8775.           (progn
    1 F1 P/ |" i6 G- M
  8776.             (setq showpt (getpoint (list x1 y1 z1) "\nFirst point: "))) z7 r. m" n9 Y# x4 L: _7 ]9 L8 T; b
  8777.             (if (not showpt)
    5 f& c. K" v/ _' z5 t% H" {
  8778.               (setq showpt (list x1 y1 z1))
    2 g& [. B& O) y
  8779.             )+ V$ M. K- _+ S7 e/ N
  8780.             (setq 2ndpt (getpoint showpt "\nSecond point: "))
    & `8 j: d0 n" v) I$ H( p
  8781.             (if 2ndpt/ @8 j/ p; n( M8 o
  8782.               (progn
    ) _! W0 q: _& o; A0 D
  8783.                 (setq alipt 2ndpt)
    9 k3 ?: J8 z  s4 @$ H7 u
  8784.                 (tempmod showpt 10 1)
    ) L6 K# F, a% k  R! `
  8785.                 (tempmod alipt 11 1)3 v/ I$ h- B; a- ?6 E; {: J, f
  8786.                 (entmod elist)' [& A% C8 q+ B$ K2 K% C
  8787.               )
    + l+ Z7 d+ a4 H- t2 G) V! n: G% F1 b
  8788.             )4 [( X, w4 h* L* E" v
  8789.             (setq elist (entget ename))
    ! _) J% C9 a& K% u
  8790.           )* U6 u2 @# ~9 A
  8791.           (progn2 u% |  x9 {5 o6 u2 C3 |
  8792.             (setq showpt (getpoint (list x1 y1 z1) "\nInsertion point: "))8 L) [) V- X0 V5 J; n) [
  8793.             (if showpt0 l% |2 W0 ]; u* A  T' `
  8794.               (progn$ s1 \) [* t4 t! i: U
  8795.                 (if (and (= ha 0) (= va 0))
    1 }: V! J1 O$ V! ~
  8796.                   (tempmod showpt 10 1). e9 I1 r( a( D+ [$ g. B7 J7 W
  8797.                   (tempmod showpt 11 1)
    9 z; ]- x8 y$ e  O7 l' a1 J  y& x
  8798.                 )" \; x% q$ L6 b( Q% G
  8799.                 (entmod elist)  b! p, w/ }4 J( {0 E5 Y' ^7 H
  8800.               )
    , Y+ @, ?( ]" G. F
  8801.               (setq showpt (list x1 y1 z1))
    " \1 N0 j" _: ?$ _: w
  8802.             ), h/ a4 S& f8 F4 ~+ L) E" T' g
  8803.           )+ E- [$ T& t$ c* D; `& G( ^3 J# n
  8804.         )
    , a$ m5 X! [! k* ]$ `
  8805.         (ddtext)
    4 \' y! Z4 L& e6 F% Z% T+ C# S7 n  X
  8806.       )
    ; X" Q5 ^1 ]+ y* F: `* {
  8807.     )
    7 n: W2 t" ~8 s6 H
  8808.   )
    3 H, t3 i$ f/ E" t" T
  8809. - o5 R- H& e) ?0 U' m
  8810.   ;;
    0 ?9 U6 N  Z2 }( P& h
  8811.   ;; Modify MTEXT' w, W6 {! \- ^( S0 a4 `7 l
  8812.   ;;
    9 X! }* {4 g0 l& Y, ?0 g
  8813.   (defun modify_mtext ()- z- D% ?1 ?9 G
  8814.     (modify_properties); P; |6 @' }; K. {7 O; \
  8815.     (setq pt1 (list x1 y1 z1))1 o4 g! Q. T& U" o! }* \; L2 i
  8816.     (tempmod pt1 10 0)$ z. H  P4 G% f* S
  8817.     (tempmod text 1 nil)
    & p+ ]& b' a& t: [
  8818.     (tempmod tstyle 7 nil)
    9 W% ?7 O) d7 G
  8819.     (tempmod just-idx 71 nil)
    : x4 H' K) b1 h0 }3 M; n: C1 U8 o! }7 w
  8820.     (cond
    2 B' K1 M/ i2 o( X) ]# r- m
  8821.       ((= dir-idx 0) (setq dir-idx 1))
    6 S( q1 E2 N0 e9 ^+ o
  8822.       ((= dir-idx 1) (setq dir-idx 3))& J! y5 J; |! z- E& g% B; |
  8823.       ((= dir-idx 2) (setq dir-idx 5))
    & \* I! i7 A2 g
  8824.       (T (setq dir-idx 1))
    8 k. W( J; C" `; X4 N; M
  8825.     )
    - W* E* c8 j5 ~+ }# h
  8826.     (tempmod dir-idx 72 nil)8 y! w& z3 @9 j6 ~, o  G( O
  8827.     (tempmod hght 40 nil)
    3 ]# D! f7 y" ~) T; _6 u! t( ?1 R# G  P
  8828.     (tempmod wid 41 nil)
    2 g- M+ b8 h2 D% _3 M( w$ J4 q& _
  8829.     (tempmod rot 50 nil)2 i+ C, r2 n3 e9 X* V  @
  8830.     (entmod elist)
    2 g$ k- a1 |% z' h  w
  8831.   )) [' Z. B/ M4 s& C6 @- l

  8832. * x' |. y) W6 N0 V
  8833.   ;; Set MText text style
    # \4 n* w0 v0 z% w
  8834.   (defun MText_style (index / style-list)8 t7 A1 P! H8 v- R& Q  \- o
  8835.     (setq style-idx (atoi index)). p( C! I& a7 o% N9 X4 j
  8836.     (setq tstyle (nth style-idx slist))
    3 D: e/ H, P; g6 X
  8837.     (setq style-idx (itoa style-idx)). S/ k1 T/ i& ~0 q  y! ]7 a6 Y3 O
  8838.     (set_tile "style" style-idx)
      Y4 K  f' n( j6 Z  x
  8839.     (setq style-list (tblsearch "style" tstyle))
    6 A' S) G. x+ ?0 E$ H8 s
  8840.     (setq shght (cdr (assoc 40 style-list)))
    . h( D" @) V# I- a/ |8 N
  8841.     (if (/= shght 0)) @9 Z& L: ~5 r" W& ?- Q1 D
  8842.       (progn7 C, Q- C  o, J( P+ a
  8843.         (setq hght shght)
    5 a; ]9 h) Y+ c1 x6 q! |
  8844.         (set_tile "hght" (ai_rtos hght))
    5 [& h. E3 A6 J' F; A7 ~
  8845.       )  w) A' j( k, t- {* M
  8846.     )
    8 j6 ?% U, |7 X- X9 q; ]
  8847.   )
    ; K. q* W8 K$ t
  8848. ; ^$ T; x" k$ H% k/ d1 c- G9 W8 W- f+ n, ]
  8849.   ;; Run DDEDIT on given entity, working around possible re-entrancy% |2 P8 }+ U% Z' c# n/ }+ f
  8850.   ;; problems with MTEXTED
    * p0 i  I. D5 p6 s8 p3 a" S
  8851.   (defun safe_ddedit (ename / orgMTextEd work)! H: x9 e% Z; n  V
  8852.     (setq orgMTextEd (getvar "MTEXTED"))8 r! ]6 R& g' P9 c  c# Z) S
  8853.     (setq work orgMTextEd)- P8 v) ^3 ^  L9 j; z
  8854.     (if (= ":" (substr work 1 1))* z5 j% b/ M2 A2 _: D5 d: l7 p' d
  8855.       (progn
    2 q+ b7 `2 U: w! S* a* z6 n
  8856.         (while (and (< 0 (strlen work)) (/= "#" (substr work 1 1)))
    7 E8 V  |# b7 a! v
  8857.           (setq work (substr work 2))
    % G+ x  E8 ?: }- }, M3 C
  8858.         )* h" d+ t- e& @! q( R1 D# L
  8859.         (if (= "#" (substr work 1 1))# r: U  i; B9 B9 k
  8860.           (setq work (substr work 2))$ O8 f% f; D" T1 i
  8861.         )
    - Z6 l$ G' S1 d& b/ P. F. u: e  B# F
  8862.         (setvar "MTEXTED" work)
    ) t8 `2 }9 t( o2 @
  8863.       )/ B1 {; B- `3 G6 B% a# E9 L
  8864.     )
    1 c5 y% T+ z$ ~0 ]
  8865.     (verify_arxapp_loaded "acmted.arx") ;; make sure it's loaded...# w5 z5 H; O0 h$ `! {) z& j* k
  8866.     (command "_DDEDIT" ename "")
    7 G8 n/ C) V& t+ P  k4 b3 K# W2 U
  8867.     (setvar "MTEXTED" orgMTextEd)% f- r/ j3 S8 V: a
  8868.   )
    1 f# U0 ^% G& o7 J" W) t/ Q) g
  8869. 7 p4 Y$ c% e' r  K- t* n! ^; L
  8870.   ;; Verify MText object width
    ! r9 U8 D1 M$ q. e
  8871.   (defun ver_MtextWidth (value); z# x4 \: j& j9 N0 k
  8872.     (setq value (distof value))+ V$ d( c, R: L# H- r" A6 Y
  8873.     (set_tile "MTextWidth" (ai_rtos value))
    " M5 V5 Y) }  w. z
  8874.     (set_tile "error" "")
    2 B$ F  n$ k1 H" S7 T. J
  8875.     (if (< value 0.0); w% N% `: |( v  @2 ?
  8876.       (set_tile "error" "Value must be zero or positive.")" k8 @; z% y+ J) l) b
  8877.       (setq wid value)
    % _* z: L1 M0 S) S+ ]  @$ r
  8878.     )7 c* m7 ?+ U3 K2 f$ x
  8879.   )
    * w5 A6 H' R- ~( |  G

  8880. 4 ~3 g! A( C: _, m$ \1 I4 \
  8881.   (defun ddmtext ( / gc3)% ~3 h1 o  U7 k
  8882.     ;; Get dialog/ w4 f: h! x) I. N+ q: i
  8883.     (if (not (new_dialog "ddmtext" dcl_id)) (exit))" V' K8 G$ q6 |
  8884. : i9 O3 V/ ~, ^* j
  8885.     ;; Load list boxes& P4 T" U; _! l3 X+ P
  8886.     (start_list "MTextJustify")
    9 x+ @; g; k3 b6 O3 H
  8887.     (mapcar 'add_list '(
      Y9 E8 d1 v: Y& P
  8888.                         "Top Left"% f6 A) o9 v9 ^
  8889.                         "Top Center"
      H  I# A$ A! n* p$ m! C5 a
  8890.                         "Top Right"
    1 P+ g" O. D# |- k  V1 A
  8891.                         "Middle Left"4 m1 o2 i0 \6 g& _" w+ O; s7 D
  8892.                         "Middle Center"
    2 O/ h. t* i/ E
  8893.                         "Middle Right"9 O2 i/ T0 \5 s
  8894.                         "Bottom Left"/ {( _/ `$ y4 m9 z: q2 R
  8895.                         "Bottom Center"
    0 k6 Q- q( U! F
  8896.                         "Bottom Right"
    % N+ w4 k; V: `. H. ?
  8897.                        )
    3 w( m2 M1 u7 D+ y+ {
  8898.     )& d& M  e' t1 q8 l
  8899.     (end_list)" [" `4 U+ W2 L+ Q" [

  8900. 5 G( ~, w8 ~6 Q; m6 U, ~. b
  8901.     (start_list "MTextDirection")
    * j3 a. j, z/ p7 P5 \& D
  8902.     (mapcar 'add_list '(
    ( U( p0 q7 `( S) w
  8903.                         "Horizontal"
    " [0 I7 `1 e5 {% {$ R
  8904.                         "Vertical"
    ( _. U. p* P( S0 ]: n# ^* W  n
  8905.                         "By Style"
    . a1 D8 \' S; y4 r3 Y( {
  8906.                        )3 Q3 O3 j5 I4 M7 x' D) _
  8907.     )* R: e. Z9 U7 Q! @' E
  8908.     (end_list)
    8 I% Y6 m- o$ ?4 ^9 ~

  8909. / s' l" y6 ~0 M7 Z; j
  8910.     ;; Set initial tile values- G" H  ]. S5 v6 L. m% F
  8911.     (set_tile_props)
    & C  \1 s$ e. b5 |  I9 g% a% u2 [9 ^/ r
  8912.     (set_tile_handle)" F& I/ Y2 ^! [9 d& r& S8 ]
  8913.     (set_tile_pt1 0)
    ) [/ c! L+ P0 _# \+ s/ c
  8914.     (set_tile_style)
      E9 d' ?! ^; @& K
  8915.     (setq just-idx (cdr (assoc 71 elist)))
    3 b/ ]4 M  T( [3 }& W2 }' ~
  8916.     (set_tile "MTextJustify" (itoa (1- just-idx)))
    3 Y2 K* S, L5 ~2 s/ e2 n8 Q
  8917.     (setq dir-idx (cdr (assoc 72 elist)))4 m# M4 F  {8 F5 u$ w# P  {' C
  8918.     (cond/ n; F- O' @& I8 J) x% r5 ^
  8919.       ((= dir-idx 1) (setq dir-idx 0))
    7 @/ P& l$ z2 o1 {$ _" E; B$ C
  8920.       ((= dir-idx 2) (setq dir-idx 0)), t5 Z! g  t8 D  p
  8921.       ((= dir-idx 3) (setq dir-idx 1))2 E9 w8 d8 r8 O  k# L
  8922.       ((= dir-idx 4) (setq dir-idx 1))
    " m. B  b  C! o( T# {
  8923.       ((= dir-idx 5) (setq dir-idx 2)), J- X4 L8 {: W& w6 W
  8924.       (T (setq dir-idx 0)); X8 {( J) X5 B- {, b6 X
  8925.     )+ c0 q" ?" {2 x& C# M0 D
  8926.     (set_tile "MTextDirection" (itoa dir-idx))
    ' F; x, H" x0 r, v9 q& m/ Q7 f
  8927.     (set_tile "MTextWidth" (ai_rtos (setq wid (cdr (assoc 41 elist)))))& T7 T" i  A! W* }8 f6 y
  8928.     (set_tile_hght)
    % K/ m1 w, t: Y% U% A2 A9 h8 |* Z9 K
  8929.     (set_tile_rot); |7 u+ d- F& U9 l' f6 L
  8930.   U# {( H7 F% u: f
  8931.     ;; Set edit box, disable if too long
    6 u& `3 M6 s9 S" ]# C+ X/ q
  8932.     (setq gc3 (cdr (assoc 3 elist))
    ! _$ n0 b. \  u0 H* b
  8933.           text (cdr (assoc 1 elist)))9 F1 M: J' @5 \' X8 K( G/ y: q
  8934.     (if gc3
    * N! r) r3 [$ O! ^& Z' F  T
  8935.       (progn  ;; Text is over 250 chars, disable edit tile! M( C% v5 z6 F9 q" l1 p4 M3 T5 {
  8936.         (set_tile "t_string" (strcat (substr gc3 1 25) " ..."))
    8 P4 b6 T$ @8 E8 a2 E2 k- `1 Z  i
  8937.         (mode_tile "t_string" 1)$ r0 T  `4 o: u
  8938.       )
    4 ?8 m- t; V8 q9 n4 ]
  8939.       (if (> (strlen text) 80)* Y( L9 V6 b. [; L* V4 \9 u  v
  8940.         (progn  ;; Still too big
    $ f. d. b6 T8 l7 d0 o
  8941.           (set_tile "t_string" (strcat (substr text 1 25) " ..."))& D8 U8 X; k; K- h7 N% y8 v4 ^
  8942.           (mode_tile "t_string" 1)
    ) v$ K# e! ~' f9 ~& _
  8943.         )
    ' ]/ M' D' _9 N: M' n( A5 D5 M
  8944.         (set_tile "t_string" text), z# ?- L4 P4 Z  Y9 {4 Z
  8945.       )! x& r& i* r9 ~0 a5 ?( c
  8946.     )
    5 d) J" r  k; ?

  8947. 4 {5 N  z1 S0 @8 a# D' ~$ i/ K
  8948.     ;; Define action for tiles
    * h& D" n5 T; h; H7 ^1 ~
  8949.     (set_action_tiles)
    ; ?, c8 Y& A( {0 s2 F# r% T
  8950.     (action_tile "style" "(MText_style $value)"); C! X, J4 K% a: ~( P
  8951.     (action_tile "MTextWidth" "(ver_MtextWidth $value)")# R' u4 w7 s3 W4 b$ _2 I
  8952.     (action_tile "MTextEdit" "(done_dialog 4)")
    . h1 w- G0 o) o" [. r8 W$ V$ P
  8953.     (action_tile "MTextJustify" "(setq just-idx (1+ (atoi $value)))")* X# W) a* w. L2 z
  8954.     (action_tile "MTextDirection" "(setq dir-idx (atoi $value))")" Q5 p4 ]% U" ^( o9 B! E
  8955. ; P. d( E: p  m& e
  8956.     ;; Set initial focus to text edit box.# M- M( t* o5 {0 t
  8957.     (mode_tile "t_string" 2)
    ) [5 v; a) W, [4 Z2 Q! e

  8958. 2 P9 W" e7 C" M4 o# b5 }: H$ y
  8959.     ;; Run the dialog
    / Q; J5 U+ M+ b) u
  8960.     (setq dialog-state (start_dialog))
    % Q4 h% v' t' d9 G
  8961.     (cond& d8 X) V, |3 C* g0 X7 `
  8962.       ;; Cancelled - restore saved data
    # M& ?6 l. I6 s8 w+ z2 n; D
  8963.       ((= dialog-state 0) (reset))
    $ _; q1 Q4 a4 T5 e6 f! _
  8964.       ;; OK - save new data
    ( y( i+ u: L4 E8 a
  8965.       ((= dialog-state 1) (modify_mtext))2 ], G: g( s1 D& B
  8966.       ;; Pick new insertion point
    6 Z9 `4 M) |& S9 S& H+ ]
  8967.       ((= dialog-state 3)
    - y8 U5 b" Y' Y
  8968.         (modify_mtext)
    , t/ B8 k7 e' @+ |
  8969.         (setq pt1 (getpoint (list x1 y1 z1)  "\nNew Insertion Point: ")), Q/ h; d7 W0 |) b. K2 c
  8970.         (ver_pt1 0)
    , S. n. R5 `, Z, C& w! D
  8971.         (ddmtext), E6 D3 f' E+ q" c: K4 S4 K5 T" ]
  8972.       )
    " v# O2 V4 n/ I5 e- O8 g
  8973.       ;; Run full editor. n/ D6 e( F% a$ C, K
  8974.       ((= dialog-state 4)% _; t+ }; H9 L* \# ~; o
  8975.         (modify_mtext)
    6 C8 X( g+ v, Y: R
  8976.         (safe_ddedit ename)
    & N$ K6 `. [+ M
  8977.         (setq elist (entget ename))/ g* Y5 Q2 w+ z1 r! H
  8978.         (ddmtext)# k- \7 t: F3 Z
  8979.       )% B+ I1 W' p! |4 Q
  8980.       (T nil)
    ( M) C2 l9 ~8 y- \1 _" I' W" T+ R/ k
  8981.     )4 d+ E" U3 b% j- [! g
  8982.   )
    , o1 @4 t( D8 N8 O" N! D

  8983. 2 C7 Q$ N0 s7 d' e# f/ d/ I
  8984.   ;;
    6 x$ G& ?) q, \( W- t+ }# e
  8985.   ;; Modify VIEWPORT5 w4 [1 b2 [( I& c4 r
  8986.   ;;
    9 w) R# C" t, D2 p$ o' X

  8987.   n! m  V7 D) t
  8988.   (defun ddvport ()5 {$ y. [5 O2 w( \4 u8 ^2 b
  8989.     (if (not (new_dialog "ddvport" dcl_id)) (exit))$ Q) w- [/ |# y1 M- f9 C
  8990.     (set_tile_props)
    ; W; o5 W0 {0 O, V
  8991.     (set_tile_handle)
    % H8 z" ?- F. W% {$ D+ X
  8992.     (setq vpt (cdr (assoc 10 elist)))5 D+ ^) I: ]" c! l: p' G
  8993.     (set_tile "xtext" (rtos (setq x1 (car vpt))))* N4 i, r5 U4 U; r5 e
  8994.     (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    ) N) n+ ~  R$ V6 ~  p! q! C& y
  8995.     (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    - H( x0 {" I4 n* p5 m+ ?
  8996.     (setq wid (cdr (assoc 40 elist)))
    3 `/ [0 ]& U& w3 @. q' g% {. w9 C
  8997.     (set_tile "wid" (rtos wid))
    ! x3 e& I3 L: |/ [+ e' {9 q
  8998.     (setq hght (cdr (assoc 41 elist)))
    - u! b, p0 z+ Q/ _7 U1 J# n
  8999.     (set_tile "hght" (rtos hght))
    / }9 N& Z& t7 r" e" g/ v2 \7 F( z
  9000.     (setq vpid (cdr (assoc 69 elist)))
    9 ^) i; ^; R/ `! f$ }3 _
  9001.     (set_tile "vpid" (itoa vpid))! b0 c3 D7 u1 L$ ?
  9002.     (setq on-off (cdr (assoc 68 elist)))
    & |7 M& a9 M0 m1 y
  9003.     (cond/ h6 q9 C  d5 M. d8 O, R
  9004.       ((= on-off 0) (set_tile "on-off" "OFF")), e6 @: _( u9 ~. G
  9005.       ((> on-off 0) (set_tile "on-off" "ON and Active")), g4 L5 A- V+ Z( g2 O# S
  9006.       (T (set_tile "on-off" "ON and Inactive"))
    ) T2 [! v: Y' s: P1 X- a5 {) i
  9007.     )+ c0 p" G/ n1 }9 j4 Q4 |

  9008. ( v3 a* g0 v8 p6 z( x
  9009.     ;; Define action for tiles! i& a, W9 P4 N  m8 f
  9010.     (set_action_tiles)7 t9 Y5 c# ^; W0 P4 s
  9011. 2 N( K7 I9 S2 c9 G) W
  9012.     (setq dialog-state (start_dialog))
    5 A0 J/ t; L3 M$ w6 V
  9013.     (if (= dialog-state 0): d! `5 o$ Q- g7 c! F
  9014.       (reset): |0 V# b; [0 Q/ G
  9015.     )6 M# K  A! A& e6 p0 D
  9016.     (if (= dialog-state 1)
    ) Q; C. B) o, G' b1 c' r, T8 }
  9017.       (progn3 n- @5 X, w. k
  9018.         (if (= ecolor   0) (setq ecolor "BYBLOCK"))
    5 h8 Z2 {5 r- m& ^
  9019.         (if (= ecolor 256) (setq ecolor "BYLAYER"))
    6 C7 c5 u2 p% T9 S
  9020.         (command "_.chprop" ename ""( d0 Y" X9 m% C5 z/ W" |  K
  9021.                  "_la" elayer  x9 {% |+ `  ~/ g& I
  9022.                  "_c" ecolor ""
    / g- p9 q- l! p8 W
  9023.         )2 R3 b! i, h: c4 C
  9024.       )
    ; l7 H7 |9 y4 o7 _
  9025.     )
    9 \: u5 f+ v" i9 G# M6 ]# T! U
  9026.   )7 r4 T) e" k9 m3 D! b/ y
  9027.   ;;7 |& x5 G0 ]) |3 V+ M
  9028.   ;; Modify POLYLINE1 l+ f  d( q2 \- H; j" S% c+ j
  9029.   ;;$ J: ~. V7 ]: r" h, x
  9030.   (defun modify_polyline ()
    9 Y6 e2 v, g+ _  a" y5 z9 z
  9031.     (modify_properties)8 L4 p$ v6 z  {% N" T
  9032.     (if (= ltgen "1")
    6 p0 H# _4 d8 Z: z
  9033.         (if (/= (logand bit70 128) 128)7 h- S% _# H/ [1 n' z7 P
  9034.             (setq bit70 (+ bit70 128))8 n7 w) |* s$ X( u6 h
  9035.         )
    3 u4 L( i% I0 D
  9036.     )
    ; Y/ c0 h& A" k6 n2 {
  9037.     (if (= ltgen "0")4 N$ [- y* B9 D: x
  9038.         (if (= (logand bit70 128) 128)& w' K! T2 @9 h+ i9 S. c
  9039.             (setq bit70 (- bit70 128))
    8 x( p9 ?1 q( V1 Z" W  _
  9040.         )% a+ ]" B1 Y+ l" A8 l. L
  9041.     )$ [! B, ]; h3 z$ N0 h- E7 Z5 E
  9042.     (setq elist (subst (cons 70 bit70) (assoc 70 elist) elist))
    0 e+ \, x  S! z2 {2 L% Z
  9043.     (entmod elist)  v# H. x$ z7 n) G5 B
  9044.     ;; Added to take care of updating Vertex information for color9 V0 `& h; D9 @2 n& R. k. z: Z
  9045.     ;; and linetype.$ ~- h/ z+ l+ m1 D
  9046.     (setq save-ename ename save-elist elist)
    8 R2 n3 Y8 ~7 C) y, o" K% X
  9047.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")5 k4 f7 a% U  X) o
  9048.         (progn
    " I( V/ B) u  M, v& ~& j" k
  9049.             (emod ecolor 62)
    4 y  u9 _( ~3 F' t
  9050.             (emod eltype 6)3 v0 L: g2 F. S" i3 t) V9 D  p  t
  9051.             (emod eltscale 48)
    , H, Z. O4 m- v) U4 h
  9052.             (entmod elist)+ z# H5 b8 L7 v( y" d2 [0 f
  9053.         )
    : `7 F! K7 G# H7 u
  9054.         (progn
    / T3 V6 W) F, E0 J7 ^, J% q& k" e& @, x7 g
  9055.             (setq ename (entnext save-ename))% S" k% T! V" {* ?5 v
  9056.             (setq elist (entget ename))3 j7 k, }: m2 s- e; S( R2 n, `
  9057. $ Y. I7 s: O; D
  9058.             (while (not (= (cdr (assoc 0 elist)) "SEQEND"))
    6 D( C6 E5 T& ?/ r- X) {3 k- g9 A
  9059.                 (emod ecolor 62)- x: f6 x  Z8 r
  9060.                 (emod eltype 6)
    0 v- Q6 y6 [7 i: ]0 X& Y8 `# }
  9061.                 (emod eltscale 48)& F4 j+ C3 m1 M7 f6 q+ K7 z! ^; ^8 Y
  9062.                 (entmod elist)
    0 l% d4 B7 D4 V
  9063.                 (setq ename (entnext ename))* H+ r+ q1 t& X3 e, V# a8 F
  9064.                 (setq elist (entget ename))
    5 \) L* ~7 ?0 z: S2 a! J3 H
  9065.             )
    . b& p; R0 N  l4 b( G$ h
  9066.         )- ^$ |  C* e: M& K( o5 A6 ^
  9067.     )
    * E& X  E; d  x4 ~% @+ A/ R7 x
  9068.     ;; Update the SEQEND( Y2 K. f  R1 k( w$ g1 h3 p: p/ Y
  9069.     (if (= (cdr (assoc 0 elist)) "SEQEND")/ N' |3 j; W: d* s% F+ N1 h; F' c
  9070.       (progn* q" f3 X( q; ]6 U" T) @# G
  9071.         (emod ecolor 62)
    9 z% P$ G4 ~7 o+ ~9 Y
  9072.         (emod eltype 6)
    * g, }0 \0 ~: P2 {3 g% ~# y
  9073.         (emod eltscale 48)
    0 ]1 V  k& T& v! \' k; ?
  9074.         (entmod elist)
    " g. B7 P7 m; u8 N8 \4 I0 q8 m% \
  9075.       )
    . U" p/ I) i3 }( f1 r0 k
  9076.     )+ T) ~1 I) n. K/ V: V: B
  9077.     ;; Go back to header.
    0 P" q" z0 i7 U4 V- ~( W
  9078.     (setq ename save-ename elist save-elist). S; y# k+ P3 _4 h% k5 y, A

  9079. 1 ?! R; e  ?' S
  9080.     (entupd ename)
    7 a  E3 J% U+ e9 r
  9081.   )' y: J. D  a* J& m) h

  9082. : q# H: v3 N. ?8 ~- d
  9083.   ;; Increment vertex.  Set tile values to next vertex
    8 M' V: _+ {: K- i
  9084.   ;;
    $ h) {0 z- P3 C6 M& ]
  9085.   (defun next_vertex ()/ h4 K- F$ b* M) z
  9086.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")
    ' V$ i1 r5 W' T  q& B9 @& u1 q8 I0 t
  9087.         (progn
    ( @, L% |/ ^% n9 F8 t4 q
  9088.             ;; If the counter reaches the number of vertices,3 q' \5 x) J2 \6 U" p( ?
  9089.             ;; roll it over to zero again.
    1 U  |4 J- c3 t. o) d" _
  9090.             (if (= ctr (cdr (assoc 90 vlist))); J  G5 V' \" q. g
  9091.                 (setq ctr 0)% }! ?, ~% y6 t5 Q+ l
  9092.             )
    # J+ Q: _2 w+ ^
  9093.                 (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))+ s; i3 W8 ]7 {( F% `
  9094.             (set_tile_vpt pointype); D* ?# F* |/ @8 _) U. k3 F* L
  9095.         )7 d4 n) }# C$ a! g; ]" r; r$ H, N
  9096.         (progn
    4 X2 g: C2 h& ?0 G
  9097.             (setq vname (entnext vname))5 q1 ]$ A4 r6 ], I& n! [4 y9 q9 t
  9098.             (setq vlist (entget vname))
    + N0 t4 ?  i- A
  9099.             (if (= (cdr (assoc 0 vlist)) "VERTEX")/ E0 Z/ y, a. ?
  9100.                 (progn' |3 K6 D# B6 s* @- \, i# i% t
  9101.                     (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))- I$ v$ Q% |1 x% D2 v4 d/ @, f
  9102.                     (set_tile_vpt pointype)
    9 S7 q4 f  Z+ W9 p$ y) p7 D3 F
  9103.                 )
    ! T; L- k6 b- i( C% P
  9104.                 (progn; o# N+ N$ H4 `/ o5 q7 z8 o
  9105.                     (setq vname (entnext ename))* s! G# s+ F) o+ N$ D. O
  9106.                     (setq vlist (entget vname))
    + F5 y) [, I5 d$ ?& d6 X7 q, i
  9107.                     (set_tile_vpt pointype). Q! u& k+ N7 X7 m' M$ e
  9108.                     (set_tile "ctr" (itoa (setq ctr 1)))5 ?* Z5 W! K6 P4 g( W9 A
  9109.                 )7 B8 [: }4 j& W, O( W* P$ ^+ R9 s, x
  9110.             )
    0 w. L  T2 U! P$ D
  9111.         )0 b5 S* \) E* h
  9112.     )
    % e9 o9 s3 C2 Z  \1 h) k, n2 H
  9113.   )
    % L; J' n1 s' ^) R1 @- [

  9114. 0 _/ C6 x) `  R/ }2 T5 J
  9115.   (defun ddpline (/ oldecho)
    . q5 V' w" M0 G6 k& o) b
  9116.     (if (not (new_dialog "ddpline" dcl_id)) (exit))6 v5 V* |/ M$ _* r% V. a
  9117.     (set_tile_props)1 t. u4 B8 p- b$ V! z1 u0 l4 y
  9118.     (set_tile_handle)
    ! Y+ j  ?2 g" u4 w  u& s; t: s
  9119.     (setq bit70 (cdr (assoc 70 elist)))  o9 q0 }1 P( x6 A3 ]
  9120.     (setq bit75 (cdr (assoc 75 elist)))
    * A1 \# x& B9 J1 S( V  y
  9121.     (cond
    ; |, G0 g; c6 c. t
  9122.       ((= (logand bit70 8) 8)   ; 3DPOLY- }, ]; S: H4 t
  9123.         (set_tile "ptype" (setq pltype "3D polyline"))7 Y- ^7 R/ d, c9 w! W, _
  9124.         (setq pointype 0)       ; WCS or ECS point values
    , a+ h2 u" V& K- s
  9125.         (mode_tile "fit" 1)4 D* i/ Q3 i3 z( o) V+ p
  9126.         (mode_tile "mesh" 1)) N0 Y  Z7 ]* [# z2 ~
  9127.         (mode_tile "bezier" 1)1 e( ~1 [' C8 I, e0 d
  9128.         (mode_tile "ltgen" 1)* m7 G8 i+ z; J8 ]4 I
  9129.         (set_tile "none" "1"): j7 k  j( x' J, z
  9130.         (set_tile_closed)9 {0 g" s' q2 F( ^; O
  9131.         (set_tile_fitsmooth)
    / }- {+ v, a2 R0 K3 `6 h
  9132.       )
    1 C: H8 N2 K  V5 E' s
  9133.       ((= (logand bit70 16) 16) ; 3DMESH
    & o" Q( Q0 ^' {. D
  9134.         (set_tile "ptype" (setq pltype "3D mesh"))
    + W# d8 O# W, F5 q: }% Z, e/ f& J
  9135.         (setq pointype 0)
      e# n5 x% }  }- M' N9 H
  9136.         (mode_tile "pline" 1)
    / n) I! R9 \& |# u3 q. c4 Y2 z; `8 g% e
  9137.         (mode_tile "fit" 1)3 `6 ?6 C$ C! o0 b  G
  9138.         (mode_tile "ltgen" 1)! \1 O9 i' p# K/ f; P* y
  9139.         (setq m (1- (cdr (assoc 71 elist))))
    ; K1 F, N; n4 }* ]* N. {$ T
  9140.         (setq n (1-(cdr (assoc 72 elist))))$ h  H7 [6 g8 O; d
  9141.         (setq u (1- (cdr (assoc 73 elist)))); ~3 Q& N# D# i& H6 d3 z
  9142.         (if (< u 0) (setq u 0))
    0 k+ ?) Y) O! u' z4 c
  9143.         (setq v (1- (cdr (assoc 74 elist))))
    ! x) ?7 G2 H2 W) ?
  9144.         (if (< v 0) (setq v 0))7 v- j- ?2 r# d( v, |1 ^5 D
  9145.         (set_tile "m" (itoa m))
    & N" D$ H6 ^' Q, U  d
  9146.         (set_tile "n" (itoa n))
    7 Y& E0 |; G  h
  9147.         (set_tile "u" (itoa u))
    " b1 E  F( z! J
  9148.         (set_tile "v" (itoa v))
    ; f. q; r4 g1 ^$ P3 r! e
  9149.         (set_tile_closed)
    9 w/ P2 `- d; r9 ~+ Z$ R9 U
  9150.         (set_tile_fitsmooth)
    & e  P: h6 k& N% t! u" o& B$ D
  9151.       )
    5 T! h/ S# b9 ^! y' k" J0 G
  9152.       ((= (logand bit70 64) 64) ; POLYFACE MESH
    " r- W7 u0 r+ B* I' S. G
  9153.         (set_tile "ptype" (setq pltype "Polyface mesh"))
    3 |* n# m" A, ]( \$ R) h
  9154.         (setq pointype 0)
    * w: P6 U- F" z) q. e) B
  9155.         (mode_tile "f-s" 1)
    9 c0 A9 X/ s: l$ A# m" e
  9156.         (mode_tile "mesh" 1)" T* U7 c0 l" I
  9157.         (mode_tile "pline" 1)
      a' L8 x/ M! G' d/ q7 |, g
  9158.       )3 \+ k, J  V1 g# e$ o; g3 f
  9159.       (T                        ; 2D POLYLINE' D" P6 u5 v; U5 o* R. D
  9160.         (set_tile "ptype" (setq pltype "2D polyline"))
    7 S7 p( d% U. s3 ^  t1 `
  9161.         (setq pointype 1)$ v( ~. X' x7 y
  9162.         (mode_tile "bezier" 1)
    ' E* d- g& o: u
  9163.         (mode_tile "mesh" 1)/ ?; y# \  c0 x
  9164.         (if (= (logand bit70 128) 128)
    " u! i) N3 g* _& k& v" {+ e2 j1 Q  p
  9165.             (set_tile "ltgen" (setq ltgen "1"))
    ( G* b' h6 [8 C
  9166.         )4 T! \% h( c+ T
  9167.         (set_tile_closed)0 H. @( e0 q' C5 S# v6 ^9 x
  9168.         (set_tile_fitsmooth), y. G0 a0 O# i" I$ O
  9169.       )  X: t9 R* B, ]7 _
  9170.     )
    7 l  I( a4 e! |, a! \
  9171. & z/ g, u& R& ]  K, n, d! K3 j
  9172.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")
    6 f4 H  }8 ^- `8 H6 p6 e+ S% k
  9173.         (progn: t6 d' h5 I" d" C: u
  9174.             (if (not next) (setq vname ename))
    1 n& c( U! S7 `2 \" \1 u( d
  9175.             (setq next T)2 T2 E0 k" D, E# a  q0 d' x
  9176.             (set_tile "ctr" (itoa (setq ctr 1)))
    0 K' J  Z3 b* X+ t
  9177.             (setq vlist (entget ename))7 H# R1 I8 y  \, e! n/ k
  9178.         )
    3 Q3 H3 r$ U6 b3 B: D
  9179.         (progn0 L) G) b6 V6 }7 z
  9180.             (if (not next) (setq vname (entnext ename)))
    9 R$ n  y* G- A  Q9 h
  9181.             (setq next T)
    3 c' |0 v' T* l0 F
  9182.             (set_tile "ctr" (itoa (setq ctr 1)))
    $ m6 p: _$ D. r: E! S
  9183.             (setq vlist (entget vname))0 c' ^5 `# ^5 b! u0 X) i6 Q+ c! S' w
  9184.         )
    ( Q5 m6 W3 |  Z# Q+ p
  9185.     )1 d& P# C( G8 N9 _: S8 W
  9186.     (set_tile_vpt pointype)& w. j# v% J. u" d1 `* S
  9187.     ;; Define action for tiles+ @  P( p( M: ]8 F. _' d+ f
  9188.     (set_action_tiles)
      H9 m4 @) n( P& @* Q
  9189.     (setq dialog-state (start_dialog))9 c, z9 f4 f1 J% ]) h+ i% U; F

  9190. 7 s1 {4 L! Y! X6 \: ^
  9191.     (if (= dialog-state 0)0 m& C3 |! t/ U+ |5 L
  9192.       (reset)8 Q" h1 R& F9 j5 N/ {6 d
  9193.     )
      d1 {0 A' [5 e0 r
  9194.     (if (= dialog-state 1)
    6 F" T& l+ n0 }) }  r; h
  9195.       (progn
    , e% Z9 d& ~6 D. x
  9196.         (modify_polyline)0 j, z- A. I3 G2 @5 y, Z* ?7 t
  9197.         (if (or (= pltype "2D polyline")9 L' t6 y  J5 f$ w' R6 E6 m" ~5 Q& c
  9198.                 (= pltype "3D polyline")
    ( W+ u  T. z, p9 a
  9199.             )9 }/ T0 k9 b  j2 p/ r: L
  9200.           (progn
    5 i& e: t6 q8 e% i* s
  9201.             (command "_.pedit" ename)
    ) d) ^+ B" m3 ~% H& X* s
  9202.             (if (= spltype 0) (command "_d"))8 E2 @& I& o3 ]0 y* n. g) m
  9203.             (if (= spltype 1) (command "_f"))9 B/ a; }6 s* \6 \! u
  9204.             (if (or (= spltype 5)# H6 u6 W! Z. R7 h' g$ C
  9205.                     (= spltype 6)+ e# {! v, b) z
  9206.                 )- f! [1 o+ ^3 C) p! W; D
  9207.               (progn
    7 d6 q! L- B% P# h: ~; {
  9208.                 (setvar "splinetype" spltype)# Y7 H* e& k' O& _- }: ]7 ]; r
  9209.                 (command "_s"), B( l- c% T8 X: v  h
  9210.               )
      r. q2 z# V9 G9 ~" H+ B# a
  9211.             ). r% o8 j7 z1 M
  9212.             (if (= closed "0")
    ; d4 x. [( U3 e
  9213.               (command "_o")+ ^- c8 b# z, f$ s6 f
  9214.               (command "_c"). V. m( t7 g/ ~; j  R
  9215.             )# C4 t0 q. R$ n( V" W
  9216.             (command "")
    % }& R) S8 F8 i) `  b
  9217. 8 v1 o7 W4 }  a/ R: e" f4 I
  9218.             (if (= spltype 0)5 Q+ z5 b1 w0 S' ]9 Q9 [
  9219.                 (progn0 J2 w2 B; f, I2 U$ E6 p. \: P& c& E
  9220.                     (setq oldecho (getvar "cmdecho"))
    / T/ I* E) n7 j
  9221.                     (command "_cmdecho" 0)9 u9 O! Y8 S, @
  9222.                     (command "_convertpoly" "_light" ename "")
      U0 i8 |, M3 d! h
  9223.                     (command "_cmdecho" oldecho)$ o8 S; o8 J5 _
  9224.                 )
    ; M' N0 m3 M/ x- M- B6 C0 |
  9225.             )
    ; Z& Q' _9 ?3 S) @6 J0 U7 t
  9226.           )
    . n% }5 b  o: ?) Z# R5 @
  9227.         )
    ; H' |, u0 c- \/ B% h2 g$ U& D
  9228.         (if (= pltype "3D mesh")
    # L) Q7 @# H& t
  9229.           (progn
      b. E* e4 r2 U- H- E) z$ Q3 I, ]1 H& y
  9230.             (command "_.pedit" ename)
    ' l9 n( m- J/ q" R
  9231.             (if (= spltype 0) (command "_d"))
    ( Q7 ~+ U2 e; V
  9232.             (if (or (= spltype 5)
    * t/ L9 e/ P7 [/ O0 p3 u
  9233.                     (= spltype 6)% S8 }3 F. a! L7 R! ~$ v
  9234.                     (= spltype 8)1 I0 d6 O7 ]0 o+ z( t" C
  9235.                 )
    3 C6 y5 }0 |2 A; t3 P5 [7 \
  9236.               (progn) s) X1 L9 U- [) \
  9237.                 (setvar "surftype" spltype)* c/ k5 h6 u1 P) n9 ]" D
  9238.                 (setvar "surfu" u)
    8 j! l$ j9 K7 h: a
  9239.                 (setvar "surfv" v)3 g8 N, P! {  o& ~1 m
  9240.                 (command "_s")
    3 b& h: N5 b; G5 t* M9 U1 a8 e4 h6 p" v! k
  9241.               )% g+ h" }# E3 d4 K5 {) a+ ]
  9242.             )/ h( F7 J" `$ f- L. o- ]
  9243.             (if (/= closedm old-closedm)
    % L/ D( j: W( ~0 d: n7 @2 q) i
  9244.               (command "_m")
    7 [( x2 F/ ^8 S( S4 j  C
  9245.             )
    ; l% \- p6 ]. p
  9246.             (if (/= closedn old-closedn)
    % C3 j+ r/ ~% K& a
  9247.               (command "_n")
    % G. v% E% L. V+ a9 a+ L1 d& j
  9248.             )" B' n! K3 z3 E+ d
  9249.             (command ""): ?. L# z3 V2 Z  t% K. S
  9250.           )  m# O, X3 i6 W1 J" h) [
  9251.         )
      J5 j" o8 e) }" W! [9 a
  9252.       )
    % j% `# L% D+ |! j/ V
  9253.     )1 e7 a, M" ]$ }% O1 P' A
  9254.   )
    % N( R! G; ~+ U2 ?% R$ ^( w) b
  9255.   ;;
    8 M7 d, c3 s3 p  n3 `$ w
  9256.   ;; All the spline data is contained in a single elist. We must do some
    ) H1 E* r8 `0 K5 f( b4 N8 K
  9257.   ;; tricky list processing to loop through the elist in order to display7 j: h* j2 M1 C1 \2 S
  9258.   ;; all of the control points., H# q1 Q, Y! R9 J4 ^- _
  9259.   ;;
    / z+ A7 U$ j, ]! @4 p5 z
  9260.   ;; The structure of the elist is different for rational and non-rational
    4 a3 t6 o7 E! E1 ^$ D
  9261.   ;; splines. Therefore, we check the rational spline flag.3 S- j. X6 m. u  J, G
  9262.   ;;
    % H7 M0 H" f: L% \
  9263.   (defun next_cntl_pt ()/ h9 Z2 E& l, f, p# M( {
  9264.     (setq elem-no 0)               ;; elem-no = element counter
    3 q5 I1 t% T) ^
  9265.     (if (= first-10-time 1)        ;; If first time, find location of first. j, g' g; T+ v7 p2 [* ~. ]
  9266.         (foreach list_item elist   ;; cntl point element in elist' k( t& G/ p2 r* ]
  9267.            (progn
    0 N' j' G6 Z( Z+ j/ F
  9268.                (setq elem-no (+ 1 elem-no))! f$ J/ Y  o; \' W3 T; I
  9269.                (if (= (car list_item) 10)
    $ J2 Y2 W2 j! b5 |$ R% S2 k' w
  9270.                    (progn7 x3 f, h& A& ]  k  H5 D5 b3 y
  9271.                        (if (= first-10-time 1); x9 [6 z  w4 W! u
  9272.                            (progn# a6 W+ l  x" w! y: N1 p- z
  9273.                               (setq first-10-rec (- elem-no 1))+ x5 `7 r2 w3 A4 z
  9274.                               (setq first-10-time 0)
    0 {( Y% G, H9 q$ D. r0 Q: ~
  9275.                               (if (= rational_spl_flag 1) ;; if rational
    4 p3 {& u% r" Z* ?8 y2 U
  9276.                                   (setq cur-10-rec (+ elem-no 1))
    9 i7 a& c5 _! d: S$ E+ F
  9277.                                   (setq cur-10-rec elem-no)
    1 e1 w0 F: k, k0 [8 e5 E. H
  9278.                               )& R% s' y& j# e1 ?% Y, |
  9279.                            )0 L4 r4 C1 @; U! I4 N
  9280.                        )
    % C" f% f3 W; F
  9281.                    )
    7 H- y; N2 x9 C
  9282.                )0 A9 C5 f& c  _: L4 b( u1 Y
  9283.            )2 F3 _, X1 b4 r' a- y
  9284.         )
    + r% W3 E! z1 }4 |( u
  9285.     )
    - Z% M# A# m) ]. @
  9286.     ;; Now we know the location of the first "10" record; it's stored
    ; S2 m- t& Q4 T( Z& n+ q
  9287.     ;; in first-10-rec. The first 10 record was already displayed when
    $ l6 |, A5 H: N# T% r
  9288.     ;; the dialog first came up so let's display the second one when
    0 m$ A! H6 J  e& r
  9289.     ;; the user presses the "next" button (the first time through).
    0 y0 V' h7 u2 D5 ]
  9290.     ;;
    ) S; L3 Z% P" g9 G: v4 }
  9291.     (setq temprec (nth cur-10-rec elist))6 _- h* t% s% x1 H  s  O6 B! `, Y
  9292.     ;;
    / [% I( |" `0 j- y3 R; ]0 P
  9293.     (if (= (car temprec) 10)   ;; if 10 record
    + p! E+ r3 y) q1 M. {9 O; }
  9294.       (progn
    % N7 ~7 h( H% ]1 s
  9295.         (if (= rational_spl_flag 1)    ;; if rational spline
    # w4 y( x! e3 r; G
  9296.           (progn
    - P- _2 r- E- E+ j" b
  9297.             (setq tempweight (nth (+ cur-10-rec 1) elist))- J% s8 [& m5 g- W9 c# C% k, @
  9298.             (setq cur-10-rec (+ 2 cur-10-rec))
    $ Q  w6 w" D; q+ W. L
  9299.           ): J7 ~4 x% |, p2 |9 N6 T' J0 j
  9300.           (progn                       ;; else. W1 Z/ a' {4 {9 f5 {( u: Z
  9301.             (setq cur-10-rec (+ 1 cur-10-rec))
    - N- J, z8 g& z2 G
  9302.           )
    ( }/ L9 H! K6 W& G( |3 w
  9303.         )  p+ ^% a3 D2 F' ]# F- z" {
  9304.       )                                ;; end if rational spline
    , M, R# I& w# ?. q6 U
  9305.       (progn                   ;; else reset counters
    2 h" {# |  r1 Q% h' T
  9306.         (setq temprec (nth first-10-rec elist))  ;; get 1st 10 rec
    ) k$ T& y3 X" K7 y6 U
  9307.         (setq tempweight (nth (+ first-10-rec 1) elist))
    9 C, F% C# h5 ?3 q
  9308.         (setq cntl-pt-indicator 0), X( w6 j5 f' w* I7 f
  9309.         (if (= rational_spl_flag 1)             ;; if rational
    8 q. Y! k# Q' p4 H: M; e
  9310.             (setq cur-10-rec (+ first-10-rec 2)) ;; point to 2nd 10 rec
    ! t% c% y; _: y4 X" R8 G1 O
  9311.             (setq cur-10-rec (+ first-10-rec 1)) ;; point to 2nd 10 rec: E* X. V+ z- b5 d( [" A
  9312.         )8 @, T* o% W, ]
  9313.       ); X8 f" I3 c* N" d0 W% L
  9314.     )                          ;; end if 10 record) {' A1 w9 C7 N

  9315. 9 z* q3 V, N$ M7 I6 i1 x
  9316.     ;; Display cntl point, weight and ctr. Increment ctr.
    8 u" Z; i% V1 }8 ?$ H* T, i
  9317.     (setq cntl-pt (cdr temprec))
    / j( L& ?. q* G8 c$ I  P
  9318.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    1 A! W) M  z: e9 `# `$ g0 q) ?" ~% S
  9319.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))
    ( M2 ?, [! n' d1 L# H
  9320.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))5 Y1 ~8 u3 N3 g$ @8 c3 H' ]0 C- A5 y
  9321.     (setq cntl-pt-indicator (+ 1 cntl-pt-indicator))
    5 x, [8 T3 J* ^) |% x- v$ Z3 @
  9322.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator)): Q5 h% O4 `8 d! p& E1 [
  9323.     (if (= rational_spl_flag 1)                     ;; if rational3 d4 G1 _3 T7 w" e! _; W2 ?, O7 H
  9324.         (set_tile "weight" (rtos (cdr tempweight))) ;; disp wght$ ?' t6 d+ P8 H1 a! L
  9325.         (mode_tile "weight_text" 1)                 ;; disable wght+ m$ g+ f3 V; N7 C7 h! q7 l
  9326.     )
    . B$ T2 D! G' T  q
  9327.   )2 A; C  v: t# z5 S- g
  9328.   ;;
    7 v2 s( {  b0 c( K+ w9 ?
  9329.   ;; All the spline info is contained in a single elist. We must do some" v! q* O5 i6 C) ~1 |& {
  9330.   ;; tricky list processing to loop through the elist in order to display
    - d0 W$ b% [, \0 ~% F
  9331.   ;; all of the user data points.
    - ]2 f6 e( H9 Y5 G; |) W* c
  9332.   ;;
    ( K' t: l6 k& D( @# ]
  9333.   (defun next_data_pt ()7 V& ?: y2 F) h9 }- c, e$ R. J
  9334.     (setq elem-no 0)               ;; elem-no = element counter0 G* M7 m; r; A# D& }/ T' w
  9335.     (if (= first-11-time 1)        ;; If first time, find location of first0 d1 W. ^. {* r  ]7 R( |
  9336.         (foreach list_item elist   ;; data point element in elist
    : U, M+ C( {* e; a
  9337.            (progn
    - n8 Q2 L' S0 _& y$ z0 P
  9338.                (setq elem-no (+ 1 elem-no))
    1 v: V2 `- _, i) F
  9339.                (if (= (car list_item) 11)
    5 `+ J; b4 B8 d9 Q2 |. R
  9340.                    (progn  ~, }& ^  j. o3 |
  9341.                        (if (= first-11-time 1)
    , P) K! x& J! {0 x8 R% w* I
  9342.                            (progn. e2 [3 U) {' ~& d
  9343.                               (setq first-11-rec (- elem-no 1))
    " D' C2 L/ w3 P. D0 f+ O: e/ L
  9344.                               (setq cur-11-rec elem-no)7 |3 Y* O2 @$ ~, \- |
  9345.                               (setq first-11-time 0)
    1 p4 }, e/ \2 d$ [" J! h
  9346.                            )0 r/ e4 A4 R5 h  b" A
  9347.                        )  |* @8 J' }. u: B' n* A& [
  9348.                    )
    $ A5 J$ O- L9 w. |
  9349.                )
    " x* C8 o: [8 E3 ?7 W5 V. k
  9350.            ): q; Q  r4 z5 Q/ F6 r2 ]/ a+ x: l
  9351.         )
    0 ~- ]% ]* ^/ x& W* T+ ?1 l8 u: s
  9352.     )4 ?  b1 U- E7 y2 i3 z& ?
  9353.     (setq temprec (nth cur-11-rec elist))
    7 J5 d: w  X# I7 O* {
  9354.     ;; If it's not a DXF "11" element then we've gone past the last
    5 D" T3 p9 t+ @
  9355.     ;; "11" element. Go back to first "11" element. Reset counters.
    , V$ b8 \. U! ^! E' S& L
  9356.     (if (= (car temprec) 11)  u4 X2 g) ]0 o( d3 D6 U+ P. D  p5 E. H
  9357.         (setq data-pt (cdr temprec)). W  ?8 q! K( j
  9358.         (progn                           ;; else1 r" L: [0 L" Q& w! z2 O
  9359.            (setq data-pt (cdr (nth first-11-rec elist)))
    2 P7 j: c$ `- d6 q
  9360.            (setq cur-11-rec first-11-rec)0 R6 p  O3 Q: Q4 L/ G& l
  9361.            (setq data-pt-indicator 0)% A& i: m5 {8 e+ Y/ _: F
  9362.         )( |, [1 o/ T6 H  ^
  9363.     ), o# A( E9 E2 B' x8 E
  9364.     ;; Display data point and ctr. Increment counters.# U1 B9 U0 g+ K" c1 Q
  9365.     (set_tile "dxtext" (rtos (setq x1 (car data-pt))))8 R* o" H7 f4 h& H1 V1 Q
  9366.     (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))
    $ z$ O# K3 C$ B" j: n- u
  9367.     (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))
    ' r) a" T2 K8 e% R! \( P+ A
  9368.     (setq data-pt-indicator (+ 1 data-pt-indicator))1 M6 z( Y9 j2 [" w( c8 A- X" Q9 p
  9369.     (set_tile "data_ctr" (itoa data-pt-indicator))
    & z; s6 G+ u; u3 |' i
  9370.     (setq cur-11-rec (+ 1 cur-11-rec))/ Q* I6 S/ n5 _: m! b3 C
  9371.   )
    ( Y3 i* {# Y- a
  9372.   ;;$ W( g2 D0 q) f/ V6 d
  9373.   ;; Modify SPLINE, m, g7 W- U, A5 Y0 }
  9374.   ;;  w& M$ O8 u/ {* `
  9375.   (defun modify_spline ()
    2 ~; A; v7 y/ R9 b9 C
  9376.     (modify_prop_geom)8 B) F, w! L. h1 T
  9377.     (entmod elist)! B$ L! @1 d8 p# c4 {& U( V1 J
  9378.   )
    # S: x8 t( w+ W4 m" a

  9379.   l- `8 D; P6 V8 e$ @
  9380.   (defun ddspline ()
    ' x$ I  r4 O* _
  9381.     (if (not (new_dialog "ddspline" dcl_id)) (exit))
    - |, F1 l8 [  b
  9382.     (set_tile_props)
    0 D  J# Z* G, Z& c9 Z
  9383.     (set_tile_handle)/ K0 p2 }& C$ K( o& r) Y
  9384.     (set_tile_spline_props)
    0 T$ v5 i: r0 `1 x* e9 A
  9385.     ;; Display first control point
    * H% I' A, v% Y" |' l) ^- _0 T* @8 p
  9386.     (set_tile_cntl_pt)
    - P+ |9 Y/ V, K
  9387.     ;; Display first data point
    6 ~+ c1 G% j% f, n% C! R6 |
  9388.     (set_tile_data_pt)# W& S9 ^/ H0 [# v

  9389. , e; y( V, O' ], q) w
  9390.     ;; Initialize flags to indicate first time through the dialog.1 p. j: N  `4 E% m7 w$ x
  9391.     ;; For control points and user data points the "next" buttons
    1 R$ t! W- i/ @$ j6 S: N, }
  9392.     ;; in the dialog call the appropriate functions.4 W; b( T2 A/ ?3 G% o5 `
  9393.     (setq first-10-time 1)
    8 T# R0 p9 L4 H0 b
  9394.     (setq first-11-time 1)+ F4 R4 a5 P0 H3 G' W' G
  9395.     ;; initialize control point number counter/ ]- ~9 s- M( w4 Q6 ^
  9396.     (setq cntl-pt-indicator 1)# f- \6 z0 X+ J0 G( N- H
  9397.     (setq data-pt-indicator 1). a4 s: M: r/ @* E$ R( }
  9398.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))9 V+ C7 b% k) x+ B4 i0 |) |, k+ S
  9399.     (set_tile "data_ctr" (itoa data-pt-indicator))5 V: T' g% O2 m+ V$ l7 H
  9400.     (set_action_tiles)
    3 K! \8 C8 e9 r
  9401.     (setq dialog-state (start_dialog))/ B/ O4 \) S5 a! R$ a& x, A

  9402. ! }0 f' v% O+ g4 J# J% x
  9403.     (if (= dialog-state 0)
      ~# o5 {6 \; D2 D% n
  9404.       (reset)
    " I3 ~" K  U9 R' a, M
  9405.     )
    ( N* w' ^  Y9 v+ }
  9406.     (if (= dialog-state 1)
    - W+ c0 x/ t8 P! `0 S! x
  9407.       (modify_spline)
    % v- Z+ h* Z7 H% |! y# i4 D
  9408.     )
    3 g; p7 o# n, `. [8 \8 {7 I
  9409.   )7 Q3 E& l0 X/ }; A
  9410. : _: l/ U, S# ?5 z
  9411.   ;;
    , |3 y' Q' N3 J% M; Z" T
  9412.   ;; Modify DIMENSION$ Y1 Q2 n4 ?, q* q
  9413.   ;;
    . c: f* V" d/ j3 s1 [
  9414.   (defun ddimen (/ dtypebit blkname bename sublist a stname n dimtbl
    / t( [# D' R/ y; V
  9415.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist
    " P) ^; r* i& J5 O2 _6 M
  9416.                    dimtype dimsvcurset)
      e! G  Z' |: w& u. k1 q
  9417.    (setq dimtype "DDIMEN"5 @5 y$ m# Z6 ?$ m  o
  9418.           dimsvcurset (ddimen_dimsty_restore)7 V7 n0 `' N. [; X% d; x
  9419.     )
    $ k8 H- D, e* Q7 f6 s, B
  9420.     (if (not (new_dialog "ddimen" dcl_id)) (exit))  }% D) B) l% j
  9421.     (set_tile_props)
    $ \  ?$ [: E; @" m5 p0 R
  9422.     (set_dimen_props)
    + L, p% {# E1 I" t
  9423.     (setq dimtext (cdr (assoc 1 elist)))+ q% T: B* I; R5 Z4 s
  9424.     (set_tile "t_string" (if (= "" dimtext) "<>" dimtext))1 Y; i  O9 ]7 @2 n
  9425.     (set_tile_handle)& Z. B( @$ ?2 t* M
  9426.     ;; Define action for tiles
    5 s) B3 N: b5 G. m4 {
  9427.     (set_action_tiles)0 o5 s+ R: z+ M* p
  9428. ; H- Y; L; h! J( E0 X& e
  9429.     ;; Set initial focus to text edit box.
    7 m- G4 E) f/ T
  9430.     (mode_tile "t_string" 2)1 ^2 m5 S: j4 |0 _" N
  9431. . d' J2 M2 @- p, F0 m1 u
  9432.     (setq dialog-state (start_dialog))- L( d% ?" P) H
  9433.     (if (= dialog-state 0)
    # `( k* X9 v, O/ n( g, t/ g
  9434.       (if (= ddimmt 1)% B- a  c* U" A  K! S
  9435.         (reset)
    " |  n) T* s5 `, `7 ?
  9436.       )
    " [2 ?0 `2 p* i9 P" v
  9437.     )3 W" G  w' H0 D8 ~( h! A
  9438.     (if (= dialog-state 1)& A. k1 S8 I* j) J! `" P* W! `% U, G
  9439.       (progn  I6 J' T) u, \; S, J% }& E: v
  9440.         (if (/= dimsty stname)1 O) H4 G0 Z6 ?! c& K5 m" Y
  9441.           (progn6 c& W  h8 N) q, z
  9442.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    2 B& n- u8 Q! _4 ^. y9 Y& T
  9443.             ; doesn't have it.
    ' g: v, l" b1 L: o- z4 I
  9444.             (if (null (assoc 3 elist))
    9 `" t7 A  F* X$ i% x0 [
  9445.               (setq elist (append elist (list (cons 3 dimsty))))
    + g2 s; v" B) b$ \
  9446.               ; else just replace it.$ H8 A) x4 Y: T* g; P3 s" ^
  9447.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))' S2 b/ r7 o* L+ P" r
  9448.             )
    ( T6 j% y7 v; Z2 B- I+ |
  9449.             ; refresh sv_dvlist with new dimstyle.* I  [% g) }& J% E/ S/ {1 o
  9450.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))4 |. s) H$ }" `
  9451.           )
    ) H9 `. j% {- H  F$ T( D% i
  9452.         ); L1 D7 n$ M7 ~* G6 r# l5 n
  9453.         (if (not (null dimlist))   ; attempted to change dimvars
    2 @- h" a5 o) p9 M: t& ~
  9454.           (ddimen_complist sv_dvlist dimlist dimtbl)
    , j  U) k) o9 y  ~- c  e
  9455.         )
    * ^9 Y, N$ P( u! A+ `8 Q  B* A
  9456.         ; Modify dimension text
    ' Y2 a" c& x+ Q$ y' h
  9457.         (if (/= dimtext text): P! }% w- S1 V  _' u: E
  9458.           (progn
    / y5 m9 R$ X" G8 e% r
  9459.             (setq dimtext (if (= text "<>") "" text))0 V" T, J% G- r: ^; c+ Q
  9460.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))
    + G, J7 Q' Y9 @1 ^6 O) h/ Y( _' m
  9461.           )$ o8 T: }/ t$ g
  9462.         )2 e5 H, `* N; T. b5 o! X4 B
  9463.         (modify_properties)
    # p; P: E8 d9 C# J
  9464.         (entmod elist)/ m6 t0 a. b. j+ y. h
  9465.       )
    * J/ \: f. O; E& Z$ j, J
  9466.     )5 n& w+ S" h( [" [) y' e
  9467.     (if (= dialog-state 4)
    - o' {& N2 ]9 I1 k6 X, _' }/ y
  9468.       (progn& l& [- l1 u! }* [$ B/ m5 O
  9469.         (setq ddimmt 1)
    $ K' }/ X' m- b9 e
  9470.         (if (/= dimsty stname)( x* ]5 R6 S" l
  9471.           (progn
    9 N2 D/ J6 L% K# M" N# H! `
  9472.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case) r; V/ ]0 m" @# R* _$ O' S" l! I: V
  9473.             ; doesn't have it.) B8 `8 C8 \, O; @" f* P
  9474.             (if (null (assoc 3 elist))' @. X1 i0 x. `" z- z0 K. a
  9475.               (setq elist (append elist (list (cons 3 dimsty))))
    8 l5 Y1 f* H0 \1 W, J% g
  9476.               ; else just replace it.
    % ^6 w% L' s  R5 ]
  9477.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))5 a( F, t$ }- H- W
  9478.             )9 X& ^+ E. d4 h. h0 X% j% r
  9479.             ; refresh sv_dvlist with new dimstyle.
    ; ?/ {3 `0 V4 L1 q4 n0 B
  9480.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    5 g! R* Z% C+ L6 L$ q( G. `
  9481.           )$ @. @, B. j: n7 Q6 b
  9482.         )
    6 K2 z' [1 o+ Y1 T% o" K2 y( T
  9483.         (if (not (null dimlist))   ; attempted to change dimvars
    3 |5 `) S" A  O! p) a
  9484.           (ddimen_complist sv_dvlist dimlist dimtbl)/ t# \, d4 u) \$ r+ t
  9485.         )
    8 z5 e. u0 `( |8 `- r
  9486.         ; Modify dimension text! j. E, A- h3 S" D' r. ^2 [
  9487.         (if (/= dimtext text)
    8 Q% e$ x; F# R7 C% w
  9488.           (progn2 N8 X& b; G' K& C4 z
  9489.             (setq dimtext (if (= text "<>") "" text))
    4 r8 {2 o- s) o6 u  M2 m6 P& x4 [$ ?
  9490.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))
    . h# D- o: C. s& I$ P1 r
  9491.           )
    - h$ D6 i0 u* N4 U
  9492.         )4 u; v9 s1 o( C8 m# f
  9493.         (modify_properties)
    1 P4 x- n8 w7 S; l4 n
  9494.         (entmod elist)
    % b4 P( Z0 E) ]
  9495.         (safe_ddedit ename)
    9 k7 I; D6 U7 l
  9496.         (setq elist (entget ename))0 r/ d3 D/ |& w9 J* O& U& {
  9497.         (ddimen)
    8 h* q: T& J. Z( t) ^  A9 S  C
  9498.       )
    / X, }# d6 B: u" w
  9499.     )! m- ~  P( p- i+ F" Y5 ?
  9500.     (ddimen_setvars dimsvcurset)      ; Prepare to exit+ C& C9 g# e, |
  9501.   )9 G5 G0 Q1 ]# Y! h

  9502. " r, L( r+ r( \+ g: `2 `; u- q
  9503.   ;;
    * w! r) P0 I7 O' R0 ?1 U  m
  9504.   ;; Modify TOLERANCE
    : S9 o4 [/ ^' f& Q% j9 Z
  9505.   ;;
    ( G( V- T* R& L+ n$ V+ H! A6 t1 W
  9506.   (defun ddtolerance (/ a stname n dimtbl  ~9 \7 t  t7 @! C& u. B  J1 Z
  9507.                    dimsty dimlist dimovr sv_dvlist stlist dimtype6 F3 z+ x; ], c; J
  9508.                    dimsvcurset)
    1 Y. s7 R, }+ z: N- V; c/ ^7 o
  9509.     (setq dimtype "DDTOLERANCE"
    ! c. k- L  {: z& T
  9510.           dimsvcurset (ddimen_dimsty_restore)
    5 r+ A1 L$ _; w) A1 `; X
  9511.     )
    $ i* u  O  y/ D) ~) f5 h2 _
  9512.     (if (not (new_dialog "ddtolerance" dcl_id)) (exit)); J$ r) F( ?4 u! P# Z! P6 t
  9513.     (set_tile_props)
    7 k' w: F) G% D3 Z/ c8 G9 O
  9514.     (set_dimen_props)
    # A4 x3 Q. Z6 v
  9515.     (set_tile_handle)7 ]) l% i# E- E1 Y, m
  9516.     (set_action_tiles)
    9 f, h7 P. [0 b9 D+ R
  9517.     (setq dialog-state (start_dialog))* r  Y5 u! H) z$ M; A
  9518.     (if (= dialog-state 0)* M  G; z) C! ^- T" j0 |
  9519.       (if (= ddimmt 1)! `2 R3 V4 C' S: `% h
  9520.         (reset)" s! A. x% K# q2 I/ |  c) Z
  9521.       )
    8 e3 }7 ?4 p+ I/ a
  9522.     )5 \' D/ G" X+ @. Z
  9523.     (if (= dialog-state 1)2 `- k0 y5 e8 z
  9524.       (progn
    $ @$ {" v9 s2 S- t5 I$ T% q
  9525.         (if (/= dimsty stname)
    2 z* y: k9 }% G1 ~8 j4 p" Q5 R/ Z8 J5 G
  9526.           (progn5 L9 }! G1 l! x9 D, X+ L
  9527.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case* ?) |- ^$ h( Q
  9528.             ; doesn't have it.; C$ U/ a+ t/ x. y9 D! F
  9529.             (if (null (assoc 3 elist))- y- |0 ?1 W5 }6 @) H9 x; S9 c
  9530.               (setq elist (append elist (list (cons 3 dimsty))))8 x& K5 w% D1 A" p4 e: x# x* _
  9531.               ; else just replace it.
    7 A/ j, r) v0 r, q
  9532.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    8 o1 c  i+ L8 F: U. b; z- ]
  9533.             )
    3 G4 W# d6 M; @
  9534.             ; refresh sv_dvlist with new dimstyle.: ]( {% C: d  L4 ?' o
  9535.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    4 A* o  j0 ]! G  @4 [1 C/ d! f: J
  9536.           )4 H9 s: q) Q8 |- s+ }' u# {8 e
  9537.         )! S# P6 X4 r  A+ V& m
  9538.         (if (not (null dimlist))   ; attempted to change dimvars+ }- s3 `: A2 T+ k* P% ~
  9539.           (ddimen_complist sv_dvlist dimlist dimtbl)
    - H1 q6 o7 q! w. f# s- u1 L
  9540.         )  K& p& X! s% L5 C' D2 r( O% q
  9541.         (modify_prop_geom)$ V" X8 ~$ M- V$ ?% g6 j- k+ F
  9542.         (entmod elist)1 H+ g; f- n1 M2 F
  9543.       )
    & B( l1 L  L# N  S3 ^& H7 y' s. U( u5 h
  9544.     )
    2 w2 T5 M* t% F, Q' L
  9545.     (if (= dialog-state 4)
    " A) O/ l3 N$ |1 K
  9546.       (progn, G) ^. S9 c. j1 L( i2 k
  9547.         (setq ddimmt 1)
    3 x; I. G( u- [6 U1 R! P
  9548.         (if (/= dimsty stname)3 K, q. t% W( Z! n0 k
  9549.           (progn6 n  G. k7 c- F$ o, B; v7 U
  9550.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    ! Q% p9 f3 K. E
  9551.             ; doesn't have it.1 h4 t+ {7 t' \* H
  9552.             (if (null (assoc 3 elist))
    , f$ ^  f; Z1 X% Y# m4 q
  9553.               (setq elist (append elist (list (cons 3 dimsty)))): q1 q+ Z' N3 g% w
  9554.               ; else just replace it.
    : Z3 l: B, H: T% [  G9 r' l# d
  9555.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))8 s- H/ n* v7 ~' F0 x! r/ H( ]! d
  9556.             )
    / @% k7 T% S& K4 m. q( S/ t
  9557.             ; refresh sv_dvlist with new dimstyle.: o# p& p3 Q( G! ?# n
  9558.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    6 `& ], R, [( }) T
  9559.           )" Y4 @, ~) [7 ~$ U: T0 |8 B
  9560.         )3 U# }. m0 ^5 t
  9561.         (if (not (null dimlist))   ; attempted to change dimvars
    ' w$ t9 K5 x8 B. i6 b% I; d
  9562.           (ddimen_complist sv_dvlist dimlist dimtbl): N, Q9 ?  e; |- e9 U3 [, l
  9563.         )9 M1 |/ L* s( ^; {8 j
  9564.         (modify_properties)
    # B+ F: K7 I) }; g- K
  9565.         (entmod elist)
    $ s! R/ ^( Y! u$ b% @5 s  |) V  Z
  9566.         (safe_ddedit ename)
    7 j6 ]4 l- V9 t
  9567.         (setq elist (entget ename))
    9 O: P$ z& h7 M
  9568.         (ddtolerance)2 v; c) {7 F7 u1 L, V  N0 e
  9569.       )& {# I0 |# D  M7 b) X. F) I
  9570.     ), Z7 P/ E" I! i; J! B1 @  B6 A
  9571.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    $ h: u* G, W& P$ j
  9572. )5 z! S) {$ h1 t; {" M! s
  9573. 5 P. v. g; F! \3 x
  9574.   ;;
    / G! g' D# f+ Z+ V3 s
  9575.   ;; ddimen_dlg - jump to ADS ddim module
    ! l1 M7 h  O' I3 N9 v- G
  9576.   ;;
    / x$ R4 J* g! s1 z1 o

  9577. + o% `' L* H$ t
  9578.   (defun ddimen_dlg (dimtype tile dimsty dvlist / dimlist)
    8 L, w* y) Y( w+ U/ U: Z: L% p1 @

  9579. # o8 |8 O- h* `* L( j. G
  9580.     ; Jump to DDIM with overrides if any.
    2 U9 s# V8 \' G8 h* @$ R
  9581.     (cond ((= tile 11) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Geometry
    ! b/ o" D. O( E
  9582.           ((= tile 12) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Format( g& q6 ]! Z% h6 K; v& i2 [  R$ ?
  9583.           ((= tile 13) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Annotation
    ' B' ~- j; m8 g. `
  9584.     )
    1 y$ u; r. e; [! R- O4 Z# r4 y" ^
  9585.   )
    & {% L& Q9 s& ^) U! ?$ {

  9586. 4 H" b* C# P0 I8 ^1 H/ i) ]- [7 ^
  9587.   ;;) V2 [9 G" [! W% U! D
  9588.   ;; Dimension variables updated are stored as overrides.% j5 c  V' N( \5 i
  9589.   ;;/ G: a% C5 [5 H

  9590.   ?0 c+ @1 f6 p
  9591.   (defun ddimen_complist (dimolist dimnlist dimtbl / i odvar ndvar1 G/ A+ ?! M: i
  9592.                           dv dime commandIssued)1 e8 |9 ?9 a3 W1 ]# p% Y
  9593. ; G7 A" k# k( f  Y
  9594.     ; Here we skip the following first three items:- a3 ^+ T7 c2 q+ M- R0 j
  9595.     ;   (0 . "DIMSTYLE") (2 . sylename) (70 . 0); q& ^5 e* G5 o9 X) D) L1 S1 }( X
  9596.     ;
      n1 W$ V3 o' X/ b/ [/ x2 T
  9597.     ; The list comparison immediately begins with dimvar.
    + P1 b1 S5 o% x
  9598.     ;  V% h6 p  M1 ?8 L: t' P
  9599.     ;  dimolist - original states of dimvars2 C5 {; F; W4 ?, h& `
  9600.     ;  dimnlist - new dimvar list which is of the resbuf's
    ' N8 ^1 f! W& l! i! D, J
  9601.     ;  dime - entity name for the dimension1 D; N; _5 i3 v
  9602.     ;  odvar - value of dimvar for the dimolist% p5 l9 R  }% T
  9603.     ;  ndvar - value of dimvar for the dimnlist7 x2 i8 D; ]; P& S( n" {( a
  9604. 3 b7 M+ {4 n& W6 N; c
  9605.     (setq i 3- }0 m. _7 M% L4 j: k* q5 L
  9606.           dime (cdr (assoc -1 elist))
    $ T+ X# k7 X# p& M( h
  9607.     )
    ; L7 }: t, a% n; M
  9608.     (while (setq odvar (cdr (nth i dimolist)))  Z# f* M6 m! G1 Y, ?9 ~
  9609.       (progn, O% j* b% i0 t; M% i8 R- N
  9610.         (setq ndvar (cdr (nth i dimnlist)))" t; l# ]# P. J% m( q* b! I
  9611.         (setq dv (nth i dimtbl))
    6 `! s5 E  M2 h/ W8 |
  9612.         (if (eq dv "dimtxsty")
    : f; V! d4 _+ @+ S
  9613.             (setq odvar (cdr (assoc 2 (entget odvar)))
    6 m, w$ `  [( ]- H' n& ~  q0 T* M
  9614.                   ndvar (cdr (assoc 2 (entget ndvar)))
    6 j7 M/ q! I; @9 I- L5 c3 k
  9615.             )
    6 p/ ?) p4 a% Y# E1 A8 b3 h
  9616.         )
    : P. ?1 D& n1 _: p- h9 R

  9617. % M# _4 e- k0 ~3 G8 f
  9618.                 ;2 M  _! l& q/ C, i' X
  9619.                 ; In order for DIMOVERRRIDE to operate correctly with string5 c" F2 M0 q1 d+ C, j6 I* `% W' E
  9620.                 ; based dimvars, we must pass "." versus NULL strings.
    5 C/ E2 }( Z+ Z) q5 M0 P0 {
  9621.                 ; In this case ndvar is the new dimvar value the user wishes
    . J7 C+ Z. m. G) a; u! S. b
  9622.                 ; to update on selected dimensions.5 T" t8 E2 A2 g
  9623.                 ;$ R3 v$ w, v7 S' a
  9624.             (if (/= ndvar odvar)
    * w7 P$ G  Y" [- a
  9625.               (if (= 'STR (type ndvar))' Y1 m* R0 k0 v" ^. x
  9626.                 (if (= ndvar "")
    9 ?0 p& e. E; t" ]0 l  ?9 w
  9627.                       (setq ndvar "."))))" E% K" f% u! ?2 n9 K: t- [
  9628. ' }7 t3 k1 ^3 U" R/ O) P$ C8 \
  9629.         (if (/= ndvar odvar). G8 d; y! _/ m+ h' r
  9630.           (progn
    " y* M5 Q, Y  G  [1 l0 ?8 z
  9631.             (setq dv (strcat "_" dv))
    * S1 o5 w2 n7 W2 L3 o" L# j
  9632.             ;
    5 @2 P7 v2 V5 L- A* g& @
  9633.             ; Start the dimoverride command5 d- A! E) J7 V5 a! Y2 m0 p
  9634.             ;; x6 ~) b# o$ I% A$ _0 V- ]) D
  9635.             (if (not commandIssued)/ d+ n, g3 `9 s/ X) z$ R
  9636.                (progn
    % ]% K+ x- a# U7 e
  9637.                  (command "_.dimoverride"); Y6 p& R4 I5 I" k% S2 H
  9638.                  (setq commandIssued "T")
    , P+ u6 U/ Q* ^$ w; j2 {. r, m
  9639.                )+ y- K1 u- H  v6 J
  9640.             )5 t8 s" j2 Y9 E% g* M; v8 x
  9641.             ;
    * p. ^. T4 f* C
  9642.             ; Issue dim overrides
    / f& s* S. U5 T1 z; U% m7 \
  9643.             ;# E! `& [4 f5 L' Z
  9644.             (if (and (or (= dv "_dimclrd") (= dv "_dimclrt") (= dv "_dimclre"))/ A8 f, B0 h2 R7 k
  9645.                      (or (= ndvar 0) (= ndvar 256))
    % T6 z9 g: q/ T3 u
  9646.                 )2 M6 ]- R& m$ `& L$ y. W. N: m
  9647.               (progn
    ' l. Y6 U0 I" i% W" a- N
  9648.                 (if (= 0 ndvar) (command dv "BYBLOCK")). m# l4 l1 {$ [# Q; S8 O+ V
  9649.                 (if (= 256 ndvar) (command dv "BYLAYER"))
    & ^2 s2 B9 i( X# i6 @7 D7 [/ v% ]
  9650.               )9 w& b( k  C5 L0 Y/ O% K; p! [
  9651.               (command dv ndvar)0 l1 @* s0 l8 \- y4 n
  9652.             )5 |7 I6 z/ [- @8 k2 r  R# X' _! T
  9653.           )8 k6 h4 L5 i2 K" B! Q
  9654.         ): M  Q! z( l4 e3 Y
  9655.         (setq i (1+ i)): t; m  U; ~) t% S  c
  9656.       )/ {+ ~- ]: ~2 l) Q
  9657.     )
    8 a3 [4 y1 E+ `5 h
  9658.     ;7 h2 ~0 U& p3 u" p
  9659.     ; Select Entity and terminate command
    + V( b: B+ w& e
  9660.     ;3 w; O% t! }+ H4 H8 R. \: e; Z
  9661.     (if commandIssued3 i# r9 ^5 m, a5 K% C8 W% l! e
  9662.         (command "" dime "")1 {  M: N  e! I7 y7 C5 H8 F
  9663.     )! o& `/ \; @$ h( u1 Q) P
  9664.   )
    9 J) Y! A$ }' N# i7 e  i- p! a8 \

  9665. ) d1 j+ d& }  A0 G# \) R
  9666.   ;;
    . Z9 q' a) M, e! j
  9667.   ;; Get style name currently selected style name.
    / D' p# r9 _. b" [2 t. X5 A
  9668.   ;;
    ! L; D7 W0 W. e4 u2 N3 t# \& g

  9669. & y9 u% B0 Y8 c! O: f7 b
  9670.   (defun ddimen_style (/ dimsty)+ E7 k1 v& ]. A* a
  9671.     (setq dimsty (nth (atoi (get_tile "mod_style")) stlist)
    ' C. C1 r: l( ~- A, L
  9672.           dimlist (ddimen_getdimvars dimsty), Q1 c7 ^5 l, \2 {- k9 x
  9673.     )
    / D3 ?; z) \1 |. q2 v- t
  9674.     dimsty
    $ L/ ?! V  M1 Z$ ^: n
  9675.   )
    % R& c8 |4 o% u& j5 p9 y/ C) c4 |4 v3 O

  9676. * L1 h' H3 @/ R7 `3 l
  9677.   ;;
    " {1 `, Q( z2 K8 L: x
  9678.   ;; Set dimvars
    $ X- {# d9 F/ J+ M
  9679.   ;;) B0 V- _+ M1 I, ]: R4 _( [; k
  9680.   (defun ddimen_setvars (dimsvcurset / dv i)
    7 I9 W. P$ }* ^; p
  9681.     (setq dv (cdr (nth 1 dimsvcurset)))
    % Z, b, X- ^2 ^
  9682.     (command "_.dimstyle" "" dv)! S# o3 _8 V* g
  9683.     (setq i 3)
    & ^4 `; U; h- A# X6 }4 w
  9684.     (while (setq dv (nth i dimsvcurset))- o( L! H- v( F
  9685.       (progn
    5 G* a+ J' {  x# B, d
  9686.         (setvar (car dv) (cdr dv))
    6 `- S' q2 Z- y4 C) X8 {% c0 p
  9687.         (setq i (1+ i))1 L' S  p' u: }5 z- b7 N3 D
  9688.       )
    - p0 A5 v# }; k2 F
  9689.     )
    4 w( m# l; R* z1 O/ n' p% m
  9690.   )# @5 B6 u1 O9 f, W6 [
  9691.   ;;
    ( \& u3 C. Y! b+ P9 r( I
  9692.   ;;  End-of-dimension
    * T4 Q8 _0 G  L, y, p
  9693.   ;; ==================* [8 u( Q: i$ e

  9694. 6 G2 |9 |7 d; y: j; g6 I- J
  9695.   ;;
    1 S4 P4 f% y  W+ H
  9696.   ;; Sub-dialogues for properties.  Common to all object dialogues) W: G! T* y) c! ~
  9697.   ;;7 }; k0 ]& s/ D
  9698.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    5 i0 G4 E. q. [2 \" ~2 c8 u$ b
  9699.   ;; edit box to allow the user to select or type a color number.  It returns0 J2 @5 j7 V# k1 Y. \3 d
  9700.   ;; the color number selected.+ M0 j7 S- |) v  |
  9701.   (defun getcolor (/ old-idx colorno cname lay_clr)
    0 A6 J4 g3 q  M7 X7 j$ [# c
  9702.     (if (= (get_tile "error") "")
    2 r5 Q3 [5 S; m* l
  9703.       (progn+ g) ^& F6 |- P% B1 i: E+ o' b  Y
  9704.         ;; Get the color associated with this object's layer, for use5 r4 p9 ~8 D! j2 {6 S1 k
  9705.         ;; in the color swatch if the user selects color BYLAYER.
      ]5 O( ?1 H: _3 [( C) _- m5 g% Z
  9706.         (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    * V5 G$ f- n6 R  G8 ?
  9707.         (if (numberp (setq temp_color (acad_colordlg ecolor T lay_clr))), i) @6 k4 Q& Q% _
  9708.           (progn2 i8 X$ V/ S, U2 }
  9709.             (setq ecolor temp_color)  C: v$ W6 p2 T5 ?
  9710.             (setcolor)( x7 ^5 H. ?, C$ o; |
  9711.           )5 [3 X1 V4 Z, D: w5 h9 z1 l' O
  9712.           (setq testcolor temp_color)6 z) y: y. h* `; v5 f9 a% K
  9713.         )5 y, M4 G, D; R9 E3 D
  9714.       )
    & C* m/ L4 h) ^. d2 m
  9715.     )* z- t3 U# q0 n& W* v
  9716.     ecolor
    % h" [0 e# W3 i2 ]) q
  9717.   )
    + x3 l" y' S  W5 g  N" v
  9718.   ;;
    : C1 Q& v/ y/ n- G9 ]
  9719.   ;; Function to set the color tiles.
    - |6 q) @$ z8 O; i0 ?
  9720.   (defun setcolor()7 E7 D6 j8 H, \: W, A, f2 k# @4 G
  9721.     (cond/ h" H, i2 _5 ^/ W7 K8 ~  L3 v$ n
  9722.       ((= 0 ecolor)
    4 s8 f) H: `/ U2 B8 }& E3 l
  9723.         (set_tile "t_color" "BYBLOCK")& i# |0 a6 {1 A1 P9 U/ o9 M- d
  9724.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white, H: D& G! `( ]
  9725.       ). E0 K6 u/ u. P* `& [5 ~
  9726.       ((= 1 ecolor)9 z  d! e7 V% \
  9727.         (set_tile "t_color" "1 red")3 b$ U4 q* N4 u9 Z( ~+ V9 j+ f: I
  9728.         (col_tile "show_image" 1 nil)
    : G  _5 q6 V. c. a: e
  9729.       )
    ; W0 X: r" s- g& l9 C
  9730.       ((= 2 ecolor)2 X; a5 {1 y- w; o5 W4 M9 \, j
  9731.         (set_tile "t_color" "2 yellow")
    % d% R6 Q% R! Q; {. h0 \) B
  9732.         (col_tile "show_image" 2 nil)# D+ \) p5 G; Y6 P0 g# K7 D
  9733.       )5 D, K' h$ d- G- {2 l* q. p
  9734.       ((= 3 ecolor)8 q* i; A; X" c
  9735.         (set_tile "t_color" "3 green")- J8 O1 @% T! n% V
  9736.         (col_tile "show_image" 3 nil)+ K) s) y+ I# q0 Y$ X2 S0 k8 i
  9737.       )
    8 T, S0 y: s5 d. w7 O+ N
  9738.       ((= 4 ecolor)
    . s; Z' ~: K5 @+ _& S5 j& W# f5 k1 n
  9739.         (set_tile "t_color" "4 cyan")
    & z: m7 v( [. s( p# {& [; D% v
  9740.         (col_tile "show_image" 4 nil)
    * ~2 N8 J7 j7 ?8 O: G
  9741.       )
    : Z, f/ ?7 w0 ^3 N8 b, r
  9742.       ((= 5 ecolor)* |+ R& I! A. D
  9743.         (set_tile "t_color" "5 blue"), C+ @' _3 r/ h  D: Q. q
  9744.         (col_tile "show_image" 5 nil)! H, D( N' k7 s' y
  9745.       )
    0 k; a. S% q2 k7 e
  9746.       ((= 6 ecolor)* C! ^" a; }4 c* ]: f2 ?' i4 m
  9747.         (set_tile "t_color" "6 magenta")
    1 Q$ t# w! Y3 K% U" y9 r2 r
  9748.         (col_tile "show_image" 6 nil)8 J/ H4 T! p+ y5 z  ^
  9749.       )
    1 x; p) f5 x% `3 S0 X% w, f+ f: e
  9750.       ((= 7 ecolor)
    : O( ~* d% F9 [% R, f
  9751.         (set_tile "t_color" "7 white")
    6 h8 ^* _& p$ d. v6 q9 }
  9752.         (col_tile "show_image" 7 nil)' h9 X  ^9 v7 U5 N1 i$ m8 |
  9753.       )/ ~. [6 h2 J1 u) P/ Z
  9754.       ((= 256 ecolor)
    3 j) b: M( i8 x4 O3 K* B
  9755.         (set_tile "t_color" "BYLAYER")
    9 n" C- m! C2 l: j
  9756.         (col_tile "show_image" (bylayer_col) nil)% F7 F* i8 C  C6 z0 w/ z) m
  9757.       )9 w4 T5 l4 S, H9 d  R6 v; t9 L
  9758.       (T' T+ O4 O4 ?8 i- F& D
  9759.         (set_tile "t_color" (itoa ecolor))
    7 Y7 u+ u0 y# ^% t/ F' W5 B$ E5 a
  9760.         (col_tile "show_image" ecolor nil)( P6 P6 O  x* |8 f3 m
  9761.       )# }, K1 f/ j" w: ?! A
  9762.     )1 J5 _: K% L' k
  9763.   )
    4 M/ I' u0 x" C1 w! ^1 D
  9764.   ;;2 G* ^8 i" H+ c, K0 Q7 ~
  9765.   ;; This function pops a dialogue box consisting of a list box, image tile, and1 T+ @( ?; [" n5 [& `: D7 s
  9766.   ;; edit box to allow the user to select or  type a linetype.  It returns the5 ^# D9 o* t9 e6 d/ N
  9767.   ;; linetype selected.
    1 s' C- u! x3 e5 n2 A
  9768.   ;;
    ' q5 L7 V4 W+ {. I$ H
  9769.   (defun getltype (/ old-idx ltname)
    8 D8 B- t% |/ V- I0 ~/ F
  9770.     (if (not lt-idx)
    : Y- Y  Z+ g5 q0 y/ M
  9771.       (progn$ u# X! b5 q% n1 \1 l
  9772.         (make_lt_lists)             ; linetype lists - ltnmlst, mdashlist
    5 ^2 e0 a4 f2 ]0 d
  9773.         (cond1 ]+ i1 O' N$ Q$ |
  9774.           ((= eltype "BYLAYER")
    2 d$ _+ J) ?( O7 C* w4 p7 ~
  9775.              (setq lt-idx (getindex "BYLAYER" ltnmlst)))5 u7 a5 K9 S( S- [
  9776.           ((= eltype "BYBLOCK")
    & e: s- E8 K' r6 `! t0 U8 E
  9777.              (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    ) h: H* C) A  O
  9778.           (T (setq lt-idx (getindex eltype ltnmlst)))
    7 W9 ?8 \+ `' y$ ^, o# a1 L- o
  9779.         )
    # ^, p, l3 ]1 T4 m& N# f2 y& N
  9780.       )
    7 [0 v4 Q6 b+ W& H3 b: g
  9781.     )
    / L5 G8 g1 U6 Y$ k4 C2 W- m+ |( B

  9782. 1 i2 G1 j9 C) w3 ?  P
  9783.     (if (= (get_tile "error") "")- o+ n' E7 y& c  ?# F: Y9 K. D5 h
  9784.      (progn
    ! i- X. L3 p# s1 b5 j
  9785.       (if (not (new_dialog "setltype" dcl_id)) (exit))- {: b; z* y! j$ M  N
  9786.       (start_list "list_lt")
    1 S' {) s4 q: U. l, U
  9787.       (mapcar 'add_list ltnmlst)  ; initialize list box
    7 k! h! P" A4 M  l) i) _9 _$ f
  9788.       (end_list)
    * A. ]5 {$ c- C& m1 v. z* d7 P9 T
  9789.       (setq old-idx lt-idx)
    " l% n% a, M" K" k# m5 F
  9790.       (ltlist_act (itoa lt-idx))
    " \1 @  Z" X6 K; C+ Q6 d% Y) U
  9791. " k4 E  Q4 y2 X
  9792.       (action_tile "list_lt" "(ltlist_act $value)")& Q$ D% u4 N" ~% E. `
  9793.       (action_tile "edit_lt" "(ltedit_act $value)")
    * f) A, ^' {0 n
  9794.       (action_tile "accept" "(test_ok)")/ V6 T4 ^; n6 M8 G
  9795.       (action_tile "cancel" "(reset_lt)")
    " T- C1 w1 u# W
  9796. + H$ u/ j3 z. N
  9797.       (if (= (start_dialog) 1) ; User pressed OK
    9 o& b% C) n- j2 T
  9798.         (cond& o6 ?* U* m8 e) f, `9 M
  9799.           ((= lt-idx 0)
    6 n9 m+ g9 b( u+ l  @  a
  9800.             (set_tile "t_ltype" (bylayer_lt))
    7 ~+ Y# V3 O3 ~* L6 C" c* j" t
  9801.             "BYLAYER"
    & ^7 S% m5 i' V, S& s3 ?
  9802.           )" S* v) c1 [3 `$ }3 w& M
  9803.           ((= lt-idx 1)3 m" [/ I4 A5 R) g7 r2 h5 D8 w
  9804.             (set_tile "t_ltype" "BYBLOCK")2 g) W" O' K( }" S/ X8 a+ v8 k
  9805.             "BYBLOCK"
    3 q9 }# G7 V; r
  9806.           )% p6 `( c, ^, X/ m
  9807.           (T  (set_tile "t_ltype" ltname) ltname)* k0 Q3 U8 R( W
  9808.         )7 M3 e; R0 P' u4 k- Q
  9809.         eltype& h; w4 g/ l# E0 F2 |/ }5 @
  9810.       )* G' J$ P, l; ~2 M6 m( N
  9811.      )
    ( }4 }# s6 u& |4 j, |
  9812.      eltype3 ?- Q# H+ n: l5 y7 N( V8 `
  9813.     )
    / m# J  ^" k# x3 T# Y4 G. d
  9814.   )
    9 I( d9 ?8 V# N8 b2 T% M3 q4 ~# A/ o
  9815.   ;;
    0 C5 d2 C0 N/ v' P* h) ]; _
  9816.   ;; Edit box entries end up here
    * P, o* C# m' |
  9817.   (defun ltedit_act (ltvalue)
    ) [2 C- Z/ ~1 Y. G' V0 l% V
  9818.     (setq ltvalue (xstrcase ltvalue))
    5 [8 ?4 {2 M5 J( H
  9819.     (if (or (= ltvalue "BYLAYER")" C7 X8 P) g) L4 H2 _
  9820.             (= ltvalue "BY LAYER"))
    9 S! _% K3 y' j2 I5 R
  9821.       (setq ltvalue "BYLAYER")1 }. [  }3 H% `7 n: B* R1 A
  9822.     )7 I8 }" V# S, W# E
  9823.     (if (or (= ltvalue "BYBLOCK")
    , S/ w1 [, C# c7 \7 {
  9824.             (= ltvalue "BY BLOCK"))
    & H  z$ L& O- C) W8 y) _
  9825.       (setq ltvalue "BYBLOCK")8 G) l  m/ s5 P6 g0 }6 P& o
  9826.     )4 s. D5 u: Q1 z! `, ^! b; c: n
  9827.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    ( r- }& x# n0 N. S( {3 i
  9828.       (progn& Q: d6 @, J: r% L2 ?1 x% t  N
  9829.         (set_tile "error" "")# K# J% G6 |) X
  9830.         (ltlist_act (itoa lt-idx))( Z% }$ q1 W1 |5 }! G/ [
  9831.       )( z; O  A  I& ^
  9832.       (progn
    # L1 i: o! r4 C7 B4 j* t8 }  k* N4 ]& D
  9833.         (set_tile "error" "Invalid linetype.")" @1 U" z3 @- a: E! _% R
  9834.         (setq lt-idx old-idx)1 W, _* I& M+ u
  9835. ;;        (mode_tile "edit_lt" 2)# W1 F# o7 ?# \
  9836. ;;        (mode_tile "edit_lt" 3)& S2 }! J) t/ x8 E* L2 J
  9837.       ): M( C" B  b+ s9 L* |: F7 y
  9838.     )
    6 u/ z/ ^. T  I, m
  9839.   )# Y* O1 k+ C7 D2 P
  9840.   ;;
    / y( s( A1 u/ @
  9841.   ;; List selections end up here.  Update the list box, edit box, and color
    0 T# @" S4 |8 J) J. m+ K/ d, r
  9842.   ;; tile.
    ' H$ r* [, b6 }( |9 X8 I" ^
  9843.   ;;
    6 Y( I0 b( h& ?# K* J* e
  9844.   (defun ltlist_act (index / dashdata)2 V7 M3 o7 e6 X8 Z/ p2 O* J: E- t
  9845.     (set_tile "error" "")) Y. d' g/ Y3 |- r
  9846.     (setq lt-idx (atoi index)); [6 E8 N# X8 a# ?, |
  9847.     (setq ltname (nth lt-idx ltnmlst))
    $ a6 @  l* K! d9 T) K6 y
  9848.     (setq dashdata (nth lt-idx mdashlist))
    1 f* d( N* R' \0 p5 O8 W# q
  9849.     (col_tile "show_image" 0 dashdata)
    6 o5 o; h$ F# g! Z' ]1 J! z
  9850.     (set_tile "list_lt" (itoa lt-idx))$ c/ c! Q) s6 ]  k
  9851.     (set_tile "edit_lt" ltname)
    7 n" R: m$ b* v0 P: ^- P
  9852.   ): b+ L" M' ~% m& M
  9853.   ;;
    ; n$ ?4 f$ T9 `
  9854.   ;; Reset to original linetype when cancel it selected
    2 t/ \- q+ }3 B0 u" t/ H* C
  9855.   ;;
    , b! z0 j, z7 h$ a1 n/ L4 x
  9856.   (defun reset_lt ()
    & c& [2 H0 g" [2 l! N& K. t0 M% P3 P
  9857.     (setq lt-idx old-idx)' M: [, w- ?% h; m8 w
  9858.     (done_dialog 0)$ I) C) O/ V, E: Q& _4 U
  9859.   ); {/ c3 E% q+ ~4 S
  9860.   ;;/ Z- p' r4 ~& E' U' I2 H
  9861.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    0 x* V& w  _1 d9 ], y3 `3 f
  9862.   ;; edit box to allow the user to select or type a layer name.  It returns the5 g' `5 Y4 c1 K8 l" Y
  9863.   ;; layer name selected.  It also has a button to find the status (On, Off,
    4 e5 A2 S- K) @
  9864.   ;; Frozen, etc.) of any layer selected.. Z/ V! h3 e8 f* {0 _
  9865.   ;;
    - P9 S/ p- d* ^& i2 V
  9866.   (defun getlayer (/ old-idx layname on off frozth linetype)* r# F. `) p' ?
  9867.     ;; Create layer list the first time the layer7 j0 y5 n/ g: _
  9868.     ;; dialogue is called.6 x, ~& ?* c  ^* M6 p0 z  m
  9869.     (if (not lay-idx)  C! g' ]; h9 K; g2 z# `' v; e
  9870.       (progn1 Q- C5 g; h1 r& i
  9871.         (make_lay_lists)
    ) c+ o' j& {& B, R  n  A
  9872.         (setq lay-idx (getindex elayer laynmlst))
      i# q, Y/ T! x
  9873.       )
    # d" E6 c, u! p5 |4 W& `# v
  9874.     )
    $ d/ Q  H6 N6 o

  9875. 7 N3 V3 `. _( G! ?7 p7 g" }. K
  9876.     (if (= (get_tile "error") "")( h& d  @0 l8 c7 q3 ~- W# l
  9877.      (progn  ?# z) d: K3 r$ ~' f' X( Q2 Z  i+ H7 X
  9878.       (if (not (new_dialog "setlayer" dcl_id)) (exit))
    , \! t0 o( |* D$ T9 |
  9879.       (set_tile "cur_layer" (getvar "clayer"))7 S* e8 n3 ]! x. X7 g, b8 `& M8 z/ _
  9880.       (start_list "list_lay")) A5 t  E% @1 a3 {4 d$ K1 r( Y
  9881.       (mapcar 'add_list laynmlst)  ; initialize list box
    9 z( d, b6 |# c
  9882.       (end_list)- @" O) c+ D& C. L# H) \+ [  w1 s& j
  9883.       (setq old-idx lay-idx)
    % P& J( S3 r3 k
  9884.       (laylist_act (itoa lay-idx)). r' d- L/ P& U" c/ B2 {  V+ j+ o
  9885.       (action_tile "list_lay" "(laylist_act $value)")
    5 u$ [! `+ N- `0 t& [+ C% N
  9886.       (action_tile "edit_lay" "(layedit_act $value)")
    0 u7 d" D5 e3 P0 b
  9887.       (action_tile "accept" "(test_ok)")
    / |7 @& ^: {3 z9 M3 V
  9888.       (action_tile "cancel" "(reset_lay)"): H' M- c' j+ S" h' Q0 V* t
  9889.       (if (= (start_dialog) 1) ; User pressed OK
    0 G6 L: j3 S. T( v9 {! t7 r
  9890.         (progn5 ~) M7 \( a, J" `  t% R; Z
  9891.           (set_tile "t_layer" layname)
    - I; u; D. S" K
  9892.           (setq elayer layname)
    ( a% I2 y4 ?$ J# ?! u/ B
  9893.           ;; If layer equals bylayer reset color tile
    1 K- x. N: j2 P+ G6 Y
  9894.           (if (= ecolor 256)8 u3 b1 v: i' }/ t! P, }& l
  9895.             (col_tile "show_image" (bylayer_col) nil)
    8 _, k: q1 X: e. W- v2 u1 G  f
  9896.           )* l1 g' }  M" C) ]
  9897.           layname
    2 K8 a" Q! |5 e/ q! H6 d4 b
  9898.         ); g7 s  E* K% p& F  r
  9899.         elayer5 [( r: Q  O- ?1 R6 a% v
  9900.       )3 I: `' f/ B: Q
  9901.      )1 z0 a$ i' D- a
  9902.      elayer- U  T/ y3 f$ |# A9 q4 a4 S$ a4 a
  9903.     ), K# |4 u6 v, v8 Z2 o/ h
  9904.   )% h( ?5 N) v0 u' I; y: X1 z
  9905.   ;;  s9 a) [% x) X% N) A
  9906.   ;; Edit box selections end up here.  Convert layer entry to upper case.  If
    6 g% ]7 J+ d0 o3 I* e+ M
  9907.   ;; layer name is valid, clear error string, call (laylist_act) function.
    - |0 \7 _& n/ V9 [* a# ]
  9908.   ;; Else print error message.
    0 z" n7 b( q, |  g0 m) Z3 h
  9909.   ;;
    1 ?0 b* g# k8 q7 O
  9910.   (defun layedit_act (layvalue)
    * P8 j) t" Q$ K- {! I: i
  9911.     (setq layvalue (xstrcase layvalue))
    $ f% X  H' P+ p1 j* ]% t. b
  9912.     (if (setq lay-idx (getindex layvalue laynmlst))2 X  P% _4 ?& ]; ~# b1 u
  9913.       (progn
    - w7 s& m. D9 K/ N4 z
  9914.         (set_tile "error" "")
    ) F3 h4 ^+ `9 ]3 h$ Q3 X
  9915.         (laylist_act (itoa lay-idx))
    9 s. ~  @/ \5 V
  9916.       )
    $ z3 P+ y9 B% l2 v- O- a2 V
  9917.       (progn4 g& |- y. m( K4 g+ c
  9918.         (set_tile "error" "Invalid layer name.")( U( O* ^( _. b, U: j) Y
  9919. ;;        (mode_tile "edit_lay" 2)4 }% x  T0 b  i: A! t1 ~5 d0 d
  9920. ;;        (mode_tile "edit_lay" 3)
    ( o( ^8 Z1 ^( \! A  K7 y+ x& q
  9921.         (setq lay-idx old-idx): x9 T# T# D% M1 e. Z
  9922.       )
    6 i+ {) q1 h7 X* @
  9923.     )8 r5 t2 ]2 ]3 g9 u' L! T7 n
  9924.   )( P' K4 S' W/ j& n2 ]3 n% F
  9925.   ;;) K0 k, Y1 m4 C7 s2 x/ \
  9926.   ;; List entry selections end up here.* D7 s: Z3 i+ }- q! P' d6 y
  9927.   ;;
    ! L% f6 g" O  a  c8 B0 B
  9928.   (defun laylist_act (index / layinfo color dashdata)" J! B# u2 L% I2 n8 U
  9929.     ;; Update the list box, edit box, and color tile., m% }/ q/ y) ^4 d6 R7 E
  9930.     (set_tile "error" "")
    * Z- ^5 O; |, G; g% ^
  9931.     (setq lay-idx (atoi index))4 E, B) j9 ^5 w1 U
  9932.     (setq layname (nth lay-idx laynmlst))1 h' t; c* k+ F( V( D& {* V% {
  9933.     (setq layinfo (tblsearch "layer" layname))
    # U: j) W% i$ C5 Y
  9934.     (setq color (cdr (assoc 62 layinfo)))
    * z' v, D+ t7 y! l' j- o  P- K+ A
  9935.     (setq color (abs color))- Z) H8 I" m) t8 t: N  I  n# }
  9936.     (setq colname (colorname color))% {7 b4 V( D2 V3 ?
  9937.     (set_tile "list_lay" (itoa lay-idx))) o% ~) o/ F# o" _3 E
  9938.     (set_tile "edit_lay" layname)
    $ e0 A! @- c8 a/ P+ P6 {7 W3 h- b' w
  9939.   )( r- E% Y& T( M- Z3 G; Z
  9940.   ;;
    6 F; n: ^6 c5 Q1 a! d$ `% b& z
  9941.   ;; Reset to original layer when cancel is selected.
    - r, x1 Q: W( ?
  9942.   ;;
    ' S# t/ |1 Z$ u4 g
  9943.   (defun reset_lay (), V4 J- U% a- ^8 l- k
  9944.     (setq lay-idx old-idx), [1 t+ u2 X- s  ]
  9945.     (done_dialog 0)
    ! M, b' S% h# g+ A: w9 f
  9946.   )0 b+ \  |( J5 e# q' O1 [) U
  9947.   ;;" {3 x% K' C6 K2 ^) v
  9948.   ;; Checks validity of thickness from edit box.
    $ X. `5 S1 |2 I+ Z8 G
  9949.   (defun getthickness (value)
    3 T: V# p( b, t+ u4 \) T
  9950.     (setq ethickness (verify_d "eb_thickness" value ethickness))' t2 Y+ l( H0 j5 ~0 e- O! E4 |5 r
  9951.   )
    " N$ H( E9 j( r# `3 E. l
  9952.   ;;' ?5 u9 ^# Z9 |. w
  9953.   ;; Copy of (getthickness) for ltscale.  If more, make this function1 T$ t, [: k" [0 q: ?+ L* F4 l0 G( {
  9954.   ;; generic.
      n5 H' |5 _$ G9 Q0 O
  9955.   (defun getltscale (value)* H! \4 C+ u! Z* f7 i0 x
  9956.     (setq eltscale (verify_d "eb_ltscale" value eltscale))9 [  p; t+ Y5 g  j" p  V$ w
  9957.   )$ `* @* P0 _- }% c
  9958.   ;;9 Q: R, r$ F/ N# a6 u3 i
  9959.   ;; This function makes a list called laynmlst which consists of all the layer
    * z3 E# Q, g5 O/ J) w( e8 Y8 X
  9960.   ;; names in the drawing.  It also creates a list called longlist which8 r( z, s& u$ E- Q* @8 ~, k6 g
  9961.   ;; consists of strings which contain the layer name, color, linetype, etc.
    $ P" n1 D1 I" \4 c3 h2 y1 T' }
  9962.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    2 y: O" ?& q0 L# v4 d0 S3 f/ ]
  9963.   ;; same.
    % S7 c$ W+ d7 c! Y- d
  9964.   ;;/ K1 @; _3 r. k
  9965.   (defun make_lay_lists (/ layname sortlist name templist layer_number)
    7 ]4 A7 F( F7 |% l: {
  9966.     (setq sortlist nil)
    ; A3 _- t& f2 R( F8 X
  9967.     (setq templist (tblnext "LAYER" T))& m2 z+ v& x3 N. t8 `. t
  9968.     (setq layer_number 1)" w* E4 I6 z4 b* {# K( d
  9969.     (while templist
    ) P% C) x9 M7 j! H' ?5 F
  9970.       ;; No xref dependent layers, please.2 w* L2 W8 z7 B8 L( q1 n& c, }
  9971.           (if (/= (logand 16 (cdr (assoc 70 templist))) 16)6 |6 A. S5 k( b5 B5 b
  9972.             (progn
    ) \# o" {8 \3 _7 G$ n
  9973.               (setq name (cdr (assoc 2 templist)))$ H2 l0 W0 {; T: g+ i% m
  9974.           (setq sortlist (cons name sortlist))
    6 R# Q* Z$ Z, f: n" h5 G2 s! v; G* e2 r
  9975.         )
    . y! p  S. n' j3 l, _
  9976.           )
    $ [& F5 x; c8 a) U* k% a0 o0 h
  9977.           ; Get the next layer.: Y& @& r2 U* [- `+ `
  9978.       (setq templist (tblnext "LAYER"))
    ' Q  Y5 r( u8 z5 X7 \0 T4 q4 ?
  9979.       ;; Not dead message...
    / |$ x8 F$ Q2 F6 V: G8 t5 ?/ d
  9980.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0))). y" x0 e$ b4 h8 U4 @, a! G
  9981.         (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    8 l# n1 @* \5 R+ f" J; Z
  9982.       )
    : D" r3 K' c# p( _- ^7 d
  9983.       (setq layer_number (1+ layer_number))
    $ m0 j8 a; {0 T1 Q% x
  9984.     )$ P) K# I- [8 G2 B3 J
  9985.     (set_tile "error" "")- r& @' B+ O$ A" ^. {
  9986.     (if (>= (getvar "maxsort") (length sortlist))
    , b- u9 p5 I  _7 U
  9987.       (progn% Z  `- R" n3 p  u( {9 n0 a
  9988.         (if (> layer_number 50)7 |5 h! c4 u- ?# h- i
  9989.           (set_tile "error" "Sorting...")5 }# ]$ V5 T! r+ Z5 l2 M6 U
  9990.         )
    . T/ D; k: j' V! d. B
  9991.         (setq sortlist (acad_strlsort sortlist))
    + q! H, |$ ~' _/ Y
  9992.       )
    $ J2 @1 l6 U' i* w: I
  9993.       (setq sortlist (reverse sortlist))
    8 N0 }7 l  K4 M3 H1 ]) t# X8 [
  9994.     )
    & b/ p: L: i$ T# [8 n2 a, k
  9995.     (set_tile "error" ""). _6 z% g! Y  W; {! J7 k
  9996.     (setq laynmlst sortlist)
    6 Y& Y9 x7 Q& n8 O( z% w
  9997.   ), s# {1 S% g5 F9 P3 z3 Z/ Q5 m4 b  @
  9998.   ;;3 Q# k  h; O4 f! t# o7 H
  9999.   ;; This function makes 2 list - ltnmlst & mdashlist.' [" O$ S7 T3 x8 l6 \/ B; W
  10000.   ;; Ltnmlst is a list of linetype names read from the symbol table.  Mdashlist* B$ R9 T+ w  S% y  n1 `  f
  10001.   ;; is list consisting of lists which define the linetype pattern - numbers/ i! K$ u" G/ R, e% R, U% k; }' d$ D
  10002.   ;; that indicate dots, dashes, and spaces taken from group code 49.  The list; V- k9 [& f" `* J$ l7 {' q3 [; H* [
  10003.   ;; corresponds to the order of names in ltnmlst.$ I6 E& I, h1 p
  10004.   ;;
    : n3 q" r6 t# W$ Y+ P2 Z# z
  10005.   (defun make_lt_lists (/ ltlist ltname); r. F; a5 ^' ]
  10006.     (setq mdashlist nil)
    ! n- t4 c+ |( W: v: w: \! o' O7 J
  10007.         (setq sortlist nil). Z4 t  M! ]5 Y/ N. i; [. f
  10008.         (setq ltype_number 1)
    5 ]; P* Z1 x+ I, ?) l1 q1 v2 X4 y
  10009.     (setq ltlist (tblnext "LTYPE" T))2 O- u$ _- q; a
  10010.     ;;(setq ltname (cdr (assoc 2 ltlist)))& |4 }+ K; w- p- t+ l2 }
  10011.     ;;(setq ltnmlst (list ltname))
    + A6 v8 F' n, f! W, `9 x; M
  10012.     (while ltlist" v. U5 m7 F- b9 v  o4 v5 V
  10013.           ;; No xref dependent linetypes, please.! @! I. b& S! \9 R1 s# s$ o8 n
  10014.           (if (/= (logand 16 (cdr (assoc 70 ltlist))) 16). A9 P$ @# A2 g0 X9 o1 C
  10015.             (progn
    2 L5 o; U# y  w* K* b: i6 @
  10016.           (setq ltname (cdr (assoc 2 ltlist)))9 s$ n- K: D% ~
  10017.           (setq sortlist (cons ltname sortlist))4 z! ?% w* q  B+ A4 _! x- A% X
  10018.             )- j3 s. E/ m% H4 h
  10019.           )
    $ I8 Q/ C2 k2 Z  F2 @. g( X
  10020.           ;; Get the next linetype.) h  k1 \; Z' [; a5 P0 K
  10021.           (setq ltlist (tblnext "LTYPE"))( O3 o" Q& k* N2 P' d$ H

  10022. * S' s' z- \. `3 u3 S7 Q
  10023.           ;; Not dead message...0 v# p$ C  h4 N! N! @! t1 W
  10024.       (if (= (/ ltype_number 50.0) (fix (/ ltype_number 50.0)))' _, W/ V0 w# ^, K. S; _
  10025.         (set_tile "error" (strcat "Collecting..." (itoa ltype_number)))
    ) s5 W( E+ ~- h( x+ {. b" }
  10026.       )
    : I" ^: k, i! ?* u3 Y4 I3 e
  10027.       (setq ltype_number (1+ ltype_number))
    & E! Y) |4 ]4 Q. F7 w7 q5 n; P% p
  10028. 0 _& B5 K( c/ N, x5 |
  10029.     )% u8 Q$ _: J. d" i' k6 O, ?0 Y7 y
  10030. 7 K0 S- ?$ N. B
  10031.         ;; Remove Collecting message.
    + V# m  m0 f0 L4 T9 Z% q- Y
  10032.         (set_tile "error" "")  u- @9 @+ [% H( |  w8 z# w8 r
  10033. ; I( j2 F3 y1 S4 e  \: E
  10034.     ;; Sort based on maxsort./ N, G' ~7 ~, G9 @
  10035.         (if (>= (getvar "maxsort") (length sortlist))
    * m' k; I: _$ y# G
  10036.       (progn% M6 \9 s: M* b# O! W
  10037.         (if (> ltype_number 50)0 k. P9 E* A$ r; g# G
  10038.           (set_tile "error" "Sorting...")
    2 g2 e! c* ]  h* z
  10039.         )
    ) p7 {4 R! K4 R. C  H& Z
  10040.         (setq sortlist (acad_strlsort sortlist))
    . [/ [5 D, G3 x2 `. b
  10041.       )" w/ n4 s8 I5 S/ Y8 B9 k
  10042.       (setq sortlist (reverse sortlist))
    % \; o, O; J# g' h; V
  10043.     )' h( T2 f8 s( E! S
  10044.     (set_tile "error" "")
    ; G$ P+ u1 J" P% S8 [  D" T
  10045.     (setq ltnmlst sortlist)
    ' H% r) P+ O: U2 o* b8 i+ ^

  10046. % y+ G  P* @0 u, M
  10047.     (foreach ltname ltnmlst
    / o$ i  {: g6 Y6 o
  10048.       (setq ltlist (tblsearch "LTYPE" ltname))
    1 V: n1 M& y/ [3 r
  10049.       (if (= ltname "CONTINUOUS")3 r- L1 O; z& @) h
  10050.         (setq mdashlist (append mdashlist (list "CONT")))
    0 a% {  m$ b  y6 R! h: g
  10051.         (setq mdashlist/ L9 J; {4 |& Q
  10052.             (append mdashlist (list (add_mdash ltlist)))
    - T# P* g3 N: z: U# V4 r6 }% n
  10053.         )
    . u& g* l1 D2 B" _
  10054.       )
    " q/ ~+ P8 E) d8 F5 F" F
  10055.     )
    " P/ ?" h* m5 p$ n" d7 w, Z
  10056.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))$ S( d. f( m8 E0 M( y
  10057.     (setq mdashlist  (cons nil mdashlist))# R2 P( X8 b3 y% V$ \7 F" m
  10058.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    1 G9 d( u- c9 t  z/ y
  10059.     (setq mdashlist  (cons nil mdashlist))
    9 Q7 F1 f3 u5 _3 ^  F' D
  10060.   )
    + E+ t! r& V! N3 K4 e. I6 d
  10061.   ;;& M0 |+ f' z" V6 w% U' j
  10062.   ;; Get all the group code 49 values for a linetype and put them in a list
    - {7 t; m' f1 {4 ]
  10063.   ;; (pen-up, pen-down info)., ~+ o5 O  M! I$ a% n5 J8 G4 q
  10064.   ;;1 H) w1 h9 G8 D1 n
  10065.   (defun add_mdash (ltlist1 / dashlist assoclist dashsize)- ]4 k. g7 f) _8 v
  10066.     (setq dashlist nil)) [( P4 l8 d) P6 W
  10067.     (while (setq assoclist (car ltlist1))5 E2 N$ H- n. D2 w2 q8 k! ~) w) D
  10068.       (if (= (car assoclist) 49)3 G6 j$ t1 f9 Y4 s
  10069.         (progn
    ! P/ V  v& \. n9 z! z1 B
  10070.           (setq dashsize (cdr assoclist))
    / s& c* N) \2 d$ {/ p+ U
  10071.           (setq dashlist (cons dashsize dashlist))
    2 V) W  n) W8 ?. v' U4 R
  10072.         )
    6 \% w: N, `6 z9 B# m
  10073.       )
    5 y3 @  P# I& b4 M; x
  10074.       (setq ltlist1 (cdr ltlist1))
    $ V7 D& |7 i' b* i7 I9 H5 ~
  10075.     )
    ' o) h) y2 ]! ]5 P3 b3 [
  10076.     (setq dashlist (reverse dashlist))5 i$ O5 u, |7 |7 O- i' h! @& _
  10077.   )
    % |" t  ]5 w& Z& i8 y/ H
  10078.   ;;
    5 g- x8 s# Z: Q) r% T8 S) F8 r) \
  10079.   ;; Color a tile, draw linetype, and draw a border around it$ S' g4 F! V3 D# j
  10080.   ;;/ w; n3 @# f3 |7 N5 ^! N5 f9 I) Y
  10081.   (defun col_tile (tile color patlist / x y)
    / j, C8 U& B( O1 u" H2 v' Y: S
  10082.     (setq x (dimx_tile tile))3 @* ?9 i6 o! c2 f+ y
  10083.     (setq y (dimy_tile tile))
    % j0 z8 l+ s/ i7 k
  10084.     (start_image tile)  A% u! |+ N5 |+ g
  10085.     (fill_image 0 0 x y color)
    ( l0 w6 D! }/ k2 e8 w; r  g
  10086.     (if (= color 7)% m/ Z) O+ @+ W6 g8 \9 o% G
  10087.       (progn
    5 @! J! E! L. T) C
  10088.         (if patlist (drawpattern x (/ y 2) patlist 0))( [- s( e( x& f, S
  10089.         (tile_rect 0 0 x y 0). `# }; |9 U2 Z, O, Z9 }+ T; }
  10090.       )9 z4 f# n; k  y. S1 q0 g( T2 l0 k( P
  10091.       (progn+ N, Q/ Y0 R7 p
  10092.         (if patlist (drawpattern x (/ y 2) patlist 7))# o2 r3 M" o! t1 C; l
  10093.         (tile_rect 0 0 x y 7)
    # z$ P, o/ H8 i; ]
  10094.       )
    - m& J6 u7 R9 k
  10095.     ): w$ J; F( `, b4 b  d
  10096.     (end_image)
    + m; [2 t2 _* P" g9 I
  10097.   )
    ; a1 l/ b1 \6 D9 E# w/ T
  10098.   ;;
    8 n, q- A5 d: R, S% M: r+ Q
  10099.   ;; Draw a border around a tile+ h$ H' d/ y/ c4 t% Z4 V
  10100.   ;;5 E1 w3 e- w+ t1 U& P; A- x
  10101.   (defun tile_rect (x1 y1 x2 y2 color)
    3 n: j. H1 @* Y
  10102.     (setq x2 (- x2 1))* H# _" o' l" b
  10103.     (setq y2 (- y2 1))
    8 j8 `5 Q4 _6 H9 b* k
  10104.     (vector_image x1 y1 x2 y1 color)
    0 g& z+ R& |$ v3 n6 }/ Z+ o
  10105.     (vector_image x2 y1 x2 y2 color)8 [- ]& F( T. O
  10106.     (vector_image x2 y2 x1 y2 color)! _7 \" x$ l( P4 f) w
  10107.     (vector_image x1 y2 x1 y1 color)
    5 n7 i% ^0 C) M' N9 E8 r% B# X  B
  10108.   )
    ) d9 O3 f+ n/ T: B$ x: P* p  j; i
  10109.   ;;: N* t/ u1 A7 a& L) ?
  10110.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image* e/ E+ Q7 J4 ~9 f9 q, s
  10111.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a' [0 N! ]. n1 k8 _# e- W8 a
  10112.   ;; list of numbers that define the linetype, and color is the color of the) n& J; t$ C$ J+ g" A  ]
  10113.   ;; tile.
      n3 G, N) ]' U5 j6 p) Z  l" j* d
  10114.   ;;
    ) I- {/ U* k4 X+ ]) h$ [, M4 S
  10115.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    7 y  y9 |" b0 P8 v. ^9 _$ `
  10116.                       patlist dash)
    , s5 v2 |8 _- X# H8 X9 M- s) E
  10117.     (setq x1 0 x2 0)) }4 s+ N( ?! s
  10118.     (setq patlist pattern)4 ^7 ]5 J  J$ L2 Y# s
  10119.     (setq fx 30)
    % Z/ P0 H5 a* O3 B9 C. R
  10120.     (if (= patlist "CONT")9 ]* }9 Z# h3 }9 w2 Q6 G
  10121.       (progn (setq dash boxlength): M/ ^" y4 u, r! a/ H* [7 R
  10122.         (vi)
    . M, ^( m- J* ]7 _! o- j+ L
  10123.         (setq x1 boxlength)
    & p) ?6 K: G4 z& ]
  10124.       )
    / F9 i3 Z5 f& h3 V* u
  10125.       (foreach dash patlist
    & [/ ^/ z7 d% e8 n
  10126.         (if (> (abs dash) 2.5)
    3 i$ O' g# m) @  n
  10127.           (setq fx 2)
    5 j" U8 n8 o; Q+ U0 v
  10128.         )
    , ]& A( A: D7 V& X5 q
  10129.       )% O  S+ s; P* C+ e5 N
  10130.     )
    : o8 }1 w! @+ ?2 H1 X: i# W+ c
  10131.     (while (< x1 boxlength)! A! F! ^- ^. {* g! W1 Z
  10132.       (if (setq dash (car patlist))) Z. ?3 \9 w. H8 T5 U0 e  g8 ~
  10133.         (progn( e8 V2 k! M% R
  10134.           (setq dash (fix (* fx dash)))
    # |, F1 r3 j  j8 _- @7 x) w, w
  10135.           (cond# U. T2 q0 ~" q
  10136.             ((= dash 0) (setq dash 1) (vi))# G/ W6 _2 V" }. C  ^. L7 O4 ]
  10137.             ((> dash 0) (vi))
    + T* g) }9 s; a* y' m
  10138.             (T
    & N" P& B0 f+ M4 D, y" B' S. f
  10139.               (if (< (abs dash) 2). M0 z* X0 P5 s( [4 L# W, A
  10140.                (setq dash 2)! w3 f1 E1 Z- W  G% s( l. ~# K8 a
  10141.               )( I+ L2 M" I4 r  a  R* N/ |4 u# q
  10142.               (setq x2 (+ x2 (abs dash)))7 t% Q6 u1 v. S
  10143.             )
    $ H9 r4 k9 R$ \- g" W# X" G
  10144.           )
    7 k( }; ]) X6 y- z
  10145.           (setq patlist (cdr patlist))
    . @# a) m+ u1 h9 H4 z
  10146.           (setq x1 x2)# k( V& x, b$ R$ t6 }
  10147.         )% z" w; u5 h% I) k3 b: E
  10148.         (setq patlist pattern)0 P% f) r& t& d! U3 B$ R- a( a
  10149.       )
    - _8 I( u+ |) K+ a( ^
  10150.     )1 m1 l; v5 Q( g& v
  10151.   )
    4 s0 Q' {% I7 B$ J0 o( z) G: C* g
  10152.   ;;6 M3 K& L2 J1 Z# K
  10153.   ;; Determain state of xclip) X- @0 ~- h! n
  10154.   ;; Returns the group 71 value of the spacial filter dictionary.
    7 q8 r. O! }: E) v
  10155.   ;; If the entity doesn't have a spacial filter dictionary, this
    5 j2 q. D3 p" q' E/ F. `' R
  10156.   ;; returns 0. If it does it will return 0 or 1 depending on the
    1 g( Q2 o; H4 B9 P" B8 r/ e
  10157.   ;; current setting of the state of the clipping visibility.
    - T  @7 X' h$ Q7 ~8 {8 V
  10158.   ;;
    4 y/ k: X  _# }) Z  [
  10159.   (defun xclipon(elist)
    6 z; R5 y# A6 r1 {
  10160.     (setq hasclip T)- b. H8 W! U! S% B  `
  10161.     (if (/= (assoc 360 elist) nil)
    " X: }# h" ~9 X4 g3 U
  10162.       (progn5 [, ~) x7 m1 G" ^% ^
  10163.         (setq tmp (entget(cdr(assoc 360 elist))))0 W+ ?1 v2 q- [5 W% Y# ?' F/ h
  10164.         (if (/= nil (assoc 360 tmp))
    . T, g+ G% d) u+ [8 J- G  L* _
  10165.           (progn
    + ~# r, s, x5 x/ o
  10166.             (setq tmp (entget(cdr(assoc 360 tmp))))+ P1 P+ C% o, ~4 ^
  10167.             (if (/= nil (assoc 360 tmp))  p; N8 |+ H- c/ w9 w
  10168.               (progn- h; m6 O6 m$ B
  10169.                 (setq tmp (entget(cdr(assoc 360 tmp))))
    ! Y8 S0 M; j7 C+ z1 W, c
  10170.                 (if (/= nil (assoc 71 tmp))
    8 ?1 N/ @) \" z( _$ m
  10171.                   (cdr(assoc 71 tmp))/ u& j: y4 ~3 }' O1 y+ s2 A$ N
  10172.                                   (progn
    . W6 [+ c  e+ A6 S8 T
  10173.                                         (setq hasclip nil)7 G5 B+ i( \( x: ^$ b# K. S9 N
  10174.                                         (eval 0)2 w8 t& `+ D" p5 A7 m
  10175.                                   )
    - @4 H# A& ]7 N% ]9 v
  10176.                 )
    % P* |* ^( _2 c- F) `  D2 [, G
  10177.               )/ E1 J6 m6 |5 ~4 i3 u
  10178.                           (progn 2 v* U/ E" l& @. ?1 t- ~$ `" M
  10179.                                 (setq hasclip nil); N6 U6 [: K- u( \
  10180.                                 (eval 0)
    : H8 q$ Y* u$ M' K- H1 Z
  10181.                           )) O1 I* _  X  w" X/ M
  10182.             )
    : }$ f, E6 E- `% b- s7 Z
  10183.           )
    5 M+ X* |1 N$ C$ y1 l7 _
  10184.                   (progn
    7 [# g! W% x( A2 z/ }
  10185.                         (setq hasclip nil)
    2 X2 H+ }$ `; m1 g& c' e
  10186.                         (eval 0)4 Y8 ^' n, P  d& h, i: K( q0 ^
  10187.                   )
    8 x5 X( K# F) L' j, D
  10188.         )
    ( N9 a$ Q7 P  [) U
  10189.       )
    7 t0 r  K% X# i. R
  10190.           (progn
    - r9 X. [$ s, k- |8 A3 J
  10191.                 (setq hasclip nil)1 F; h' R  H8 \' w( P/ z. `
  10192.                 (eval 0)
    3 {' c8 w+ k6 J$ `! B& t
  10193.           )
      M0 E/ |# F$ L. ]& s) j# t
  10194.     )
    : v* {' Y5 G+ x8 K
  10195.   )
    1 f3 z+ z) A9 x7 v1 N0 I
  10196.   ;;2 D8 [& r+ F& Z4 }
  10197.   ;; Draw a dash or dot in image tile
    6 C* n; g4 Z4 \9 l# l
  10198.   ;;6 g2 u# u4 F" `! J# B/ I
  10199.   (defun vi (), q' s$ e3 ~8 D& q) ~7 P( J
  10200.     (setq x2 (+ x2 dash))& @/ f( m& a" l% \
  10201.     (vector_image x1 y2 x2 y2 color)4 r4 U5 E) w8 U
  10202.   )
    / ?; K1 G! x+ L4 v' @3 a/ k# l
  10203.   ;;  D/ O' q7 ]2 j  e
  10204.   ;; If an item is a member of the list, then return its index number, else
    # \1 Z* w+ s! y+ o- ~# z
  10205.   ;; return nil.
    ) T7 H: z' u! w8 R
  10206.   ;;
    6 `* q- @: u) ^
  10207.   (defun getindex (item itemlist / m n)4 o& t# n' K/ D: a' c
  10208.     (setq n (length itemlist))$ A) Y5 p5 p! f) u
  10209.     (if (> (setq m (length (member item itemlist))) 0). G, H3 G' Z, q" W2 L5 U: N- Z
  10210.       (- n m)4 [- a0 x% o8 _; q: N8 d- _2 u
  10211.       nil
    ' [% Y+ F5 `+ }$ v0 M0 t- S
  10212.     )
    3 O. ~% z# ^" y# S
  10213.   )1 W) p; V& s0 O# E! X
  10214.   ;;" R" J- h. g: e8 w* \4 u( G* P
  10215.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    . T  V6 |* H) O$ Q" s2 U
  10216.   ;; ltype of the layer so it can be displayed  beside the linetype button.
    + b: i3 l; l& c! f/ G, i3 V  V
  10217.   ;;
    8 r; I9 B9 @0 H. w$ `
  10218.   (defun bylayer_lt (/ layname layinfo ltype)
    ' d& Z; L; r1 I
  10219.     (if lay-idx' U. F: s  @1 ?' I  m
  10220.       (progn) u; i2 G) E8 t# a% r  e$ V
  10221.         (setq layname (nth lay-idx laynmlst))) s; o2 H% l5 X& Z/ t0 K, T
  10222.         (setq layinfo (tblsearch "layer" layname))
    0 I" i+ e+ \  K3 o' |  v
  10223.         (setq ltype (cdr (assoc 6 layinfo)))8 C$ `. T6 ^% x4 v
  10224.         "BYLAYER"
    7 w, I# ^! \" @7 d- A4 k, n
  10225.       )! i: P3 ~4 ~0 u; F
  10226.       "BYLAYER"  K% q& b. j# x0 \% Z# H% @3 I
  10227.     )
    ! k* V0 Y$ ^- O  ]
  10228.   )6 p7 @& P4 U6 l0 [
  10229.   ;;6 A1 s2 p- h' C: ?4 r% |/ r4 R0 E
  10230.   ;; This function is called if the color is set "BYLAYER".  It finds the color  I  N. I" @5 A: k, j  ]8 p; c
  10231.   ;; of the layer so it can be displayed beside the color button.! I; m* J' H. u; V9 v% k  O
  10232.   ;;" E3 m8 C1 W7 X/ s, L0 [3 {
  10233.   (defun bylayer_col (/ layname layinfo color)
    , d- Z, f  a* G
  10234.     (setq layinfo (tblsearch "layer" elayer))
    + I% P5 o2 p# D6 v8 i+ `: G
  10235.     (setq color (abs (cdr (assoc 62 layinfo))))
    : C8 v; B# d" V2 y+ a2 T- _7 f3 K
  10236.   )
    ! I: L+ M/ r) r: a$ T
  10237.   ;;
    5 v6 k$ M1 y" _1 z1 A3 P+ g( \
  10238.   ;; Used to set the color name in layer subdialogue.+ N: j" W8 i4 L4 c( m2 }5 W
  10239.   ;;% Z6 Z& N4 o7 g6 A* l
  10240.   (defun colorname (colnum / cn). ~& c& c" F& A/ B% M9 K
  10241.     (setq cn (abs colnum))
    $ j9 w$ z) _; c" e' C/ {
  10242.     (cond ((= cn 1) "red")1 `1 H7 \' x/ I3 b
  10243.           ((= cn 2) "yellow")( Y  F: o. E: @  S* }
  10244.           ((= cn 3) "green")) h; o6 o$ F3 l: g" I' s# Q
  10245.           ((= cn 4) "cyan")+ W* {0 W9 r% D$ I. w
  10246.           ((= cn 5) "blue")* Z0 J' R5 n5 u; U" M
  10247.           ((= cn 6) "magenta")& M" R2 ]0 w7 w' b  D# H/ C: z% d
  10248.           ((= cn 7) "white")
    7 W; @: q: \6 B: f8 t& c
  10249.           (T (itoa cn))6 p$ u6 V" j- B6 F; X1 f
  10250.     )4 ?; G, M' G! u3 P
  10251.   )
    1 S( d- N% ^( {+ k! b2 G
  10252.   ;;
    ' q; j2 }1 ?: @) D
  10253.   ;; If their is no error message, then close the dialogue.
    ( Y7 T! x- y) |* @
  10254.   ;;/ ^! D7 @" A* E3 ^
  10255.   (defun dismiss_dialog (action)
    - v2 E9 S  I( Z. G* d. p  ^
  10256.     (if (= action 0)  }: D' Z; l$ x
  10257.       (done_dialog 0)2 ~4 g8 T$ p+ h8 M* H
  10258.       (if (= (get_tile "error") "")9 C" ^6 E9 b0 t$ _2 D
  10259.         (done_dialog action)
    ! @, h2 ]3 ?0 Y4 T4 k# A! f( E* T
  10260.       )
    ) v' e7 ]6 O7 }+ |% {& Z
  10261.     )
    0 E' V& C( G+ u7 t' ?4 R- M1 o4 O! a
  10262.   )# V. }+ y8 G! \% M

  10263. 6 g3 R( i& y5 q/ j6 D+ }
  10264.   (defun test_ok ()
    1 v" N  M: ^" E/ ~
  10265.     (if (= (get_tile "error") "")" I9 C4 T, G5 P! _
  10266.       (done_dialog 1)' }! ?9 T- H' m8 K* h! x1 i+ i
  10267.     )
    $ ^( y- [% k& a; f
  10268.   )$ b1 s4 Y3 x1 s% O2 j% e. M! Q
  10269. & g; o7 u+ p+ G. b  _  {
  10270.   (defun cancel (), D* ^% Z- c  o% x9 N2 m/ b
  10271.     (done_dialog 0)
    5 ^" I8 y* f% a, J  C
  10272.   )
      {  H- n3 s1 h& H7 u- p
  10273. ) Z1 o4 X! l* Y! [
  10274. ;;; =======================================================================# \! {% t. _& w* B4 L+ {" ]' C) s
  10275. ;;; SETUP layer and linetype lists for application, and initialize all) ^: u/ Z& }8 Y2 t5 f9 r5 I
  10276. ;;; program variables.
    4 F% D* t6 {& }& H8 F

  10277. ) I+ \$ O0 m" }  Y/ I" C
  10278.   (setq elist       (entget ename)
    7 ^8 v9 M& \. ]
  10279.         old-elist   elist
    & Y0 s6 y! j! \$ |& p
  10280.         modlist     elist
      Z/ H' w8 S/ O, d9 Y* F+ C4 ]6 v0 j
  10281.         etype       (strcase (cdr (assoc 0 elist))), W0 E' x% D' }; F& A; S% W
  10282.         ecolor      (cdr (assoc 62 elist))$ T( X3 ]2 I( E$ ]9 c4 ~: s  I. H
  10283.         elayer      (cdr (assoc 8 elist))
    # L: I( ?' Q4 K- u4 m  V
  10284.         eltscale    (cdr (assoc 48 elist))
    % M) [1 l9 V0 M7 X; p
  10285.         ethickness  (cdr (assoc 39 elist))# w' b8 i( C6 o+ s$ x3 [
  10286.         eltype      (cdr (assoc 6 elist))# q- V  Q9 W3 `0 q$ _
  10287.   )
    $ D; U2 ]; t1 u" r% W: |
  10288.   (if (= (assoc 210 elist) nil)
    ) R) t7 f: W8 V0 v
  10289.     (setq extru (list 0.0 0.0 1.0))
    : f1 C3 p2 q0 d+ @( z
  10290.     (setq extru (cdr (assoc 210 elist)))0 `9 F, r% K) M1 _  l. L
  10291.   )
    9 \6 N6 y( y( a6 x
  10292. 9 `( r% u  u3 E/ F
  10293.   (if (not ecolor) (setq ecolor 256))/ g8 l# `$ q, a2 T
  10294.   (if (not eltype) (setq eltype "BYLAYER"))
    ( O! N8 \6 P  H  G/ t: S9 X
  10295.   (if (not ethickness) (setq ethickness 0))" k+ ]+ F1 S& G4 ?" [3 `: F0 O. k
  10296.   (if (not eltscale) (setq eltscale 1))) m  A1 t1 K/ r( E% v( c
  10297. ) ; end ddmodify_init  t2 ~+ u/ N9 A$ @

  10298. . a6 v! ~4 h- C3 b& {- r2 ~
  10299. ;;; --------------------------------------------------------------------------
    " N  V2 u0 w+ k$ z4 |
  10300. ;;; Function: DDMODIFY_SELECT9 n5 k  B/ L7 J1 L0 g1 [
  10301. ;;;
      L4 l. V6 o1 }7 q  L
  10302. ;;; Object aquisition function.
    ' `+ l% i7 K+ F+ ?, A
  10303. ;;;
    % E& K0 y3 j3 _2 y( S/ W
  10304. ;;; (ddmodify_select)
    % N1 U9 f6 E( p3 x  ^! Q
  10305. ;;;
    * w5 ?' ?$ I! a: ]3 d  B( A
  10306. ;;; Obtains object to be modified, in one of three ways:
    9 D% }' Z9 ?  E) Z4 Y* g2 e) j
  10307. ;;;
    $ r8 ]. P; N, s
  10308. ;;;   1 - Autoselected.
    2 R  W7 ]# r% |' e
  10309. ;;;   2 - Prompted for.6 P+ ?; ^5 {1 q; a
  10310. ;;;   3 - Passed as an argument in a call to (ddmodify <ename> )
    3 X# J( G2 [- i$ V! E
  10311. ;;;
    8 d8 `+ b" v) b- p
  10312. ;;; The (ddmodify_select) function also sets the value of the
    & w& |( S3 p$ T
  10313. ;;; global symbol AI_SELTYPE to one of the above three values to
    ; C7 C+ G6 |  G
  10314. ;;; indicate the method thru which the object was aquired.
    : E: _2 c1 v# N5 i6 U- p$ `
  10315. ;;;$ w% s+ ^/ S. V# e7 b4 }( t. A1 g
  10316. ;;; This value can be useful to applications that want to RESTORE
    - p5 x- c/ k8 \; o
  10317. ;;; an object that was autoselected to its previous selected state5 U' _2 S2 c7 u, h/ {+ i7 g
  10318. ;;; when they terminate, although there doesn't appear to be any
    + A# a0 b, G* H2 k7 k) g$ i
  10319. ;;; way to do this right now.0 v7 b' X% y) S3 f+ R, V8 |, @' M

  10320. # i- A: X% y! I2 B
  10321. (defun ddmodify_select ()9 L5 S6 o  E5 _" y( V
  10322.    (cond" s6 }+ p! U4 c4 N  o1 J- k
  10323.       (  ename                             ; (ddmodify) was called5 b; ~$ h" `1 v
  10324.          (cond                             ; with an <ename> argument
    4 W; M0 R% `6 K+ W- a- D( d
  10325.             (  (entget ename)              ;   If object is non-deleted
    ) C, _( K' H5 S9 D( E
  10326.                (setq ai_seltype 3)         ;   then return its ename.
    7 ]0 x/ A8 A+ q3 V) h. C2 g5 B1 M
  10327.                (ai_return ename))))
    8 P) X+ O8 u5 T

  10328. ) Y& q3 B5 C0 a7 V! j
  10329.       ;; return auto-selected , see ai_utils.lsp; s0 U* Z( ~& Y- U8 m
  10330.       (  (ai_autossget1 "\nSelect one object to modify: "))7 v; a& R& G3 c; l# p9 L3 f

  10331.   U6 J, ^- y" f# B& d' ^
  10332.       (t (princ "\nNothing selected.")6 |$ K3 F* w* G1 k: d
  10333.          (ai_return nil))
    2 _! x9 P& s" ]8 @& P0 o
  10334.    )3 N1 Y& j3 L; _  e! g
  10335. )
    ! t4 {% R. b1 M5 L+ `
  10336. 7 x) `: ^" w; K4 B% }7 a- m$ h' \
  10337. ;;; ============= Command line interface function =======================! H. B% m+ [0 k7 t: Z' @7 K

  10338. 5 f3 r  ]" Y) V, G2 p  k
  10339. (defun C:MMO ()# \  _( B9 [3 |" R) Z- F
  10340.    (ddmodify nil)+ n) I+ T4 m2 U$ B9 N
  10341.    (princ)6 O8 w- N' J/ C* H! Y
  10342. ): C* I  b8 g% [. f. B
  10343. 6 D+ I5 t; [4 [. b8 T
  10344. ;;; ================== (ddmodify) - Main program ========================6 O* [$ H8 U8 g8 u. I2 W  s. S
  10345. ;;;" ~  x' [2 D( l5 r
  10346. ;;; (ddmodify <ename> )
    ! A" u7 a0 ^; ~' k- D" H; k
  10347. ;;;2 y( }, c) C) ^; a) |$ g$ p
  10348. ;;; Main program function, callable as a subroutine.
    1 L+ n1 X# E, n0 ^  ]) |
  10349. ;;;6 {7 w9 [4 M9 j7 e. L& y7 M- I
  10350. ;;; <ename> = object name of the object to modify.7 [; Y, n) ?, _2 ^
  10351. ;;;
    $ y" R5 B' t, ~
  10352. ;;; If <ename> is nil, then user is prompted to select1 d& Z& T. i2 }$ g
  10353. ;;; the object interactively.+ A: _5 W3 K+ [# V/ J7 O0 d
  10354. ;;;
    ) K5 v4 @. B: l( R! @$ Y
  10355. ;;; Before (ddmodify) can be called as a subroutine, it must( {. s" S' _) s2 _
  10356. ;;; be loaded first.  It is up to the calling application to
    - ^! G* l4 ~* c7 m2 Y  I8 T
  10357. ;;; first determine this, and load it if necessary.
    + T$ D0 {3 ^" V# J- C

  10358. 0 ?! |3 X' K/ G! K
  10359. 3 K' o8 w4 |. @
  10360. (defun ddmodify (ename /8 Z. E- S9 I$ `6 |& [5 U
  10361. 2ndpt              ell_calc_area            move_pt1               templist7 Q% d: ~. f, s2 [' }8 f
  10362. add_mdash          ell_tile                 n                      tempmod
    8 q, e: b% U( ^! P
  10363. alipt              eltscale                 name                   tempst_ang
    / [& \; P# I9 l
  10364. ang                eltype                   newpoint               test_ok( _' T; A, z' q; l
  10365. arc_calc           emod                     next                   text
    $ t$ z  M; S- B0 O( \
  10366. arclen             end_ang                  next_vertex            th-value
    % ^( p) L: I; E0 `
  10367. assoclist          endpt                    obl                    tile
    - R! z& V5 e  e. S# B. J
  10368. atprompt           errchk                   off                    tile_rect. A4 [. R$ `* o+ v5 b" v6 J+ p
  10369. attag              ethickness               old_majrad             tilemode5 T) {: n- E. l7 E3 ?7 ?* T
  10370. attprompt          etype                    old-closed             totang  _* \! @: r; H' Y) A8 f
  10371. bit                extru                    old-closedm            tstyle4 [8 y8 w/ p" Z% s
  10372. bit1               fchk                     old-closedn            u
    ( d) C. h0 n; [# |* t
  10373. bit-10             first-10-rec             old-elist              undo_init
      O" Q/ Z: i* a- ?' R% |
  10374. bit-11             first-10-time            olderr                 upsd5 Z0 }8 x" c! a; m1 L9 T
  10375. bit2               first-11-rec             old-fit                v9 w( T9 j" _, ?
  10376. bit3               first-11-time            old-idx                va$ g3 a' C' e# _5 v! _* y* A
  10377. bit4               fit                      oldlist                value
    3 J( |6 [& x$ j: e6 p# W
  10378. bit70              frozth                   old-spltype            ver_4
    / E) B+ n% [9 @% Q9 M  I* k
  10379. bit-70             f-vis                    old-u                  ver_ang1
    0 H* b/ o5 J- w+ E: b; Q
  10380. bit75              fx                       old-v                  ver_ang2- ^  E/ y' v8 Z
  10381. bk-up              get_color                on                     ver_col
    + P# V$ m% [" J" n6 K) j
  10382. bkwd               getcolor                 onoff                  ver_colsp: Y0 i; d& G/ N: L- ?0 n
  10383. boxlength          getindex                 on-off                 ver_eangle* P) |2 |! J. f9 G
  10384. bylayer_col        getlayer                 patlist                ver_hght
    3 t% e, P) K2 l
  10385. bylayer_lt         getltype                 pattern                ver_majrad! h  ]  N( ^7 o# }$ ?  x4 U
  10386. calc               getthickness             pltype                 ver_obl8 S% P# @$ x6 f2 e! h9 B0 l
  10387. cancel             globals                  polytype               ver_pt16 `6 m* b- p. \& a( r5 o2 y
  10388. cir_calc           ha                       pre                    ver_pt22 J# c4 R* }1 y+ U9 S
  10389. closed             ha-prev                  proplist               ver_pt3
    ( f9 i3 e  Z* G4 h" c
  10390. closedm            help_entry               pt                     ver_pt4- m8 N2 x) u- V# J, y- a
  10391. closedn            hght                     pt1                    ver_rad2 M3 K$ ]! l) g1 U3 ]' U
  10392. cmd                icvp                     pt1_eq_pt2             ver_rot1 c6 N5 E8 m' z& o/ S1 ~
  10393. cn                 image_add_vector         pt2                    ver_row7 A! G2 N7 B/ H0 Z. ^& z6 C
  10394. cname              image_clean_variables    pt3                    ver_rowsp
    8 t% K9 ]6 e4 E* ]9 ?" H( a
  10395. cntl-pt-indicator  image_cross_product      pt4                    ver_tag
    , m5 R, H5 n- E2 s# U
  10396. code_71            image_disp_opt           ptype                  ver_u
    ; @9 P' z; K, z4 L/ X
  10397. col_tile           image_dot_product        radius                 ver_v
    5 F- h; E8 ?' r% x1 m( C2 t$ O
  10398. col-idx            image_normalize_vector   rational_spl_flag      ver_wid( Z* m7 Y4 m6 t# s& H5 z
  10399. colname            image_rotate_vector      reset                  ver_x1
    4 t* a. `; t" U% c/ U
  10400. colnmlst           image_scale              reset_flag             ver_x2
    / j6 }) m3 z4 ^2 {
  10401. colnolst           image_scale_vector       reset_lay              ver_x32 a, l; u! r3 Q
  10402. colnum             image_update             reset_lt               ver_x41 J! k( A7 z& [' p* j6 j
  10403. color              index                    reset_uv               ver_xline_pt1' e1 H( h1 S0 J/ B, @( a6 X
  10404. colorname          inv                      rot                    ver_xline_pt2
    1 ?1 R. p! e3 v, w- v/ u
  10405. colorno            item                     rows                   ver_xline_x1; c3 `; s4 @8 D9 G
  10406. col-sp             item1                    row-sp                 ver_xline_x2
    4 B' _% ]+ J; _% m9 ?9 s
  10407. columns            item2                    rrat                   ver_xline_y1
    8 a  V( ?: @4 q2 C0 p
  10408. con                itemlist                 s                      ver_xline_y2
    " o& z. K0 w. ^* _
  10409. coord              jlist                    set_action_tiles       ver_xline_z1
    - ?2 Z+ h" G) Y) F2 H
  10410. ctr                jlist_act                set_just_idx           ver_xline_z2
    6 Y' f: r) `8 T/ A  i7 r
  10411. cur-10-rec         just-idx                 set_tile_bk-up         ver_xscl
    * A/ k. C" k* E$ X
  10412. cur-11-rec         layedit_act              set_tile_cntl_pt       ver_y1
    9 O" x% c6 [7 |5 `4 ~8 [8 M
  10413. cvpname            lay-idx                  set_tile_data_pt       ver_y25 ?" j1 t! H6 _! q" Q
  10414. dash               layinfo                  set_tile_dirv          ver_y3
    % p! R) |3 k. P4 Z
  10415. dashdata           laylist                  set_tile_edges         ver_y4  `' j- S0 |* ^/ ]9 S/ s
  10416. dashlist           laylist_act              set_tile_endang        ver_yscl
    * q/ ]" S  ?1 ?" w( U! p$ A1 N
  10417. dashsize           layname                  set_tile_hght          ver_z15 h8 K  n( s0 b! e" ~
  10418. data-pt-indicator  laynmlst                 set_tile_icvp          ver_z2
    3 n; Q! _2 o2 t1 e& v  i: r$ i
  10419. dcl_id             layvalue                 set_tile_just          ver_z3
      ~3 @) `' {! E+ z
  10420. dd3dface           line_calc                set_tile_obl           ver_zscl& u4 l8 B: Y0 e0 O/ |; \
  10421. dd3dsolid          linetype                 set_tile_prompt        verify_a
    ; m6 |' Q9 H! V8 V4 n$ ]
  10422. ddarc              list1                    set_tile_props         verify_d7 X5 R; [% K* x( x% |0 ~
  10423. ddblock            longlist                 set_tile_pt1           verify_i
    5 p% w2 L5 M$ o3 u6 e
  10424. ddbody             ltabstr                  set_tile_pt2           verify_xline
    # I5 s! |, X! E/ H# R
  10425. ddcircle           ltedit_act               set_tile_pt3           vfy
    & V2 `0 S( s) D: S
  10426. ddellipse          ltidx                    set_tile_pt4           vi/ ?; d1 A/ D7 R7 \& o% S
  10427. ddgetprompt        lt-idx                   set_tile_rad           vlist0 K6 Z/ S9 B- T5 f" E7 c
  10428. ddgettext          ltlist                   set_tile_rc            vname1 i6 |2 M; [- P+ M
  10429. ddimage            ltlist_act               set_tile_rot           vpf
    * I9 y& Z) I9 M% |4 v1 J
  10430. ddimen             ltlist1                  set_tile_scale         vpid1 |: L2 L6 z+ K
  10431. ddleader           ltname                   set_tile_spline_props  vpldata
    $ l9 w; `% s7 }. f/ |
  10432. ddline             ltnmlst                  set_tile_stang         vpn
    * f7 c1 k  O" d* {! N7 E" J) Q$ U
  10433. ddlist             ltvalue                  set_tile_style         vpt$ c  Y% M+ ~3 X1 p. `1 D
  10434. ddmline            ltype                    set_tile_tag           which_tiles
    , A7 `0 K3 n& H! X2 S
  10435. ddmodify_err       m                        set_tile_text          wid
    - F# L) j" v7 X8 q
  10436. ddmtext            majrad                   set_tile_vpt           x1 ~: b3 ^- A' n: A# f
  10437. ddpline            make_lay_lists           set_tile_wid           x14 B* {2 H' ]2 M' j8 w8 O' Z
  10438. ddpoint            make_lt_lists            set_tile_xline_pt1     x2! S1 y& |  k$ C' i  k
  10439. ddray              mdashlist                set_tile_xline_pt2     x3
    ; R# ~' L8 r- \7 `% x7 E! [  A
  10440. ddregion           minrad                   setcolor               x4
    # H4 _. C0 V4 A' n/ A% m
  10441. ddshape            modify_3dface            shght                  xdlist
    8 \' f, M4 m1 n" a  |
  10442. ddsolid            modify_3dsolid           showpt                 xline_pt1
    ! l- N% g. p" \4 t/ Z- e4 {' S
  10443. ddspline           modify_arc               size                   xline_pt2
    3 J$ x) r. @* n- {6 T8 H8 X6 Z8 w- Z
  10444. ddtext             modify_block             slist                  xline_x1
    4 ~3 B' Y0 R6 F9 k6 a3 t
  10445. ddvport            modify_body              sname                  xline_x20 L% a! ]1 b" w: v0 T
  10446. ddxline            modify_circle            sortlist               xline_y1; o  r, |. [! ^
  10447. denom              modify_ellipse           spltype                xline_y2
    . c: x6 j, Q( Q! p8 w- k
  10448. dialog-state       modify_image             ss                     xline_z1! b8 b1 k! }& P4 M* [  z
  10449. dir_pt             modify_line              st_ang                 xline_z21 k& N( ?0 x9 V% E, c
  10450. dir_ptx            modify_mline             stpt                   xscale
    3 ?0 v: B8 W# @- D8 J2 D
  10451. dir_pty            modify_mtext             style_act              xx
    % S4 P3 Y1 T/ C$ S1 O3 `
  10452. dir_ptz            modify_point             style-idx              y
    / G4 L4 {1 L7 P
  10453. dismiss_dialog     modify_polyline          style-list             y1% K- H5 H3 `, T2 ~8 Y% z2 c
  10454. drawpattern        modify_prop_geom         tagval                 y2
    * B& o$ j1 s9 O- F- @( }( k
  10455. echo               modify_properties        temp                   y37 s4 }7 T. n, a" A' S+ _) G
  10456. ecolor             modify_ray               temp_color             y4) L2 I; h2 M4 L1 q; |
  10457. edge1              modify_region            temp_dir_x             yscale9 p+ Q3 S8 q0 j0 b
  10458. edge2              modify_shape             temp_dir_y             yy
    3 r+ U! ]2 @5 V* d
  10459. edge3              modify_solid             temp_dir_z             z1
    . f+ ^: j+ L7 w) U& \6 r1 }
  10460. edge4              modify_spline            temp_xline_pt1         z2
      v3 z. A& t3 o
  10461. edgetest           modify_text              temp_xline_x1          z3+ I( \! G, [) g! I; `% W
  10462. elayer             modify_vport             temp_xline_y1          z4. U! d( @- [) S8 ~* q
  10463. elist              modify_xline             temp_xline_z1          zscale, l  Q" {5 C; i5 S
  10464. ell_calc           modlist                  tempend_eang           zz
    6 v* `! W0 n3 }& j3 Q
  10465. dir-idx            safe_ddedit              ver_MtextWidth         xcliponoff% `5 @( g5 R* _4 F) Y8 E
  10466. MText_style8 e+ u; D* s! W# q8 t! x
  10467.   )4 ~  N# W) l8 H  Q7 H; o3 y

  10468. % t/ k" u# n0 U
  10469.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    , r8 X+ U+ k4 r3 i& Y7 ~% k1 W
  10470.         old_error  *error*            ; save current error function
    8 i) t* M' n: L! {6 Z* [2 T
  10471.         *error* ai_error              ; new error function
    + u3 W: s' v# S; O0 H; M1 A
  10472.   )
    1 @2 n$ K% {8 m+ V2 C
  10473. + j, r$ h! a1 m' T; ]
  10474.   (setq old_pickstyle (getvar "PICKSTYLE"))          ; save old pickstyle5 H; _9 _5 ~- B) m
  10475.   (setq new_pickstyle (logand old_pickstyle (~ 1)))  ; turn off group selection
    & `- M1 g5 B9 A5 q- ~
  10476.   (setvar "pickstyle" new_pickstyle)                 ; bit and set to new value& g5 B7 m. R) x( u8 N! V

  10477. 0 n9 G4 g: l0 V  p5 V
  10478.   (setvar "cmdecho" (cond (  (or (not *debug*) (zerop *debug*)) 0), |! U' h/ k6 @2 C8 D( ^
  10479.                           (t 1))): J+ P. P# N% a0 |
  10480.   (cond4 b5 G8 l$ @$ e/ C5 G
  10481.      (  (not (ai_notrans)))                      ; Not transparent?
    & O6 n$ R4 t6 q( d
  10482.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    ) `# o) Q* h, ^& y) z4 l7 p3 o
  10483.      (  (not (setq dcl_id (ai_dcl "ddmodify")))) ; is .DLG file loaded?
    , T8 m9 m- I2 z; u3 m
  10484.      (  (not (setq ename (ddmodify_select))))    ; object to modify?: W/ l% F# @8 J' t# z; m
  10485. 9 _$ u9 q2 t/ D! [( p+ E- A
  10486.      (t (ai_undo_push)
    1 O/ w+ v' w  J
  10487.         (ddmodify_init)                          ; everything okay, proceed.1 S4 p3 B  }9 x9 k# {: i
  10488.         (cond
    # M0 W) Q+ A2 N, ~. u$ ?0 X
  10489.            ((= etype "LEADER")
    9 [! E& w  f; {7 Y5 n& l0 w7 g4 G( o
  10490.              (setq help_entry  "modify_Leader_dialog")  B4 n/ Z$ t+ X3 R; d
  10491.              (ddleader)
      [! L6 X+ A' x# z
  10492.            )
    & J+ Z' t0 }. E  Q# {
  10493.            ((= etype "ARC")6 k0 Z# m/ n& d- r. V  A3 H
  10494.              (setq help_entry  "modify_Arc_dialog")- L0 p' b1 L' O( _
  10495.              (ddarc)
      d2 ?. O2 \6 f* A4 A
  10496.            ): k6 @( T8 J- l
  10497.            ((= etype "ATTDEF"). E5 r( ^* d+ Z; P, q5 ?: }
  10498.              (setq help_entry  "modify_Attribute_Definition_dialog")
    : A% S# ^% M7 ^2 A3 c8 S. Y
  10499.              (ddtext)
    - B) p7 _/ Q6 _3 f4 o! p& q- Q
  10500.            )
    8 M. M2 C8 G; P! N1 v% c0 P9 {
  10501.            ((= etype "CIRCLE")
    / ^! |' r# n: }  M1 J
  10502.              (setq help_entry  "modify_Circle_dialog")0 R1 w7 j9 M3 x& b( e' r: z% U
  10503.              (ddcircle)/ a* p4 B* P9 H3 d
  10504.            )- E3 D4 h8 u& ~
  10505.            ((= etype "ELLIPSE")
    0 v9 V+ t0 V( a1 k; y
  10506.              (setq help_entry  "modify_Ellipse_dialog")  j0 z4 h5 L' n+ H) S
  10507.              (ddellipse). h5 s$ w! O0 N3 W# E
  10508.            )
    # F3 u) R6 e9 N. l
  10509.            ((= etype "3DSOLID")
    3 Z6 [* [) P6 o% e. P& b! @) }
  10510.              (setq help_entry  "modify_3d_Solid_dialog")
    + m. `7 @8 I; j" m7 Y
  10511.              (dd3dsolid)
    $ \) W$ Z  X! a- ?  N
  10512.            )5 u' p# A+ f9 K& r8 E* k* C1 m! }7 D1 @
  10513.            ((= etype "BODY")
    ; l- ]$ v9 t- ~! K( I+ f7 ]0 p
  10514.              (setq help_entry  "modify_Body_dialog")) M; g9 W" V$ O; [
  10515.              (ddbody)
    1 @7 I1 a$ s+ f+ y$ X# x
  10516.            )8 C- J. T% g2 n8 U. W
  10517.            ((= etype "REGION"). N" H9 u+ U4 P( G+ B7 X
  10518.              (setq help_entry  "modify_Region_dialog")
    7 Z$ t! @1 D& f* o4 G
  10519.              (ddregion)
    ! C- ^/ H% z4 P( l4 V3 C
  10520.            ): A9 d7 ?3 g% @
  10521.            ((= etype "HATCH")
    1 Y+ a* q) w. @, B% ?' S! r& A
  10522.              (setq help_entry  "modify_Hatch_dialog")+ @1 K$ {$ N+ l# h6 Y0 V
  10523.              (ddnewhatch)
    / L6 i2 K8 o1 b  j2 ^5 n$ G% w
  10524.            )
    : }( S+ ~3 X, O
  10525.            ((= etype "SPLINE")
    ) u( \. i; L; h" M3 e( _3 _
  10526.              (setq help_entry  "modify_Spline_dialog")
    $ q. O- V- t! T8 H) x5 P
  10527.              (ddspline)! }( @- J& Q0 X; k1 J. E2 Q" z  O
  10528.            )
    " [) `# K! x( ?4 N) H
  10529.            ((= etype "INSERT")    ; see ddblock for help_entry" _$ ]6 z2 W3 D
  10530.              (ddblock)5 P/ h( I* l) S
  10531.            )
    ! h2 D% W. u5 Z! H* q
  10532.            ((= etype "LINE")
    5 \% O, B/ u! u# e; S, T2 Z
  10533.              (setq help_entry  "modify_Line_dialog")- m  I, ~0 ~) u" ^) p3 |) l
  10534.              (ddline)
    2 {- A: m5 @9 K+ T  g# o0 S" C2 e/ T) ^
  10535.            )3 t' [' U8 S% w8 T
  10536.            ((= etype "MLINE"): D: y: d0 p3 S! f- X9 s8 |/ S
  10537.              (setq help_entry  "modify_multiLine_dialog")
    4 Z# U- h  {, Z5 v/ k7 X6 J
  10538.              (ddmline): c% Y- K" V9 a- n
  10539.            )" ]7 F2 Q/ u8 a, I* B# t! J8 q
  10540.            ((= etype "RAY")6 b6 K7 I" X- v7 m
  10541.              (setq help_entry  "modify_Ray_dialog")
    / r+ o& u) H& o8 m# c8 X
  10542.              (ddxline)
    " A' Z/ J6 R+ M! K$ u8 \
  10543.            )
    / U7 `8 Q4 ?( U8 `$ c
  10544.            ((= etype "XLINE")" W0 P( J+ \0 i9 J  v  `
  10545.              (setq help_entry  "modify_Xline_dialog")
    % l0 e# {) P5 t8 O0 s
  10546.              (ddxline)& Z# D( u% Y4 ^; D6 b; e6 p
  10547.            )
    : v( f. ?& r4 n+ o. B, j
  10548.            ((= etype "POINT")9 X2 `1 B. M1 J* u" y- w
  10549.              (setq help_entry  "modify_Point_dialog")$ X) u1 B! H7 S
  10550.              (ddpoint)
    # P/ R4 G6 U+ l+ ~+ D
  10551.            )
    0 X2 @2 v& H6 B
  10552.            ((or (= etype "POLYLINE") (= etype "LWPOLYLINE"))
    ; [7 i- u- A' e, m$ @3 w
  10553.              (setq help_entry  "modify_Polyline_dialog")0 M/ A; \9 @- N+ ?* y% G/ P/ b
  10554.              ;; If a 2D pline, check to see if it is planar to the current
    + l  Z9 P# k( ]3 O
  10555.              ;; UCS, reject if not.   To see if the pline is parallel,) R9 X8 S5 S" |% i8 ]
  10556.              ;; the 210 group (WCS) is added to the current UCS origin (WCS)$ \% G3 U, t' m: w, a
  10557.              ;; and then converted to the current UCS and checked to see if; X  c0 x& `* ]) d; g! A, Y7 H# C
  10558.              ;; it is equal to (0,0,1).
    ; X* k: R% C, A2 _2 t4 Y- I

  10559. ) |2 O# c8 Y8 x0 W
  10560.              ;; Incase the 210 is default and not in the dxf list.5 U6 C& m* A: n- c$ c/ n( o& C. ^
  10561.              (if (= (assoc 210 (entget ename)) nil)
    : [8 Y7 p  G0 y4 X+ _
  10562.                 (ddpline)
    & K; D- E2 d9 G* e
  10563.                 (progn2 A* H8 H7 Z/ p$ F$ ~6 x% {4 _% P& y1 Y# B
  10564.                     (if (and (zerop (logand 120 (cdr (assoc 70 (entget ename)))))
    4 p% R) z7 p) ]+ I, T) L* {5 Q
  10565.                             (not (equal '(0.0 0.0 1.0): `* v) A' M  z
  10566.                                    (trans (mapcar '+8 n/ h9 Y8 T1 C7 K. E, l2 H
  10567.                                              (cdr (assoc 210 (entget ename)))
    7 T; f: }% \) _1 `1 o3 G
  10568.                                              (trans '(0.0 0.0 0.0) 1 0)
    , q1 W. v; @5 M' R
  10569.                                           )
    ) h* A% ]0 @, i* e: G% ]0 p
  10570.                                      0 1
    0 l2 r9 e/ h) i8 u
  10571.                                    )) Q7 F( s: E! K( [. M2 o# B
  10572.                                    0.0000000001            ; fuzz# N7 I' ~$ r( a
  10573.                                 )
    . i+ x; c" E. T' M  V5 w) _% D9 m
  10574.                             )
    ; C  p$ N' W$ G! b! g' x
  10575.                         )# b4 r6 H& c3 o# U2 s9 r
  10576.                     (princ "\nThe 2D Polyline is not parallel to the current UCS."): j2 ?1 _7 b4 s" T; `
  10577.                     (ddpline)
    6 g1 f3 l8 V" C$ k7 d
  10578.                     ): C; @# ^/ ?/ O* ^, }2 g
  10579.                 )+ u1 B& J: t/ p
  10580.              )
    % f! o* Q# {6 e+ W* H
  10581.            )
    9 Y9 |/ U. K8 @+ f- S. U
  10582. 5 T% ^4 L% [6 U* S1 d! \
  10583.            ((= etype "SHAPE")
    ) b( f. h4 V) ^
  10584.              (setq help_entry  "modify_Shape_dialog")
    7 }; H- ?- _: x
  10585.              (ddshape)4 g; [; G& m" A) b. q! N5 Y
  10586.            )9 H( Y+ d3 |5 g; N4 E
  10587.            ((= etype "SOLID")
    $ Q: J& R* M+ ~
  10588.              (setq help_entry  "modify_Solid_dialog")
    & v+ r8 S. s6 n$ T- E! l
  10589.              (ddsolid): h* S* L% w% V" I1 c7 E
  10590.            )' e7 \0 m! w: y2 i- R/ X
  10591.            ((= etype "TEXT"): D+ S- I7 f2 ?, `" r$ T7 F' J9 @
  10592.              (setq help_entry  "modify_Text_dialog")8 R/ I3 C' ~2 T2 E; V$ g9 F% R
  10593.              (ddtext)* R# |3 B" L6 ?& n; z- L
  10594.            )
    ! q& E. M8 n$ L4 v* L  e$ y1 }
  10595.            ((= etype "MTEXT")
    / P; \% X5 b2 X' O
  10596.              (setq help_entry  "modify_MText_dialog")
      G- N. H  W0 @3 L; k( J
  10597.              (ddmtext)5 I+ x0 P) g  r" y# {
  10598.            )
    . e3 n7 E( X6 a7 Z  _5 l, N2 Y
  10599.            ((= etype "TRACE"): b- [  o3 y. F. L/ e0 m
  10600.              (setq help_entry  "modify_Trace_dialog")
    : @3 [% U1 o& h, W' i4 Z
  10601.              (ddsolid)
    6 M) ^% ~* s2 {& {1 B9 b$ I
  10602.            )
    9 D0 M# P; R6 d) b! y# d$ S
  10603.            ((= etype "VIEWPORT")2 u# O0 V' E! v4 e: n8 s8 A) d
  10604.              (setq help_entry  "modify_Viewport_dialog"), a% f$ S6 y( _6 c! T1 O% Y# w
  10605.              (ddvport). Q; [/ }; U) _0 J) Z: s2 K
  10606.            )% L  z' O1 ^! G/ i1 a
  10607.            ((= etype "IMAGE")
    , h' U5 L1 a3 @  b3 ^* m( j% G
  10608.              (setq help_entry  "modify_Image_dialog")
    + R% E4 G( {% T
  10609.              (ddimage)
    , c( i% j/ P) V" X% C
  10610.            )2 ^  n0 S* t( r8 ^$ `
  10611.            ((= etype "3DFACE")
    # O$ k& w) N- C) Q% H1 K5 c
  10612.              (setq help_entry  "modify_3D_Face_dialog")
    ' J7 ~+ o$ l) z) v, V. N
  10613.              (dd3dface)% t! \- Y% c( p, A  A
  10614.            )
    2 F+ N% i8 M; K9 |' f* G1 r
  10615.            ((= etype "DIMENSION")3 N: M7 Y7 S8 R7 E8 ~
  10616.              (setq help_entry  "modify_Dimension_dialog")! L! n# {- w' Y# a
  10617.              (ddimen)9 l8 S+ V* C5 }) A, `2 N
  10618.            )
    6 Y1 G$ _7 n7 C6 P& j1 b; ^! ^
  10619.            ((= etype "TOLERANCE")4 |2 Q0 s$ n  P4 k  i) n
  10620.              (setq help_entry  "modify_Tolerance_dialog")7 r9 b# r9 M" g- D/ f1 S  a8 n
  10621.              (ddtolerance)2 W1 E$ S# O" D3 L* U8 ?
  10622.            )! H# e' I' |& n5 m) e
  10623. ;; Fall-through condition changed by MCAD for MDT 1.1 release.
    , H0 p% Y$ Z4 u6 S& B' J/ x& J' }
  10624. ;; This allows DDMODIFY to work on any custom object or any new object type
    6 ~( c) q. m0 n8 \5 _% |% l
  10625. ;; that isn't specifically handled above by calling the more generic DDCHPROP.! k5 l: q, b) V. {+ W  }8 v
  10626.            (t
    * u; a9 z. O7 ^
  10627.              (if (and (not ddchprop) (not (load "ddchprop" nil)))
    - e+ n1 l  Y, A8 t. Y# w6 K/ c
  10628.                 (princ (strcat "No dialog support for object type: " etype ".")))/ u( _1 z3 s+ M1 q; g
  10629.              (progn
    " J. ?' x8 ?5 ~! \0 L
  10630.                 (setq tempss (ssadd ename))
    9 D2 {2 u7 P+ A0 |. R, T% `
  10631.                 (ddchprop tempss)
    ) [0 r6 N1 C1 v2 p2 y
  10632.                 (setq tempss nil)  @" J1 a" C# ?5 W
  10633.              )0 L" p' Y, |; k" w, ^) k
  10634.            )! ]) j& Y0 i: y
  10635.         )& Q* ]9 g1 e7 [$ g$ d
  10636. ;; Previous fall-through condition.
    $ V3 J+ U+ a+ }. m' a) P# S8 l  X% i
  10637. ;;           (t (princ (strcat "No dialog support for object type: "  l+ w4 ]/ k. l# U6 a# B
  10638. ;;                             etype "."" f1 @1 m3 v3 t3 s1 q3 I
  10639. ;;                     )
    / a/ B! W% T# }4 d* G" C. q' S
  10640. ;;              )* L. @- ~# ?' a4 n/ h
  10641. ;;           )! A8 z0 j/ i6 D2 C7 |. `, r# w
  10642. ;;        )
    $ [& I# i9 ~( _
  10643.         (ai_undo_pop)
    . U1 t9 u' n0 t, e: d
  10644.      )& a) |5 c' l% ^, t
  10645.   )
    6 |% a  Z7 x( f0 j6 n6 j" \8 Q) u1 f

  10646. 4 i! a) G) @2 F$ z
  10647.   (if (eq new_pickstyle (getvar "PICKSTYLE")) ; if user didn't change pickstyle
    ! x1 N( R. x& Y( j$ O' _
  10648.       (setvar "PICKSTYLE" old_pickstyle)      ; transparently then set it back3 F6 z7 p  W( A) s
  10649.   )                                           ; to what we started with" F" e& Q1 W/ Z3 L6 g  p$ |9 H
  10650. ) m/ W7 ~4 _, c7 e4 h, C+ k+ D  P% a
  10651.   (setq *error* old_error)2 h$ ]0 S) J' V+ H- S0 I, K; l% P
  10652.   (setvar "cmdecho" old_cmd)8 p# D* ]6 `! [
  10653.   (if (not reset_flag)            ; if object was modified, then
    9 ?" b3 x% I9 |1 h3 f, _4 \( O
  10654.       (ai_return ename)           ; return it's ename to caller
    1 G/ B% q2 w& }  D2 ]$ {, [! d% L
  10655.   ): @) K$ u. t+ w% G1 ?9 g/ {( R
  10656. )
    / [, r' k' ^+ t$ R! `$ t1 D
  10657. " \( W5 U+ N# Z" z" r
  10658. (defun checkForLockedLayer (ename)
    / Y9 P; _. J' ~( B" h
  10659.     (setq layername (cdr (assoc 8 (cdr (entget ename)))))
    * W! R8 N7 B5 I# N+ _/ m9 m# n
  10660.     (setq layerflag (cdr (assoc 70 (tblsearch "LAYER" layername))))
    ! f+ ~- Z6 S8 H" d" C
  10661.     (if (= layerflag 4)
    , r+ l) d* k( z/ S3 N
  10662.         T
    1 a  u0 o: ?0 X/ Q4 s1 c
  10663.         nil9 F$ E) a3 _( {$ O: S* C$ m
  10664.     )) a: e) e' j$ S) b
  10665. )
    / O7 F, j# R( f' B/ r

  10666. . Z. I9 e2 D2 N$ d% @
  10667. (princ "  DDMODIFY loaded.  ")9 Z8 O/ s: j/ q4 n' W$ ~
  10668. (princ)
    ( y3 X' B5 c8 V, J+ y# ]$ _/ q5 s
  10669. ;;;???;;;---------------------------------------------------------------------------------------7 I' M, `$ S6 r- U* b
  10670. 1 r7 L7 i# P% b) A
  10671. ; Next available MSG number is    8 6 ?' b& n; V+ x) {7 |% {$ ~
  10672. ; MODULE_ID DDUCSP_LSP_1 W" N, d; e; |% h
  10673. ;;;* H1 a" {5 Q# G* f8 N& V
  10674. ;;;    dducsp.lsp! U, z$ B7 m6 V* N: a0 u
  10675. ;;;
    - |/ q/ ]2 L, r! F3 V, _& ]4 H! h
  10676. ;;;    Copyright 1992, 1994, 1996 by Autodesk, Inc.0 O2 M  Y2 B3 {  I7 E. j
  10677. ;;;
    5 l2 m5 `% M# }. R4 B4 E& L  W
  10678. ;;;    Permission to use, copy, modify, and distribute this software
    , b5 K2 }1 ^8 A, g- h
  10679. ;;;    for any purpose and without fee is hereby granted, provided
    ! a1 r- u8 V; x$ J
  10680. ;;;    that the above copyright notice appears in all copies and
    + G! v3 y' g2 Y2 ?
  10681. ;;;    that both that copyright notice and the limited warranty and
    5 a( Q/ v9 W; X9 i6 R1 ?, Z! q
  10682. ;;;    restricted rights notice below appear in all supporting! s! ~* ]& E, g: B5 J% W" o
  10683. ;;;    documentation.
    % [) W) S9 H+ k! Y) w
  10684. ;;;
    " b: M+ ]  J- O$ ~
  10685. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    ' d. ^% }6 [5 v. r) t
  10686. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    ! U6 V; q# c- E- |0 i
  10687. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    + x. K, U( `/ y. w7 ~
  10688. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    : R( i* v3 A4 G2 _/ ~, V% ~
  10689. ;;;    UNINTERRUPTED OR ERROR FREE.
    2 R* S+ H9 g! P: u7 u  ?
  10690. ;;;
    8 C  T- E" _% E
  10691. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to) B! w/ u# P  k2 f! M* W+ e& K' w7 D
  10692. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    1 L& ~4 g  s; y+ }2 X- P7 ~
  10693. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
      g' R6 V0 F, H2 `1 @  D& @
  10694. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    . a2 b5 p% F9 {5 ?5 e/ L; m: S, e, D+ F/ P
  10695. ;;;$ z* Q! s* Y( J1 d* F' H8 S# z, x
  10696. ;;;.8 `8 Q) v8 S! X( q) p
  10697. ;;;   C:DDUCSP - User Coordinate System presets dialogue.' x& p9 c( w8 T. w/ T% G+ @
  10698. ;;;     
    3 o) M0 i$ _( u/ G
  10699. ;;;              Uses DDUCSP.DCL for the dialogue definition.  The9 T6 c6 H, }8 s5 q. u$ Z
  10700. ;;;              slide images are in ACAD.SLB.4 ~9 H, |8 d3 p; p
  10701. ;;;& R, c& y7 L6 z
  10702. ;;; ===========================================================================
    4 t  C5 U1 r$ i5 N& i$ s
  10703. ;;; ===================== load-time error checking ============================# _# ~5 q& H% z" ]+ O/ ^
  10704. ;;;
    6 m9 e# H4 z8 w5 d7 Z9 y0 \. l2 p2 Y

  10705. # p: [" U, |6 ?$ v  ^+ p
  10706.   (defun ai_abort (app msg)/ i: k, N6 o) D" s! q/ L
  10707.      (defun *error* (s)
    2 R" V- r! J9 B: A6 p% [/ U
  10708.         (if old_error (setq *error* old_error))
    ' |+ G0 Y+ F9 l. Y! Q: B  M
  10709.         (princ)0 E1 }  a, M4 W; W4 C
  10710.      )0 t7 X# ~* d0 y6 \3 a
  10711.      (if msg! @6 W2 q- w. t! e( x
  10712.        (alert (strcat " Application error: ": s0 |8 ~$ [1 C/ c4 R
  10713.                       app
    ' v1 P: f  c+ |& g) L
  10714.                       " \n\n  "
    # c7 w6 x: c; D5 B; l
  10715.                       msg7 R9 n, S+ S: c" i3 I7 E8 k$ y
  10716.                       "  \n"1 x( q$ i% u+ B; q! ~
  10717.               )
    ) N( U% t8 f, y. s1 v; t
  10718.        )
    ) q6 f# |- A6 g5 M" ~
  10719.      )  j9 B/ A, c! A% f
  10720.      (exit)
    , A; c3 b/ W9 T! c% l
  10721.   )" y1 r* b/ T/ F7 c8 A

  10722.   v0 L9 w' b! w- b& W# ^
  10723. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    % o& m( P& ?9 q/ Z( b
  10724. ;;; and then try to load it.8 i$ k$ _  m& U7 s4 A; _
  10725. ;;;
      F% ]( q! U1 O9 ]
  10726. ;;; If it can't be found or it can't be loaded, then abort the+ v/ q, a) j1 t5 B* f2 b: j# V( u
  10727. ;;; loading of this file immediately, preserving the (autoload)9 E" _7 s( b+ b. z9 W( E. H
  10728. ;;; stub function.
    $ d  ~( x0 V2 F! _  s0 @$ w
  10729. $ c/ x" J+ @6 z
  10730.   (cond
    9 ?6 A! _3 B( M% x! r
  10731.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    & @+ C2 {$ O( S, a% r7 z

  10732. * x: r& M, F2 |) b9 s$ i
  10733.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    ! w; `4 \- M5 E, ^4 p: u' o% H
  10734.         (ai_abort "DDUCSP"
    , ~$ X2 R) u' D; ~# m
  10735.                   (strcat "Can't locate file AI_UTILS.LSP."
    , w6 c  D/ g$ ~6 }5 g( b8 ^: B% i. [1 R
  10736.                           "\n Check support directory."))); J1 U* V/ C" C) d# z. x
  10737. ; w9 {* D7 a% s+ v; r
  10738.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it: I8 _/ x8 T% P: y5 b
  10739.         (ai_abort "DDUCSP" "Can't load file AI_UTILS.LSP")). Y7 H) B# l- [5 B: N  o  }9 p
  10740.   )
    2 ]9 E' @1 {" ^" N8 b' z

  10741. 0 c6 s0 k9 O8 W( x- G
  10742.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    & f8 v2 r6 R* ^* Y6 d( q9 W8 I
  10743.       (ai_abort "DDUCSP" nil)         ; a Nil <msg> supresses4 q* G( q* w/ Q  U
  10744.   )                                    ; ai_abort's alert box dialog.
    2 _9 z& h# G2 x, M

  10745. " S1 {7 Y/ k7 r* ]
  10746. ;;; ==================== end load-time operations ===========================
    5 Y2 C& Z; R3 @2 ^1 f9 {' R

  10747. 9 i( l) t: Q; X
  10748. (defun ai_ucsp_start ( / program)" ?/ x7 P! j/ [6 _5 R( `
  10749.   ;; Get program name7 f2 U! G" K; I) s* n
  10750.   (if (not (setq program (getvar "program")))
    5 i$ E- [: V3 X
  10751.      (setq program "acad"); Q) ]: y: p! v! \% n! }# f% a
  10752.   )
    , y, d9 _& d5 I+ c& P
  10753.   (foreach v0 '("world" "left" "cview" "top" "front" 0 M+ t, c& T4 f0 j5 K- D: Y' a% v
  10754.                 "bottom" "back" "right" "prev")* u; Z$ n$ n- i$ S3 _' Y  Z- [& R7 Y
  10755.     (start_image (strcat "ucsp_" v0))+ m6 T5 T: B; M9 k% v0 K
  10756.     (slide_image' g. N, O0 I/ Z* H4 l7 u) d
  10757.       0 0; |" A  L9 c) M7 @) \/ I
  10758.       (- (dimx_tile (strcat "ucsp_" v0)) 1) (- (dimy_tile (strcat "ucsp_" v0)) 1)& @) p0 @8 l# y% n% K+ a  V
  10759.       (strcat program "(u-" v0 ")")
    ; Z0 A" V  z4 N% B; ?
  10760.     )
    : G( \- h  E4 b! E1 m* e
  10761.     (end_image)
      D5 i: s* D3 D& w1 `2 u
  10762.   )
    ( Y- R3 w* T! m3 Z, k/ ?2 o' h7 }
  10763. )
      O# a; `5 V0 K+ ]: }9 N

  10764. 9 ^: k# o' h) ?
  10765. (defun ai_ucsp_set ()' e. O$ h' g! n" ?& f, x
  10766.   (if ai_ucsp_sv5 e# j9 K' D" Z' n+ X  d
  10767.     (command "_.UCS" "_V")! _+ ?9 R; [  r
  10768.     (if ai_ucsp_prevs: r6 }5 u' d9 Y$ B
  10769.       (command "_.UCS" "_P")
    % g& F* M% c6 t9 b* O6 h
  10770.       (if ai_ucsp_chg
    4 `  B7 v: q# g( V8 @1 V  c
  10771.         (progn
    7 r7 H5 Z" u0 e9 G) V9 f& X
  10772.           (if (/= ai_ucsp_a "*")/ a1 [  u- p9 y8 C- q
  10773.             (setvar "LASTPOINT" (trans (getvar "UCSORG") 0 1))
    , U  l# L: @: w
  10774.           )
    1 b9 k' E" ^5 s# p6 ]! y
  10775.           (if (< ai_ucsp_pick 6)
    4 v6 t% h. v5 w
  10776.             (setq ai_ucsp_set0 "@")1 h9 a$ }/ U! ]$ u0 x
  10777.             (setq ai_ucsp_set0 "*0,0,0" ai_ucsp_a "*")
    ! n8 i8 |% h" u; l; O
  10778.           )  v) I% f) y9 {
  10779.           (cond ((= ai_ucsp_pick 0)8 [5 p* O/ y& g0 T+ p6 [; d) P5 S
  10780.                  (setq ai_ucsp_set1 "0,-1,0"
    1 J" ^8 I5 |; e5 a
  10781.                        ai_ucsp_set2 "0,0,1"% T1 p0 V2 ?3 c  [
  10782.                  )
    : f5 F4 r! Y$ l9 n* I5 w; e2 i" C0 g
  10783.                 )! v3 q2 J- C/ N+ i$ Y- W- q7 i" }
  10784.                 ((= ai_ucsp_pick 2)5 U8 @  q, C: |0 H
  10785.                  (setq ai_ucsp_set1 "1,0,0"8 w6 W1 Y, k: X1 f
  10786.                        ai_ucsp_set2 "0,0,1"
    9 A; N) t; J$ C( B7 \( O% O$ |1 s
  10787.                  )4 ~  k5 Y" c! p  N; |/ b7 Z
  10788.                 )
    5 w4 p  O4 Q# r& K& X
  10789.                 ((= ai_ucsp_pick 3)& b  K" B% K5 @+ E8 m& f
  10790.                  (setq ai_ucsp_set1 "1,0,0". ?' g; x! q; G$ Q3 s; [. v
  10791.                        ai_ucsp_set2 "0,-1,0"4 X6 d9 L; b& ], z
  10792.                  )
    ' U) j& Y' l4 ~$ S6 d4 H+ Y* B( i
  10793.                 ), J4 k! ~0 u# d- R, b9 e  G6 y& x& B
  10794.                 ((= ai_ucsp_pick 4)
    ' U4 K1 a. Y* d3 X6 ]! k# k8 w
  10795.                  (setq ai_ucsp_set1 "-1,0,0"& J9 y! v" B% G! j, B
  10796.                        ai_ucsp_set2 "0,0,1"
    ; A0 {1 m& b# B, j0 v- u4 E
  10797.                  )
    1 V2 P8 w: T2 ^
  10798.                 )
    & W" D" g$ w0 y
  10799.                 ((= ai_ucsp_pick 5)
    . d7 I' T; I+ D3 g
  10800.                  (setq ai_ucsp_set1 "0,1,0"
      F: G: a, W- p
  10801.                        ai_ucsp_set2 "0,0,1"
    0 g" M9 v4 v( J; B( U( [- A6 L/ y
  10802.                  ): H! {; ~- a8 ^* P; [  o- t6 V
  10803.                 )
    0 Z5 {$ `5 P! \' m" ^8 A
  10804.                 (T
    0 [0 Y9 F5 I! ?
  10805.                  (setq ai_ucsp_set1 "1,0,0"$ T* E$ {2 I8 T0 x5 |
  10806.                        ai_ucsp_set2 "0,1,0"
    ! G$ g/ g- I' @, |: ?% d
  10807.                  )
    : ^( E2 U. C6 R5 e
  10808.                 )3 @' C2 Z+ `8 q: e; a9 ]; Z2 _
  10809.           ). b; m: q* q' ^& M  W
  10810.           (command "_.UCS" "_3P" ai_ucsp_set0 & F; X1 s6 o5 m8 t7 |: T
  10811.                    (strcat ai_ucsp_a ai_ucsp_set1)
    - Q2 s' F% g" l% i' O* J& M
  10812.                    (strcat ai_ucsp_a ai_ucsp_set2)
    . T$ H2 _6 B, r8 B, K6 B
  10813.           ) 7 r. U* A! Q: C" U! `
  10814.         )0 w, A+ K  A- X3 Q$ U0 }
  10815.       )4 l8 E+ l' D% b" A! ^- K& e7 e4 m
  10816.     )
    : v4 D9 r' k# o7 W& j: U6 R# y
  10817.   )( [' P2 e3 R$ C. `2 W" m
  10818. )
    5 M0 F, _( [! q8 v$ s8 W/ E, @/ r0 j- z
  10819. ( x. z( \1 a% x: o
  10820. (defun ai_ucsp_p (val currtile)
    8 d6 X7 g# _8 ?4 L7 h( F
  10821.   (mode_tile ai_ucsp_currtile 4)3 {* d# `% S9 F( G
  10822.   (setq ai_ucsp_pick val
      x# Q( B3 S3 V  j
  10823.         ai_ucsp_sv nil" j3 S7 h) X9 ?3 L4 O
  10824.         ai_ucsp_currtile currtile
    % ~* q2 U( W0 a- T
  10825.   )
    , m5 J7 K4 ~) r1 z
  10826.   (if (/= val 1)
    5 V; F! W4 Z% [2 x
  10827.     (setq ai_ucsp_chg T)* h( ^: v& N, B# f  G2 Q" Q. J
  10828.   )9 B, g2 Q- a; K" [
  10829.   (mode_tile ai_ucsp_currtile 4)
    # |7 r) X: v( Q, e7 F
  10830. )* }9 ?+ q+ k; }; w5 T

  10831. 0 p4 F7 a# Q1 t, [/ _
  10832. (defun ai_ucsp_swcs ()4 V  Z3 J) J$ {; P7 w( B; \
  10833.   (mode_tile ai_ucsp_currtile 4)
    ! I; I4 j, A% u( H- ^. i
  10834.   (set_tile "ucsp_a_wcs" "1")
    2 T. M0 y: U0 @- j/ a, d
  10835.   (setq ai_ucsp_pick 6
    % B& H% I) A% z- I2 o: }
  10836.         ai_ucsp_sv nil+ ~$ G$ |9 T* Q; N! c$ Q
  10837.         ai_ucsp_currtile "ucsp_world") Y' F6 j/ }2 S9 k" P
  10838.   )% c( ]% b; o; g1 V/ z* t9 w
  10839.   (if (/= 1 (getvar "WORLDUCS"))
      r9 _% A" O- b# ?* |1 g+ U
  10840.     (setq ai_ucsp_chg T)
      B$ h" l. c9 Y! }0 N3 c5 @' H$ w
  10841.     (setq ai_ucsp_chg nil)
    0 @, T1 |: w' B% J
  10842.   )
    ) i1 w' H! @# p6 e2 l
  10843.   (mode_tile ai_ucsp_currtile 4)% \- F' \, {# \' s4 P
  10844. )
    6 C: q8 G7 }3 p2 N) V, r
  10845.   f  O- `' }) l( W  T% ~) v
  10846. (defun ai_ucsp_cview ()6 i; A3 G' ?. m7 A9 Y) J
  10847.   (mode_tile ai_ucsp_currtile 4)
    7 h4 n# O$ K! H0 H/ W( ]# J
  10848.   (setq ai_ucsp_sv T
    2 J7 o/ W! e8 b8 E, t1 ~
  10849.         ai_ucsp_chg nil) Q2 Z7 T+ u8 c) o& M1 k/ b0 ]
  10850.         ai_ucsp_currtile "ucsp_cview"1 |% x7 }; j4 b; M
  10851.   )
    9 `5 D% ]. Q. S
  10852.   (set_tile "ucsp_a_wcs" "1")
    " U( j* ?& O6 h
  10853.   (mode_tile ai_ucsp_currtile 4)  c9 x% T5 m+ w  h+ f
  10854. )
    1 Q" k7 y# n. t
  10855. / T# b4 l0 t/ j3 a. M. M5 G
  10856. (defun ai_ucsp_rucs (typ)
    + ~$ {0 R2 i9 y; }
  10857.   (setq ai_ucsp_a typ)
    . p- h1 a8 M) V" J8 |
  10858.   (mode_tile ai_ucsp_currtile 2)
    + ]+ C* w0 c. ^5 F7 s
  10859. )
    $ V  j9 j# z1 O5 Y' w4 s# g

  10860. ) }! W) [7 |$ P, E0 e
  10861. (defun ai_ucsp_prev ()* J5 g$ E0 B) X
  10862.   (mode_tile ai_ucsp_currtile 4)
    ) M% ?- W; p/ O, v, A9 D* i3 E' Y
  10863.   (setq ai_ucsp_prevs T
    5 I3 }5 {$ `" U6 q* J5 H
  10864.         ai_ucsp_currtile "ucsp_prev"
      ~+ o$ ]( t2 i. p7 {$ M2 V0 @
  10865.   )
    6 G8 ^" ]0 I' \8 ^: c
  10866.   (mode_tile ai_ucsp_currtile 4)' ?; c' Z; x# O* F0 P2 e* S" @! D
  10867. )
    ! u6 a( V# W" H

  10868. % |! _: }7 @1 G% W% h$ q# X& }
  10869. (defun ai_ucsp_main ( / ai_ucsp_pick ai_ucsp_sv globals)
    8 u  m$ j0 A, m
  10870.   (if (not (new_dialog "dducsp" dcl_id))
    : M* n4 U# E; |5 A) }% }& O( m( E
  10871.     (exit)
    % J5 E5 I/ y7 _  v! x8 ^9 G) V8 b! V5 N
  10872.   )5 ]9 Q, d6 I$ O. k  B  W0 Y4 h

  10873.   O1 i& B5 E" v4 C% \
  10874.   (ai_ucsp_start)- q5 [3 l+ A. w6 Z
  10875.   (setq ai_ucsp_a "@" 7 T) d, ?  K- A6 m6 x
  10876.         ai_ucsp_pick 2+ V# U3 V0 k9 J) c. q
  10877.         ai_ucsp_currtile "ucsp_top"
    1 n/ @+ ^9 ~. l4 o) e* y$ R- ~. I. b
  10878.   ). c% t7 o+ u/ }7 I4 x
  10879.   (if (= 1 (getvar "WORLDUCS"))5 ]8 V! k# L8 U$ ~2 p: }6 N
  10880.     (progn
    1 D7 o/ i3 O9 w. a& r# y" m
  10881.       (set_tile "ucsp_a_wcs" "1")# D. H2 H) g( P* C! J
  10882.       (setq ai_ucsp_currtile "ucsp_world")
    $ z4 |/ R# M0 e& V+ ]( |
  10883.     ). A3 x! ]0 U0 c) i: c( f
  10884.     (set_tile "ucsp_r_ucs" "1")
      ]( l4 E8 |' F; [: g
  10885.   )0 d) p1 i: ]+ j2 K' A* {! t
  10886.   (mode_tile ai_ucsp_currtile 2)5 h. [9 d2 }* h
  10887.   (mode_tile ai_ucsp_currtile 4)& q) W' g% b  R% ?! G
  10888.   (action_tile "ucsp_world" "(ai_ucsp_swcs)")
    % H, r( C& m0 k3 |
  10889.   (action_tile "ucsp_cview" "(ai_ucsp_cview)")" x( P$ G7 D7 ?( w, Z1 R
  10890.   (action_tile "ucsp_left" "(ai_ucsp_p 0 $key)")
    7 C9 j3 V4 K/ P
  10891.   (action_tile "ucsp_top" "(ai_ucsp_p 1 $key)")
    $ h6 _8 j8 g" O) f# I5 @& v4 ]
  10892.   (action_tile "ucsp_front" "(ai_ucsp_p 2 $key)")
    ' |8 Q. m! Y* _
  10893.   (action_tile "ucsp_bottom" "(ai_ucsp_p 3 $key)"), y$ f1 c& m& l$ x+ \7 Z
  10894.   (action_tile "ucsp_back" "(ai_ucsp_p 4 $key)")8 o$ |* H5 d# |; n( \9 w! U9 Q
  10895.   (action_tile "ucsp_right" "(ai_ucsp_p 5 $key)")1 c& P/ M" W' v: _2 O( Z0 W
  10896.   (action_tile "ucsp_prev" "(ai_ucsp_prev)")9 a0 O- M- k; [; U9 f% g. E
  10897.   (action_tile "ucsp_r_ucs" "(ai_ucsp_rucs \"@\")")
      O* q1 Q% l1 ]' W
  10898.   (action_tile "ucsp_a_wcs" "(ai_ucsp_rucs \"*\")")9 U+ _( B$ \( i8 t3 y2 e$ h( `6 i
  10899.   (action_tile "accept" "(done_dialog 1)")6 |8 K1 v' [6 G) U7 o9 ?& A7 x
  10900.   (action_tile "cancel" "(done_dialog 0)")
    2 J' Z5 f4 k6 ~3 Y$ W1 H
  10901.   (action_tile "help" "(help \"\" \"DDUCSP\")")
    ( r: i* q* d/ U# O
  10902.   (if (= (start_dialog) 1)8 n, D: p6 N- k1 y, u
  10903.     (ai_ucsp_set)2 e7 {' c8 H* G2 z5 B6 L' y
  10904.   )" S/ p, u  F# g* q
  10905. ); R1 q  s. G( w6 K" H

  10906. ! K0 r+ X6 z. L" j5 L  O
  10907. (defun c:UUS ( / app dcl_id old_cmd old_osmode ai_ucsp_prevs + e+ b' b% p+ c4 J" X8 b  T
  10908.                     ai_ucsp_sw undo_init)* I# ?+ J- [" e
  10909. 5 Y- x$ z3 x6 Y7 ~% H2 @
  10910.   ;; Set up error function.2 B; n  r9 y  q/ `) H; W7 D
  10911.   (setq old_cmd (getvar "CMDECHO")    ; save current setting of cmdecho1 V: K& y% E& u
  10912.         old_error  *error*            ; save current error function8 i3 R/ @0 \9 S0 X
  10913.         *error* ai_error              ; new error function
    3 `; l+ w0 |# x, O9 `7 Z' m
  10914.         old_osmode (getvar "OSMODE")  ; disable OSNAP for duration: ]( L! G3 q% A" X
  10915.   )) P7 c4 B, ]$ |% S: O& t+ F5 r7 a1 W
  10916. 8 s4 R4 C; d& `4 _
  10917.   (setvar "CMDECHO" 0)" e& @' ?( S+ q. g! i$ E% W
  10918. ' F6 D8 e1 E( q) U
  10919.   (cond$ M& Z: l2 v  A4 F
  10920.      (  (not (ai_notrans)))                     ; transparent not OK
    ) x) b: ?% F( }0 `% E
  10921.      (  (not (ai_acadapp)))                     ; ACADAPP.EXP xloaded?
    : \9 |6 d8 T, {, u5 d
  10922.      (  (not (setq dcl_id (ai_dcl "dducsp"))))  ; is .DCL file loaded?
    & N1 Y4 U3 H4 |/ ?; V7 G
  10923.      (T (ai_undo_push)0 ]; f" F) r4 {" I2 K
  10924.         (setvar "OSMODE" 0)2 B9 k& p0 U4 c/ l, I3 _
  10925.         (ai_ucsp_main)
    & ]- Q+ l; g6 x$ }4 g, U, S6 t
  10926.         (setvar "OSMODE" old_osmode)5 H9 B0 c) `8 U) @
  10927.         (ai_undo_pop). c& v4 F7 e! s
  10928.      )& e1 E. ~9 i4 `1 l( f9 w, t
  10929.   )- ~% S( b" [4 G- r3 L
  10930. 7 e$ w9 ~$ V; n. }! [
  10931.   (setq *error* old_error) ( W0 K, r' w1 J
  10932.   (setvar "cmdecho" old_cmd)
    % k. j7 {& b, ]% B( ~
  10933. & h6 M+ H! _0 k4 c3 o3 {) ~
  10934.   (princ)4 ?! S* e3 O3 p+ Q0 y9 P
  10935. )2 F8 r+ O  N( |

  10936. ' n; |, \; v9 S
  10937. (princ "  DDUCSP loaded.  ")
    + i4 ~( \; A7 N& k3 x8 x7 H
  10938. (princ)& ~! O% [4 s9 B5 W" f+ ^

  10939. ; I7 w, t6 h# P$ s' W. [
  10940. ;;;???;;;---------------------------------------------------------------------------------------
    " g  R2 a* F, D/ Q

  10941. 4 P* Y% q8 j6 F
  10942. ;;;----------------------------------------------------------------------------$ n% k" b( a/ s
  10943. ;;;
    / `* a6 C5 f0 ^* q6 n5 d7 [5 Q, L& o
  10944. ;;;    EXCHPROP.LSP    . a4 T# K' D! v5 \, l8 {
  10945. ;;;    Polyline and text modification capabilities added by
      V8 Z6 m0 g; _2 a* X) e
  10946. ;;;    Randy Kintzley  5 N% G. g3 K& H  m" M' B8 d& p
  10947. ;;;
    ! E: C/ U0 Q3 ?
  10948. ;;;    Copyright (C) 1997 by Autodesk, Inc.
      t6 b4 D" f% P1 }' O; V
  10949. ;;;
    ' q" W7 B3 ^  l2 e' N( J% _
  10950. ;;;    Permission to use, copy, modify, and distribute this software
    5 B% s% k: V& T, A( x  S
  10951. ;;;    for any purpose and without fee is hereby granted, provided
    & j, a6 Y* K5 H1 M! N/ A+ c8 G4 y
  10952. ;;;    that the above copyright notice appears in all copies and0 V( p, b+ Q5 n& a1 C& C
  10953. ;;;    that both that copyright notice and the limited warranty and' h) K* T+ Q! a
  10954. ;;;    restricted rights notice below appear in all supporting
    + n6 O% Y9 t( Z$ N: \7 _
  10955. ;;;    documentation.
    $ ?; k5 ]* C5 ^
  10956. ;;;: D; s' @7 S( j/ \  O
  10957. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.' e$ Q' w/ X( v+ C! B( T$ N* h, h
  10958. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF2 |6 T- j) Z' ^: {/ y
  10959. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC." J8 |& n  L( A+ H
  10960. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE4 X) O! J6 g& B2 u, a
  10961. ;;;    UNINTERRUPTED OR ERROR FREE.
    9 X2 w& P( e# p' @  a* R+ c8 @
  10962. ;;;
    $ u) w0 y& S& K8 h
  10963. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to- |. U$ r- f& C4 S
  10964. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer4 d1 A! X; ]8 f5 ~, C+ v4 {! y5 w; q
  10965. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    0 {8 E! h8 O7 Q6 D6 i+ g% K) f
  10966. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    ( \# P, g3 u  z+ [, q
  10967. ;;;
    / c5 c* J; g) T3 n. E
  10968. ;;;.
    1 t7 p& ?4 K+ R( Z  q0 X, I9 {
  10969. ;;;    28 February 1997
    9 B& z, h) n. V5 b
  10970. ;;;
    / z) f1 K! p$ S
  10971. ;;;
    6 C7 Y9 p$ C; H8 r8 V+ d
  10972. ;;;----------------------------------------------------------------------------
    8 D/ f' h! t& Z' v7 B; ~$ B7 u
  10973. ;;;   DESCRIPTION: H$ Q6 ~: h: Q4 l
  10974. ;;;----------------------------------------------------------------------------
    ) X; C3 k$ d1 o" I
  10975. ;;;   C:EXCHPROP is an extended or enhanced version of ddchprop. This  
    , o6 R, t1 }) o' Y  V2 w) ?
  10976. ;;;   command gives the user the abilitie to change several characteristics
    % D  u4 |  g5 z# Z0 D
  10977. ;;;   of selected polyline and text objects. 9 M6 \& k8 G' |( I" B) @/ ^$ h
  10978. ;;;       The style and height of selectected text objects can be modified 0 M9 a1 H, p. j& q1 B
  10979. ;;;   (including text, mtext and attribute definitions) as well as, width and $ p3 _$ M6 t$ _* d2 A
  10980. ;;;   elevation characteristics of selected polylines (includes lightweight and
    7 q. [% x7 c$ B
  10981. ;;;   traditional polylines.)2 i2 m; H% X* y  F- I5 H) e
  10982. ;;;----------------------------------------------------------------------------
    0 b! e- Y  R- u. T* P" g
  10983. ;;;----------------------------------------------------------------------------
    4 r1 Y* {2 \' E0 z. f1 [8 A1 `
  10984. ;;;   Prefixes in command and keyword strings:
    1 ~# ]3 }- I. ~& b; M- ^
  10985. ;;;      "."  specifies the built-in AutoCAD command in case it has been( L/ S9 ~5 r* w% }
  10986. ;;;           redefined.' r* c& @- A. v3 Y
  10987. ;;;      "_"  denotes an AutoCAD command or keyword in the native language
    + a& ]# B" @5 e! M( @0 W( @: W
  10988. ;;;           version, English.
    ! ]* L1 ?/ K: C7 P: l* }
  10989. ;;;----------------------------------------------------------------------------
    0 [2 Y) B3 C4 f& X
  10990. ;;;
    2 x+ G( T$ B, r$ }
  10991. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" d: O) I: _* s# f5 ~+ ?4 E
  10992. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    : c  Y; M; n" P3 r2 z' s
  10993. ;Functions created as result of loading file: exchprop.lsp
      h) G: g% y9 ]) q  V6 }
  10994. ; DDCHPROP2( I6 S* p7 Y$ m% \2 g) q. z) D5 K- Q
  10995. ; DDCHPROP2_INIT
    6 H6 z1 p$ P& `( h% h& P& h* y3 v
  10996. ; DDCHPROP2_SELECT) ~+ @% G1 p; F: ?" {
  10997. ;7 ]! H  W" j7 z3 W! ]- [
  10998. ;Variables created as result of loading file: exchprop.lsp5 T$ k. ?0 y$ R1 n# ]: w, C$ G
  10999. ; OLD_ALLOC
    / t! z+ e( q2 m4 {1 g' k
  11000. ;) ]% g, f/ K0 v& A! }! p2 Q- c' W. ~
  11001. ;Functions created as a result of executing the commands in: exchprop.lsp( @1 G/ p# ^' H8 I) h/ z# o& l
  11002. ;
    ) b4 n4 ?$ m4 [$ c" l+ o3 \
  11003. ;Variables created as a result of executing the commands in: exchprop.lsp. @6 f1 F6 e7 U0 b; h! J
  11004. ; AI_SELTYPE4 S4 `7 M9 M. J2 Q  s3 S
  11005. ; BONUS_ALIVE
    6 c* ]& _, f# I1 O% b% V
  11006. ; BONUS_OLD_ERROR  n$ g* n$ i) T+ k) A: }
  11007. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    . t5 M! R+ b) L) _8 {: i
  11008. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ) L  [! x6 e) s1 i! J, v$ R

  11009. # F4 w  c+ V8 a+ p
  11010. ;;;! o3 P/ J* ?# b1 v
  11011. ;;; Avoid (gc)s on load to improve load time.: k7 k# h. z/ S  R" c
  11012. ;;;
    0 A& K/ E& H/ X  H& X5 r+ j
  11013. (defun do_alloc (/ old_allod new_alloc)% O* M/ o4 |& k5 w% H: ?% M3 w
  11014.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))5 r& q7 t% _5 `. Z& |
  11015.   (expand (1+ (/ 4750 new_alloc)))
    # w& s" @( m2 J- F9 `
  11016.   (alloc old_alloc)( j! |8 ~4 K0 F
  11017. );defun1 T2 `! N0 T* W$ r& e( a& s

  11018. ! t6 H: p4 N8 v& Q6 ~# d7 b
  11019. ;runs at load time - rk
    . x$ t0 r0 \5 X. J; g8 w
  11020. (do_alloc)
    . l& @2 t1 B; L8 x8 W7 G* Z1 e
  11021. (setq do_alloc nil)
    # f: j% e' @& Y# U; L
  11022. ;;;5 G% n6 I8 [, S- s! l
  11023. ;;; ===========================================================================
    ; ~6 b& Q, }% C6 I- `& ^
  11024. ;;; ===================== load-time error checking ============================
    7 R" g# n+ q1 A; Z% n5 Z; M6 T9 u& J
  11025. ;;;3 C2 J2 f' s+ a2 _" U% k. }- n$ j% \

  11026. ) E- _1 k0 l% ]% v/ u
  11027.   (defun ai_abort (app msg)
    7 `8 p! _8 g' p3 O. ], O" G) n
  11028.      (defun *error* (s)  N5 O' c- l. Z  U$ E* n, Q
  11029.       (if old_error (setq *error* old_error))# Q; m( E9 N# L& G2 ~
  11030.       (princ)
    8 A* l" W4 D+ i# _
  11031.      );defun
    ) z+ ~7 h- H5 e0 e! ^+ v' Z
  11032.      (if msg
    7 i" p6 N9 E: W1 M6 |
  11033.        (alert (strcat " Application error: "
    % @: i+ ], P- l7 h3 U
  11034.                       app
    # [2 a1 }: U: ^" F
  11035.                       " \n\n  "
    ( y8 M# U& Z' @# `! A9 f5 Y
  11036.                       msg& j! O5 z* D9 r5 U
  11037.                       "  \n"4 ~  p  B" ]" }; l0 h
  11038.               )
    6 Z: P* D, L& Y2 X  g( J
  11039.        );alert; L1 x; ]. D+ a9 J, R2 j! u
  11040.      );if
    ! H3 s* U& r4 `/ |4 d' i
  11041.      ;(*error* msg)# c& a# e& r0 m' V( u
  11042.      (exit)
    % z6 L1 n1 O4 {5 B- v% b. v3 g
  11043.   );defun ai_abort) ^9 \' l& ]' [0 s1 b7 H' r1 w' s
  11044. - T4 ~. `6 o7 }3 T
  11045. ;runs at load time - rk
    ) a1 F4 C3 _6 p9 F, G5 |$ L: e  a
  11046. ;(if (and *error*      ;added the if wrapper around this - rk.
    ) I: G) N2 g4 `* g$ _5 ?
  11047. ;         (not old_error)       ) L7 F% Y9 v" n3 T0 X( O
  11048. ;    );and 7 M  B+ `: s6 \3 N! G$ I
  11049. ;    (setq old_error *error*);setq
    - y: X# V; o4 ]/ V5 _
  11050. ;);if
    ; M4 ~* h6 G0 S; V! Y1 ~3 ?' t8 W: o5 t

  11051. " D% Q2 L; e4 r+ V! d0 `% O

  11052. $ h8 h4 w4 E  H( h! s) [
  11053. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,! O/ Y5 D( Q# b; P' f3 U
  11054. ;;; and then try to load it.  ~7 z+ j. m% l* d, ~4 O
  11055. ;;;4 C9 v% W7 S! C* n0 Q
  11056. ;;; If it can't be found or it can't be loaded, then abort the  A0 |+ B0 d. J( D8 c5 r
  11057. ;;; loading of this file immediately, preserving the (autoload)
    $ d( J2 o6 h2 H9 H4 ^# _
  11058. ;;; stub function.. n9 R: f7 A& R" F. s  d+ i* g
  11059. 9 P! N# W4 W4 t7 ?6 u2 X+ \
  11060. ;runs at load time - rk.0 h3 f; t! t/ x- K# R
  11061. (cond
    0 s1 y7 K7 @4 A. T- W& v  T
  11062. (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    * O3 F# ?$ Z% ~; \' i/ x8 c
  11063. (  (not (findfile "ai_utils.lsp"))                     ; find it! n# [$ w9 V# ?4 P; B' l
  11064.     (ai_abort "EXCHPROP"7 `  a, r+ y; `# Z: G6 m
  11065.               (strcat "Can't locate file AI_UTILS.LSP."
    # g; e) O$ F8 ]6 T% T7 p6 G; _+ Z
  11066.                       "\n Check support directory.")
    ; q- U, P# t& t2 P$ ~; G
  11067.     );ai_abort% t" N, b4 S- o$ j+ r
  11068. )- ~$ S+ P" Z1 Q+ e& [1 @) I
  11069. (  (eq "failed" (load "ai_utils" "failed"))            ; load it) Y5 _  I. @3 t! u# w# P- n, u
  11070.     (ai_abort "EXCHPROP" "Can't load file AI_UTILS.LSP")' g* y6 l( Z3 D9 m7 X4 K
  11071. )7 D( @) x2 [! M9 t" w
  11072. );cond close" @  D+ P8 a* A4 \; a) }) |9 D

  11073. 8 Z3 M7 `) _/ s' t1 \4 d7 h. k
  11074. (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP* t  i1 g5 U9 C; `* \& J: E
  11075.     (ai_abort "EXCHPROP" nil)       ; a Nil <msg> supresses
    # l4 P  o. h; m/ ~8 V7 D
  11076. );if                                 ; ai_abort's alert box dialog.2 U2 e/ s, H  x' w! V0 U/ r8 S

  11077. * x% k6 C% \2 ~" P5 I( q8 ?
  11078. ;;; ==================== end load-time operations ===========================
    1 g, s- u3 {. w8 E
  11079. 3 H% ]9 L2 F. ^( t8 ]3 D3 {8 I$ d" ]
  11080. ;;; Initialize program subroutines and variables.' S' H7 f) M8 z; [" C
  11081. / E" v" U" z* R- q8 c
  11082. (defun ddchprop2_init()
    2 C3 y- d4 `# v2 a) e. j

  11083. - t7 ~, n* q' G

  11084. ! l6 g: r& B# s# t& @' l: E% J
  11085. ' X$ f& W& l) u- u7 K. H  o" B
  11086.   ;;
    5 q9 w. ~& f( g! B3 F( V
  11087.   ;; Define buttons and set values in CHPROP dialogue box
    4 Z, f, \5 C$ u) B6 V: m8 v
  11088.   ;;# C7 L8 u' I( b/ b
  11089.   (defun call_chp2 (/ cmdact p1 p2)
    ( ]+ @3 p9 w9 p4 }3 K) e

  11090. ; Z6 K. ]" w; |7 [! d* d; E
  11091.     (if (not (new_dialog "ch_prop" dcl_id))
    * H, ^6 e2 j3 `$ L7 X, X
  11092.         (exit)0 W* m+ v9 n; e8 a- a
  11093.     )
    4 Q3 r% U& k, q1 m  u
  11094. * q2 i# r/ D1 |. a/ n8 ]0 V: e- P% O
  11095.     (set_tile "error" "")
    # C1 |  q& k5 L( h. u
  11096.     ;; Set initial dialogue tile values
    9 M6 f2 I+ }7 ]8 c% c" t
  11097.     (set_col_tile), m9 h* F5 i2 z4 s0 u3 i
  11098.     (set_tile "t_layer" elayer), K/ K: Z" M+ R4 b
  11099. - n% f+ B$ A& p; B; }. s( F
  11100.     (cond9 P% H  `; C1 J  B9 v
  11101.       ((= lt-idx nil)
    " m0 R1 N# z8 k2 C3 v3 C! }
  11102.         (set_tile "t_ltype" "Varies")
    % O/ N$ O5 o( F! d' Z
  11103.       )
    $ U3 K: l# a& x0 z5 n
  11104.       ((= lt-idx 0) ; set tile "By layer & layer linetype"
    8 T5 ^. l- @$ o5 A0 {2 j+ T* H
  11105.         (set_tile "t_ltype" (bylayer_lt))8 U. a. W5 k, L2 J% c0 @: p" I
  11106.       ). q( }# [9 e4 ?6 V6 O
  11107.       (T
    0 {9 K. U  T6 ~$ C0 |1 A
  11108.         (set_tile "t_ltype" (nth lt-idx ltnmlst))
    ( X6 {; T. S, T( D; D. i/ W
  11109.       )
    ) w  _3 E/ T8 ~8 I) A) W
  11110.     )
    + @$ `% Z1 Z2 x7 j4 k

  11111. " L3 Z1 t! v* a% A
  11112.     (if (or (= ethickness nil)
    ' C* B! L* O/ B5 o3 I7 x
  11113.             (= ethickness ""): i( ~3 ?0 {3 F4 z- f" K
  11114.             (= ethickness "Varies")
    ' Q  @& u; o& i+ f* W
  11115.         );or
    ) a! \6 N9 h( D/ H4 R
  11116.         (set_tile "eb_thickness" "")" C' E0 L/ F7 {( B5 W3 G6 p
  11117.         (set_tile "eb_thickness" (ai_rtos ethickness))
    1 z1 K6 O6 A: b: K, l
  11118.     );if7 ^5 [% j, O/ U1 V9 j# o& i- V
  11119.     (if (or (= eltscale nil)7 X) ]6 ~+ B  ^  ]5 f. p' F' B
  11120.             (= eltscale "")9 S  K! Z' A4 p, ?* s) E8 l
  11121.             (= eltscale "Varies")
    2 ^% b9 p6 w4 S( i3 ?

  11122. # x8 _3 z# k: L6 _+ G
  11123.         )3 K( \( p5 S6 `3 F
  11124.         (set_tile "eb_ltscale" "")4 q# U4 \6 J8 J! l/ f) i
  11125.         (set_tile "eb_ltscale" (ai_rtos eltscale))
    * e- z& Q* S5 l0 m1 J
  11126.     )
    ! U4 P/ l9 H1 E6 m
  11127.     (if- a4 y: a4 B5 V
  11128.       (numberp ewidth)7 @" `+ l  b: Q6 Q
  11129.       (set_tile "poly_wid" (ai_rtos ewidth))! G# @; k6 h& d# d$ N2 F
  11130.       (set_tile "poly_wid" ewidth)0 j% x" S9 R  g  L+ p( U% B* ~
  11131.     )
    , ^2 u5 r6 ?4 G1 O' H
  11132.     (if
    7 k; z* x& [4 N7 J  B: B
  11133.       (numberp eelevation)
    - F2 ^2 l$ M- ~3 }; V
  11134.       (set_tile "poly_elev" (ai_rtos eelevation))
    1 J* O3 \, m& O5 {' f3 m
  11135.       (set_tile "poly_elev" eelevation)
    ! E8 H# N5 O2 t5 }) c
  11136.     )
    6 v$ e) L8 ], ~
  11137.     (if( _- h' G2 T$ b9 @
  11138.       (numberp eheight)0 l6 j; y* u! M2 m( }2 E0 _4 q" C
  11139.       (set_tile "text_hgt" (ai_rtos eheight))9 t4 k' ~) }' U8 ]6 x
  11140.       (set_tile "text_hgt" eheight)% Q! l3 X- ^  `( Q
  11141.     )
    0 ]6 p5 I0 e. E
  11142.     (if (not estyle)
    ; r. S; ~0 L8 Q; y
  11143.         (setq estyle "")) z) a  ?3 U5 r2 ^0 e0 d
  11144.     );if 5 }' ~+ c7 p6 c
  11145.     (setq hair_style_list (tnlist '("style" 16)));setq4 E8 Z" Y3 j) ]( n* k( }$ d5 Y
  11146.     (if (not (member estyle hair_style_list))
    4 H; J2 \: O* g* a
  11147.         (setq hair_style_list (append hair_style_list (list estyle)));setq
    ! |% V9 m! z: `( ]4 b% P
  11148.     );if ) G/ Z; A2 I. H$ r8 |; f) B

  11149. % T: X; {" Y% G+ E0 Y5 H
  11150.     (setq hair_style_list (acad_strlsort hair_style_list));setq5 O; o5 e( S1 S- [8 G
  11151.     (mpoplst "text_style" hair_style_list)
      C2 l) i) f( ]& |
  11152.     (set_tile "text_style" + b4 ^2 }4 f: X
  11153.               (itoa (position estyle hair_style_list))
    + K* s  A/ B. D
  11154.     );set_tile $ t0 d  q& j* Y' o5 X! [

  11155. ( x; `" P& @0 z0 a% s1 s$ ]  P
  11156.     ;; Disable tiles if need be...  ;@RK
    1 }( s; x7 }) P4 O3 i: z, {6 W
  11157.     (setq a 0)5 y! F  T# i& O9 R" f2 D; a0 e, a
  11158.     (while ( < a  (sslength ss))! A5 r/ q2 i4 o3 @3 e$ P
  11159.       (setq which_tiles" z- Y8 f, A  Q8 e" o7 X# Y) c
  11160.             (ai_common_state (cdr (assoc '0 (entget (ssname ss a))))))% B' z+ z- Y* a' S  Y: i  }
  11161.    
    + C0 D# n# w* q6 o. x! Q  w
  11162.       ;; If all fields are enabled, don't bother checking anymore.( [2 S& q& _6 S, q6 `: e
  11163.       (if (/= which_tiles (logior 1 2 4 8 16))5 \/ w4 F. y+ Y* c
  11164.         (setq a (1+ a))
    . d9 q9 X' ^+ t# ]7 D, A
  11165.         (setq a (sslength ss))
    + ~6 K4 d" ?9 `* B7 `- [6 F
  11166.       )( |0 }) n5 ?9 t8 i/ K; `/ ?' H+ }* J
  11167.     )
    & a4 p  L5 j; s$ I
  11168.     ;; Layer Button and Text Field1 h2 W( ^# J$ w( O
  11169. " f; n0 I( v; U
  11170.     (if (/= 1 (logand 1 which_tiles))% I# M- R+ h% N/ Q& w3 D
  11171.       (progn. r7 d* y0 X# a9 a
  11172.         (mode_tile "t_layer" 1)$ x  o4 G* F3 \+ `
  11173.         (mode_tile "b_name" 1)
    " g+ a/ E; d! ?3 B1 y
  11174.       )
    / Z& n2 f+ h7 o' e2 a( \4 v
  11175.     )
    & ^* e$ G0 y7 I
  11176. , b5 t7 N* z9 I( ]) L
  11177.     ;; Color Button and Text Field
    6 ?3 X: a( _  X$ z0 \- N, I
  11178.     (if (/= 2 (logand 2 which_tiles)), m; W& f! b( U- P" O% q) n) \' k8 q
  11179.       (progn
    # ~6 K( |$ q( y- Y9 F7 l0 W
  11180.         (mode_tile "t_color" 1)9 A+ [& p: U8 |) y- u# ?( ?  h7 K% b
  11181.         (mode_tile "b_color" 1)* z+ z. y. C. g6 n  d) A, H& L8 q
  11182.         (mode_tile "show_image" 1)
    7 c0 O& u0 T* T6 V* J
  11183.       )
    0 _# Y7 b% P9 k+ P6 c2 @# K
  11184.     )" ]. O4 ?+ U9 A' K
  11185.     ;; Linetype Button and Text Field3 Q" o8 E" T' C
  11186.     (if (/= 4 (logand 4 which_tiles))1 p9 ]7 O. G  K. m+ l# G9 `9 g
  11187.       (progn: v7 {/ N/ @' ]" C3 Y  I  h, I  G
  11188.         (mode_tile "t_ltype" 1)' t0 }) d4 b' k0 B* j
  11189.         (mode_tile "b_line" 1)2 j1 m, @7 _; u6 o  ?) f
  11190.       )! R3 F1 q9 Z; j4 P( Y# ]
  11191.     )
    ; e+ f5 u' }8 V3 K1 |& g
  11192.     ;; Linetype Scale Edit Field5 g1 V% T- |* ~; _' Y7 i( c% R9 R
  11193.     (if (/= 8 (logand 8 which_tiles))
    ' n3 U) n- j0 ?0 g4 A* L. A& ?
  11194.       (progn% n% T3 V" h- c% h+ D; T' a
  11195.         (mode_tile "eb_ltscale" 1). \4 ]6 m% m4 v) C4 ^1 c
  11196.       )! b$ U$ y0 P+ ~2 y# P: N
  11197.     )" B0 J; N! S  T4 _- I7 D
  11198.     ;; Thickness Edit Field.
    ! W: D1 b6 n2 @0 n8 P
  11199.     (if (/= 16 (logand 16 which_tiles))# U. ]2 `+ Y# l& q% h" v# ~2 P- O
  11200.       (progn4 @) A; D4 ~, S* v( K: V
  11201.         (mode_tile "eb_thickness" 1)9 B8 f! s. z& o9 \* `4 ^
  11202.       )
    ) Y# q; l- G5 o
  11203.     )  V7 B* e* e" ~5 B& R
  11204. 8 x9 S  Q6 O- c$ b2 ~8 c, {$ `
  11205.     ;; Polyline box and tiles          @rk 10:05 AM 1/30/97
    * w' |3 N, N9 P( N9 z
  11206.     (if (not (= 2 (logand 2 eflag)))( X+ ~% Y" d2 W0 g& \
  11207.         (progn: g0 ^- T* H! k
  11208.          (mode_tile "text_hgt" 1)6 R8 V% \, b4 `1 }5 Z+ p( ^
  11209.          (mode_tile "text_style" 1)) H  @! x9 c2 q) R
  11210.         );progn. A3 s5 R2 z# r) C& X! g0 p+ j
  11211.     );if* Q% Z) M# X7 ?; g
  11212.     (if (not (= 1 (logand 1 eflag)))
      d: l, i5 X& T$ p8 D& x$ w
  11213.         (progn - q% G$ n4 @# X( L0 a9 o2 t
  11214.          (mode_tile "poly_wid" 1)
    : j3 @+ a% z' O' o
  11215.          (mode_tile "poly_elev" 1)
    # A% M# w' B0 Q* L# g
  11216.         );progn then disable polyline fields
    , u9 a, a4 i* `! E( R* m3 M& y
  11217.     );if1 e# q2 Y& c- |2 t- d6 [
  11218. : _2 t& d8 F$ `8 j$ o# O
  11219.     ;; Define action for tiles
    ( K: x! `. s" O
  11220.     (action_tile "b_color" "(setq ecolor (getcolor))")
      n. w1 i) Y& [! Q: j
  11221.     (action_tile "show_image" "(setq ecolor (getcolor))")
    - M. Z7 D3 s0 }$ }8 C+ ~& s2 s
  11222.     (action_tile "b_name" "(setq elayer (getlayer))")
    5 x0 P6 h$ Q. y( C, I* d5 o
  11223.     (action_tile "b_line" "(setq eltype (getltype))")3 H; e1 {9 V6 w& S
  11224.     (action_tile "eb_ltscale"  "(getscale $value)")* G& J$ F/ f& \7 ?( c7 j
  11225.     (action_tile "eb_thickness"  "(getthickness $value)")" }  s: A, u9 ?
  11226.     (action_tile "poly_wid" "(getwidth $value)")
    + ^; t. d; |7 g/ q
  11227.     (action_tile "poly_elev" "(getelevation $value)")" X, ^8 r; d( H" U( m" k( B4 C
  11228.     (action_tile "text_hgt" "(getheight $value)")1 d3 y3 B2 x) W, s, d
  11229.     (action_tile "text_style" "(getstyle $value hair_style_list)") " ~% l! E5 b% j7 q( ^2 B
  11230.     (action_tile "help" "(help \"AC_BONUS.HLP\" \"EXCHPROP\")")8 l$ [" P" c# u* o! K2 j0 L- C
  11231.     (action_tile "accept" "(test-main-ok)"). M# ?1 h: U5 I; ]
  11232. * y' B7 {9 N* w# \2 }# o
  11233.     (if (= (start_dialog) 1)
    & X1 P8 x: S5 U& ~
  11234.       (progn( |! M/ S6 l4 i8 Q
  11235.         ; Update special properties for polyline and text selection-sets.
    1 l5 ?, u: [4 T* M$ _  @
  11236.         ' @3 j5 S' q4 r& U+ j
  11237.         (if (and (= 1 (logand 1 eflag))   ; polylines rk chprop' F% M: u) {! c$ u+ w4 D& e: X
  11238.                  (or ewidth
      w! m! J4 H+ \, R
  11239.                      eelevation, c% D8 Z' _/ d3 q
  11240.                  );or5 P& n  L1 J' ^- n, r: v
  11241.             );and2 o) t* x! B2 ]( s
  11242.             (progn/ g8 }# `/ u2 [" l
  11243.              (setq  ss-index 0
    8 Z8 G) F$ T  ^6 r, Y
  11244.                    ss-length (sslength poly_ss)
    ; k: n" F! n" Z7 L) q0 M  @
  11245.              );setq
    + \1 x8 @# F' M( b% h
  11246.              (while (< ss-index ss-length)9 u' ]3 n0 I& p0 W, g
  11247.                (setq ename (ssname poly_ss ss-index)
    4 ?$ |$ `4 Q$ F
  11248.                      elist (entget ename)" ~% ~: @1 H" S
  11249.                );setq  C8 H3 N* v# t5 m$ V
  11250.                (ucs_2_ent (cdr (assoc 210 elist)));this function lives in ac_bonus.lsp5 C' T0 s7 g  e+ s- w8 o
  11251.                (if ewidth
    2 B' f0 {1 d1 n+ G* `* |; }2 @
  11252.                    (command "_.pedit" ename "_W" ewidth "_x"): S2 n2 ?4 {) ^
  11253.                );if 9 S4 A( g) @. p$ y
  11254.                (if eelevation % [1 i+ U  a9 z
  11255.                    (progn6 w( T. Y$ d/ B/ l) t
  11256.                     (setq p2 (list 0.0 0.0 eelevation));setq
    & |: w: I* Y  V! |0 ^! j$ ~
  11257.                     (if (equal (cdr (assoc 0 elist)) "POLYLINE")
    2 Y: r8 X8 @) z+ @! ?9 U
  11258.                         (setq p1 (list 0.0 0.0
    2 {+ J5 u+ t( S, h9 P4 f+ U9 X
  11259.                                        (caddr (cdr (assoc 10 elist)))6 k2 s9 {. ?  K
  11260.                                  );list
    ; H, y3 A  d2 x8 v& ]8 q
  11261.                         );setq5 w8 A4 s0 v! w% E& G& Y# i
  11262.                         (progn
    4 T3 ~( m7 p1 F1 z1 ^
  11263.                          (if (assoc 38 elist)
    3 |; p! r% ], }# {( X: C
  11264.                              (setq p1 (list 0.0 0.06 W% U9 K( B6 L9 L* a$ ^
  11265.                                             (cdr (assoc 38 elist))
    5 K1 v/ j+ q3 ]/ r9 O' @5 o
  11266.                                       );list
    ! L. G+ w7 W' \( [7 M- i$ j. u* r4 }
  11267.                              );setq
    - {4 V3 n) p6 {8 {% g! |' y
  11268.                              (setq p1 '(0.0 0.0 0.0))% g1 W, ]# j: [! H, @# n6 I
  11269.                          );if
    ( x% A9 U0 x! Y' |- ~+ E
  11270.                         );progn ) K) L: W& ?) k
  11271.                     );if( o( T; U+ h8 C0 e2 P6 Q
  11272.                     (command "_.move" ename "" p1 p2)
    ' l2 b! j; h5 R) D4 p1 a
  11273.                    );progn then change the elevation of the polyline8 f' b# Q7 L& I+ u1 a% \+ M  @  s
  11274.                );if0 f2 [+ ?# j4 m
  11275.                (command "_.ucs" "_p")
    + u7 {* L* u5 K" G+ l1 i
  11276.                (setq ss-index (1+ ss-index))5 S' S5 n. c- N9 }& b/ q1 X: i! x
  11277.              );while: J% D% L7 ^" q% t% @$ k
  11278.            );progn then polylines are in the selset
    5 o4 l! a& T, P. r" R+ O
  11279.          );if
    3 c$ r2 O. ]# p) P2 I0 b! |# C
  11280.          (if (and (= 2 (logand 2 eflag))     ; text7 W. c! K$ G7 b
  11281.                   (or eheight 1 j! t1 K' j3 f* F2 D
  11282.                       estyle) X4 y3 B, [8 {  R, g, w
  11283.                   );or
      X6 F. o7 X% r# d9 ?0 {
  11284.              );and$ X: X2 p% C4 M  Y8 y" r2 ~  g
  11285.              (progn  p$ A! H; h; e  N  ]
  11286.               (setq ss-index 0 ss-length (sslength txt_ss))" P" u# T5 O9 g; U2 Z5 b2 c
  11287.               (while( l: k  {% P$ ^& |
  11288.                 (< ss-index ss-length): K; P3 h1 D$ e8 v* Z
  11289.                 (setq elist (entget (setq ename (ssname txt_ss ss-index))))
    7 ^5 l2 f7 P7 r* x
  11290.                 (if (numberp eheight)) ?. z% i/ a6 S
  11291.                     (setq elist (subst (cons 40 eheight); s( K5 M0 ?( G  f1 p/ c; n
  11292.                                        (assoc 40 elist)$ R6 I2 ]" g" W$ d% X1 o
  11293.                                        elist
    5 z; r! M6 U' f$ a. L$ C
  11294.                                 );subst$ c1 W. ], _5 l) d6 B
  11295.                     );setq7 B. y1 M+ G* U8 S0 m
  11296.                 );if
    * n: }8 S# X$ ~; e0 c
  11297.                 (if (and estyle ;(not (equal estyle "")); F0 x! ^- |: z% b- M- C
  11298.                          (not (equal estyle (cdr (assoc 7 elist))))5 ]# q- T3 g$ x
  11299.                     );and( O# P  `+ r0 L4 u
  11300.                     (progn  
    % x% K0 `& t3 b4 J
  11301.                      ;rk. This needs to be implemented as per mtext font issue in                                                                                                          ;    ddchprop_notes.txt
    , k$ X& R. i, w, `: v8 H5 C. @
  11302.                      ;(if (equal "MTEXT" (cdr (assoc 0 elist)))
    & V5 D/ `" Q9 W3 X  c7 n, w
  11303.                      ;    (setq elist (fix_mtext_fonts estyle ' K. |  U2 s) u' V: D0 \  J
  11304.                      ;                                 elist
    $ O2 e* Q. k+ {6 U
  11305.                      ;                )
    # n$ p" i2 v0 U; d1 N9 e1 H
  11306.                      ;    );setq then
    - J' K4 `# J7 l  X  w
  11307.                          (setq elist (subst (cons 7 estyle)% E6 ]8 n# ~9 V' D
  11308.                                             (assoc 7 elist)9 e8 O/ W- o* V4 j& I# o
  11309.                                             elist
    / M  D% l3 @- L9 D# t( N
  11310.                                       );subst! k8 m# G9 z: M* ~' C- D
  11311.                          );setq else
    ( i. W& W2 K' }" n0 i. W5 n
  11312.                      ;);if
    - s) X) v9 l5 b; ^
  11313.                     );progn. I5 f7 P1 C- E/ }3 H% }
  11314.                 );if
      F% x& B. {6 o
  11315.                 (entmod elist)
    9 O+ {1 w5 s3 L$ S) o
  11316.                 (setq ss-index (1+ ss-index))  K! X; p. k! G# P4 _7 c
  11317.               );while6 m$ x3 g6 H9 V8 m4 ]' B
  11318.              );progn then& F* L8 S( O4 ~* x. t
  11319.          );if% t1 w0 j6 y9 z; }

  11320. " R) s* O  L7 d" f) ^, L, c
  11321.         (setq cmdact (getvar "cmdactive"))
    ! i1 X% ~; I' [& Y
  11322.         (command "_.chprop" ss "")# W2 G" M- g% R* u  @  X  a
  11323.         (if (/= cmdact (getvar "cmdactive"))  ; Is CHPROP actually running?
    6 K  M. G+ w( {. ?2 ?/ A
  11324.           (progn
    5 P2 n1 |( f  y$ G
  11325.             (if ecolor- ?1 q9 {5 g" _
  11326.                 (progn; w, |) e3 j* m' s+ d8 L6 Y+ T
  11327.                  (if (= 0 ecolor)   (setq ecolor ;|MSG0|;"BYBLOCK"))3 e0 O4 s4 @2 f# D; j8 O  Q- A# Y- V) y
  11328.                  (if (= 256 ecolor) (setq ecolor ;|MSG0|;"BYLAYER"))
    5 {: k6 K  I1 [8 A  U5 r6 X
  11329.                  (command "_c" ecolor)& C4 m7 Y: C) V
  11330.                 );progn then
    7 h  @8 N: y1 h& k% z
  11331.             )! f4 p5 S3 V6 e: o7 |+ U
  11332.             (if (and lt-idx
    6 M% c+ A5 B6 }$ p/ m
  11333.                      (/= eltype ;|MSG0|;"Varies")' d5 H* r1 t. y" v; g3 y8 k
  11334.                 )
    ; C: F4 `* w( {+ h  z
  11335.                 (command "_lt" eltype)$ L& S6 L# d& }0 k
  11336.             )
    * @& s  t9 a: Z* i/ B6 R# P1 D
  11337.             (if (and lay-idx
    3 }" T, t( t$ o7 q" h
  11338.                      (/= elayer ;|MSG0|;"Varies")
      I; h  X2 r/ X" d3 w% J7 Z
  11339.                 )
    , Z3 G  b& s9 }- E& v5 G
  11340.                 (command "_la" elayer)- d4 C  r3 k  G& U" ^3 U
  11341.             )4 `! n! ?0 X+ ]3 p( w
  11342.             (if (and ethickness ; T! H; P  ~* R  c, P# F7 v2 X1 P
  11343.                      (/= ethickness "")
    + T, e% }1 {' M) w
  11344.                      (/= ethickness "Varies") " x( h. G& [7 ]- C4 r  ^
  11345.                 ): @' R* r5 }' ]1 \3 z
  11346.                 (command "_t" ethickness)
    1 m( M3 M' ^1 q
  11347.             )
    0 {: I$ p+ P8 B) A
  11348.             (if (and  eltscale (/= eltscale ""))9 e5 B6 l6 e2 P5 `% j: e. \
  11349.                 (command "_lts" eltscale)
    ; M0 z  S; l- ~$ i2 _9 q
  11350.             );if
    3 w5 r& R& i$ _1 P9 l# f/ u
  11351.             (command "")
    - p+ R0 {/ @  Q: C) m+ n! K
  11352.           )
    ' F0 S0 G: `# N- E  ~8 L4 Q0 m
  11353.           (princ "\nProperties unchanged")  ; CHPROP didn't like our SS set" u8 o# Z! ^! j: T" M) A  _
  11354.         )
    1 g/ O' Y1 E1 X- Z

  11355. ! Z& {/ `, F( n/ @
  11356.       );progn then OK was picked in the dialog.
    ' V, `# p" B( ^% e" k; u
  11357.       - v% ^1 n2 P; y* r
  11358.       ;; Fred GERBER - 25-AUG-94' V* ^+ @; j# }( C7 J( q* Q
  11359.       ;; Don't print the "Properties unchanged" message when the user cancels0 [. y, m4 K" u# U% z+ T( y
  11360.       ;; the dialog because he knows that already (otherwise he would have
    : e7 u( i' A. P$ X3 t( j
  11361.       ;; hit the "OK" button). Display the message only if CHPROP fails for
    1 \, C) n" o6 c
  11362.       ;; some reason, because it is not the expected behavior of the command., |; a3 L2 V$ g) a' {
  11363.       ;;) `( D! d  w1 N9 i
  11364.       ;; (princ ;|DDCHPROP2_LSP_8|;"\nProperties unchanged")1 b0 P' A( q& _- H
  11365.     );if
    6 r0 v# L1 \* O  J. Z2 J  W
  11366.     (princ)
    , {0 ~8 r+ D( M8 [/ K2 [2 C
  11367.   );defun call_chp21 l) n$ Q, e9 M3 A* d+ I
  11368.   ;;: [' |' u( `% k( d8 B6 D
  11369.   ;; Function to set the Color text tile and swab to the current color value./ M8 u, P& n  Z) P
  11370.   ;;
    - m  F: v  M9 K% ]& J
  11371.   (defun set_col_tile()4 C% _; t/ F: v3 T! ^/ b
  11372.     (cond
    8 O) _( A8 h: F* l, q0 X' k! K
  11373.       ((= ecolor nil)
    - U! X: l, @# r& W) l: {
  11374.         (set_tile "t_color" "Varies")
    # Z. ~5 J, i) ~
  11375.         (col_tile "show_image" 0 nil)
    % v( `  R  d  c: g7 b: K' W
  11376.       )) Y) t: G/ D8 b
  11377.       ((= ecolor 0)
    / x* e2 a' C4 T' G
  11378.         (set_tile "t_color" "BYBLOCK")
    7 d  D; E; N: ?
  11379.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white
    : R0 K+ F5 f, H0 u0 e' {' v+ Z& ~
  11380.       )' |: Z+ Q+ A6 ?; f3 `! a
  11381.       ((= ecolor 1)
    ( A- r6 P3 Y8 {/ U- m$ V  P8 H3 m
  11382.         (set_tile "t_color" "1 red")" ^8 T0 _. q' p2 W! R- M+ E# M' L9 `
  11383.         (col_tile "show_image" 1 nil)1 w' w: V3 P* Z' X! a
  11384.       )
    " R9 M( p( u. @* {9 g' `
  11385.       ((= ecolor 2)" R1 I% E, G, }! \, _/ F
  11386.         (set_tile "t_color" "2 yellow"); \& @4 w5 P" Q
  11387.         (col_tile "show_image" 2 nil)
      j6 x6 {) y) e' {! \$ a) m
  11388.       )
    ) U- c4 G5 V; B; d
  11389.       ((= ecolor 3)
    # u8 D2 b& U2 R% m  V) X
  11390.         (set_tile "t_color" "3 green")
    3 a0 D8 c" u3 q5 I
  11391.         (col_tile "show_image" 3 nil), B2 z( u, K0 ~, R7 ]* }
  11392.       )/ n% c3 M# A! s2 I' m, U
  11393.       ((= ecolor 4)6 Z/ |+ W; l! N" _: W' i4 `
  11394.         (set_tile "t_color" "4 cyan")
    # D! _5 X( Z9 }8 ^
  11395.         (col_tile "show_image" 4 nil)
    7 A$ u! X9 ^) D& T; d6 p  ]( z* E
  11396.       )1 \- s# `# V- v; y! c9 B8 u8 `
  11397.       ((= ecolor 5)) g) ^; S5 j# a% M6 W+ V
  11398.         (set_tile "t_color" "5 blue")$ ^9 G7 S2 E4 N% G3 w
  11399.         (col_tile "show_image" 5 nil)8 E/ q! ?+ x# d8 G, C8 O5 m9 @
  11400.       )
    ; ?7 b! ^- T& S' z  L
  11401.       ((= ecolor 6)
    7 }2 {4 _6 a( J: A0 y* a
  11402.         (set_tile "t_color" "6 magenta")
    9 R3 I( u5 P% I$ S) j! F4 V
  11403.         (col_tile "show_image" 6 nil)
    & m* ]8 u: d  S, K
  11404.       )& Q% L& U) O! _4 D) \
  11405.       ((= ecolor 7)
    - h( _0 M7 M$ I0 ^; Z/ h5 W' q
  11406.         (set_tile "t_color" "7 white")
    / X$ o% w: j% D0 [+ ?
  11407.         (col_tile "show_image" 7 nil)/ O9 Z2 [: W& h. g) G) M9 g
  11408.       )
    6 @+ b4 T; J- ]: m* p( @/ H
  11409.       ;; If the color is "BYLAYER", then set the tile to
    : j; v8 M& w8 ^: J" ^9 D
  11410.       ;; show it's set By layer, but also indicate the$ P3 O; s. Z% w# M
  11411.       ;; color of the layer - i.e. By layer (red)
    3 t- f9 `5 a6 k' O' N/ ?
  11412.       ((= ecolor 256)7 G0 e* W' Z( ^$ j' X, U) s9 T( ]6 |$ Z
  11413.         (set_tile "t_color" (bylayer_col))
    ! o9 \9 ^( R6 ~
  11414.         (col_tile "show_image" cn nil)
      ?6 N9 Z: Y8 w; h# j
  11415.       )
    ' X% g2 Q  D; t6 r! g
  11416.       (T
    * K& b" A$ \# [
  11417.         (set_tile "t_color" (itoa ecolor))
    2 Y" n: f5 ~8 B, b
  11418.         (col_tile "show_image" ecolor nil)
    " ]- T. X1 d' X) A3 U# l7 T
  11419.       )
    - m6 H/ B5 W4 H- n5 u
  11420.     )/ y/ O5 A9 `$ b: T
  11421.   )5 z( l$ J$ t- E0 a, N" n
  11422.   ;;
    ' o+ ]5 U& l8 K2 }: I. K! g
  11423.   ;;  Function to put up the standard color dialogue.
    $ o9 W4 m+ d4 n2 o
  11424.   ;;" Y2 q( j; b5 b& J3 J
  11425.   (defun getcolor(/ col_def lay_clr temp_color)
    # r* `% R/ U' d  j5 e/ J
  11426.     ;; col_def is the default color used when rq_color is called.  If ecolor
    1 J5 S4 A' W/ }- a% E
  11427.     ;; is nil (varies) then set it to 1, else use the value of ecolor.
    + U* E/ ^* R/ }1 L% Z
  11428.     (if ecolor
    : M9 }% O  n' G; F/ R+ ^* O
  11429.       (setq col_def ecolor)
    6 f0 _- h# T! g9 s
  11430.       (setq col_def 1)
    $ N2 f* Y0 R; ~# t
  11431.     )
    $ a3 I# h+ Y0 a9 k7 I2 N6 ~
  11432. / j! L. J7 b( W7 w0 j
  11433.     ;; If we're working with a single layer, get its color
    8 N, v" P9 ]" g  P. ?
  11434.     ;; for use in the color swatch if the user selects color BYLAYER.
    6 b5 N& i; i8 n& l1 B. y  l8 r
  11435.     (if (/= elayer ;|MSG0|;"Varies"). l( k2 [! `4 J! z3 @' G. {0 p5 J4 _
  11436.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))! W2 Q" S* o& w5 {9 s# ~/ v/ ]
  11437.       (setq lay_clr 0)
    , _+ b2 v4 y+ l( ?& l8 ]
  11438.     )- y, E# }2 i* c. x' z+ ]
  11439.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))( ~5 `8 I$ H* q8 r
  11440.       (progn
    ; F  X8 E5 X1 m7 u; k
  11441.         (setq ecolor temp_color)1 f! Y- s2 A" v4 S2 m
  11442.         (set_col_tile). q6 v/ G  W4 Q+ D7 E8 v! [
  11443.         ecolor
    # Y) f8 h2 X; h  I  ^0 ?
  11444.       ), h1 m& i6 C# \, j
  11445.       ecolor
    1 s6 Z2 h$ R- Z4 t. a& O
  11446.     )# z) h. A! c/ c
  11447.   )- v$ `% l4 [6 h6 Z
  11448.   ;;( P( }0 X" r9 C& t) M; J; s/ r
  11449.   ;; This function pops a dialogue box consisting of a list box, image tile,8 c2 I+ y; \+ |7 U6 p& [, r! u
  11450.   ;; and edit box to allow the user to select or type a linetype.  It returns
    3 f; N* z7 u1 ]. M; ]  ^
  11451.   ;; the linetype selected.* i2 |6 {5 _4 ]: i, F+ H
  11452.   ;;
    8 M# C- k) S! A
  11453.   (defun getltype (/ old-idx ltname)
    ( ^( ^  S, w  c3 A3 `* n" l1 w4 U+ N4 x
  11454.     ;; Initialize a dialogue from dialogue file
    5 q. K2 [1 s9 L( v
  11455.     (if (not (new_dialog "setltype" dcl_id)) (exit))
    & K& E# R' `& ^" z4 V; I7 ?
  11456.     (start_list "list_lt")
    ) @+ a$ C0 z" {# L1 N
  11457.     (mapcar 'add_list ltnmlst)         ; initialize list box: T; M. `. u4 E/ Y1 F7 x
  11458.     (end_list)
    9 d9 W# D9 Z0 }/ s  M4 o) L, O% v# p- B
  11459.     (setq old-idx lt-idx)
    $ W, h% o7 }- E) Q% |# ]% ~
  11460.     ;; Show initial ltype in image tile, list box, and edit box: D8 f$ F9 L  l  f& x" k
  11461.     (if (/= lt-idx nil)
    & b" ~' B6 s3 ~0 |( ]
  11462.         (ltlist_act (itoa lt-idx))
    " z9 z2 L+ ^) f% X+ `3 A# k
  11463.         (progn5 g* V. b, _$ j
  11464.          (set_tile "edit_lt" "")
    8 l. Q/ A6 t5 `. z" N
  11465.          (col_tile "show_image" 0 nil)3 e1 |  ^& u( l1 i
  11466.         );progn else
    5 B3 ?4 @: l; N' ]
  11467.     );if
    . B  o% Y3 Y% [& o) \8 H) F: n, s
  11468.     (action_tile "list_lt" "(ltlist_act $value)")$ ~& ?6 u4 ^( B9 H# i5 e$ q
  11469.     (action_tile "edit_lt" "(ltedit_act)")
    . p4 J7 t( |2 P! z: D; o+ e
  11470.     (action_tile "accept" "(test-ok)")  Q3 {& A$ ?- ^/ X8 g! Y
  11471.     (action_tile "cancel" "(reset-lt)"). s6 ~7 Q8 C- T' h! J( ~
  11472.     (if (= (start_dialog) 1)           ; User pressed OK+ Q' L2 z% u. j, P" q
  11473.         (cond
    , A. S" @) J0 R# K' ?" o+ _- ~
  11474.          ((or (= lt-idx nil)% l  J+ K3 ^8 k9 T  Z- m& H. d$ M
  11475.               (= lt-idx (1- (length ltnmlst)))
      d- }( b! k1 S2 j: g0 m
  11476.           );or7 V, f: _' Z# k' D
  11477.           (set_tile "t_ltype" "Varies")
    3 [% U0 t1 v. W# r0 ~5 v) z3 u9 ?
  11478.           ;|MSG0|;"Varies"
    ; ^6 C  |6 f# D: h* |; j8 R! J
  11479.          )9 \* d3 D, E/ e- K/ q3 _( J4 o
  11480.          ((= lt-idx 0)5 K( [* d5 o# ], p& o
  11481.           (set_tile "t_ltype" (bylayer_lt))0 t$ @4 u. V( Q4 T5 ~6 b; F
  11482.            ;|MSG0|;"BYLAYER"0 \5 [# I4 o9 D# }
  11483.          )3 j( t# r3 S7 A6 l
  11484.          ((= lt-idx 1)# J2 \0 J/ e1 h. l8 b, m3 C
  11485.            (set_tile "t_ltype" "BYBLOCK")9 r9 S/ U1 k0 S( Z
  11486.            ;|MSG0|;"BYBLOCK". E) v. ~; o! h1 q8 @# |4 f1 e6 F
  11487.          )0 C3 i& T! N& R" j& @6 [: z- F. M
  11488.          (T
    1 C+ l; V, U; O+ o, V. d0 {8 B& J
  11489.            (set_tile "t_ltype" ltname)7 z' X$ X  X" T2 `' p1 H
  11490.            ltname+ p/ W/ q. n5 `( r
  11491.          )
    " R& ~: M$ H# d+ I
  11492.         );cond then
    ( @% s( h# w5 n0 Z4 S
  11493.         eltype
    9 G4 v9 }( L2 w' [2 m2 J+ A
  11494.     );if8 [9 O2 P! G7 n9 S8 c& e
  11495.   );defun
    1 D+ N6 Y- h; h2 O- d: J; O
  11496.   ;;
    , c: h% f* r- N$ b% t
  11497.   ;; Edit box entries end up here  z1 N* H, j0 D+ k3 T; X2 O
  11498.   ;;  x* t) D7 E# Q: q
  11499.   (defun ltedit_act ( / flag)
    8 {1 g+ G. V. r
  11500.     ;; If linetype name,is valid, then clear error string,
    ' Y1 B* z. k2 @. t
  11501.     ;; call ltlist_act function, and change focus to list box.$ J& D- Y9 r; j; B
  11502.     ;; Else print error message.
    & n6 d5 H( j5 h# @* _
  11503.     : ~3 m  f9 ?8 q) u1 C
  11504.     (setq ltvalue (xstrcase (get_tile "edit_lt")))
    2 d) `4 m: i% L8 |' V! B4 W! L
  11505.     (if (or (= ltvalue ;|MSG0|;"BYLAYER")
    5 U  v+ }, }3 l
  11506.             (= ltvalue "BY LAYER")
    5 w1 E" ^% T! S# @
  11507.         )
    5 j1 Y" d1 I4 `5 z6 _8 B9 A
  11508.         (setq ltvalue "BYLAYER")
    8 c7 H9 R4 V3 t/ \
  11509.     )
    % a1 |- a9 N& X. Z: q/ D! @' A
  11510.     (if (or (= ltvalue ;|MSG0|;"BYBLOCK")) G' R# k. b/ G: q' e6 x
  11511.             (= ltvalue "BY BLOCK"): X: B9 g8 z2 a  e) o- ]
  11512.         )8 k+ Q6 E$ M9 z- R% @
  11513.         (setq ltvalue "BYBLOCK")$ X+ d& B# j6 S/ ^$ f' x
  11514.     )+ f) z& P9 N& r1 T
  11515.     (if (setq lt-idx (getindex ltvalue ltnmlst))! H2 T7 @5 E. i, ^2 A
  11516.         (progn  K  ^4 u# Y7 z3 X
  11517.          (set_tile "error" "")+ {$ b7 c7 u2 i* {. v' V
  11518.          (ltlist_act (itoa lt-idx))6 N: v  L3 M$ M) T9 ?3 R
  11519.          ;(mode_tile "list_lt" 2)8 t$ L% @4 y- V8 T( t
  11520.         );progn then
    % V( V# G; {: g( m8 ?! y; Z5 p* i# F' D
  11521.         (progn
    * f) N: D( n: R* \5 g
  11522.          (if (/= ltvalue "")
    / B, R0 b/ _& r1 b/ `' c$ O! {) N
  11523.              (progn& L( l& z0 {! W
  11524.                (set_tile "error" "Invalid linetype.")
    3 `6 w( ]2 a' E
  11525.                (setq flag T)
    6 W( K% X' d' W& N
  11526.              );progn
    ( P6 e6 o, o) q; e
  11527.          ): [( A+ \+ `% \3 \% C2 ^; i' s
  11528.          (setq lt-idx old-idx)
    % Q2 i: Y$ L5 Z% E4 k( z1 s+ U5 F
  11529.         );progn else
    $ i4 }6 {& @( h: {6 x
  11530.     );if
    / z5 M. h3 Y& T8 G6 j9 U
  11531.     (if (and (not flag) ;added so a return will take you out of the dialog.# X) }6 d- h) e- s6 ~$ x" h. f2 V
  11532.              (= $reason 1)
    * q& O# e! D( X3 |3 V8 E
  11533.         );and
    5 A4 E9 D3 S4 f" s
  11534.         (done_dialog 1) . h" U. M) E! Y* n- b# H$ h5 a
  11535.     );if
    & i5 F: y; L! F- h( y/ n
  11536.   );defun ltedit_act
      T: F8 _+ n' S) W% q6 e
  11537.   ;;
    1 R( G; w( T9 l% ]- ^! J
  11538.   ;; List selections end up here! E3 K$ h+ O2 E6 x4 v( V& O8 W
  11539.   ;;
    ' P$ P/ ^* U, b. g' q
  11540.   (defun ltlist_act (index / dashdata)
    % V& G% I* ?! n$ {* |
  11541.     ;; Update the list box, edit box, and color tile
    , f& m) N4 j7 g( w
  11542.     (set_tile "error" ""), B. r$ ~' P9 l
  11543.     (setq lt-idx (atoi index))
    5 }% T! x0 z: V, V
  11544.     (setq ltname (nth lt-idx ltnmlst))( Q- V& U" M' x3 P7 F, g/ e7 S
  11545.     (setq dashdata (nth lt-idx mdashlist))
    $ S" i; d* V3 o- w/ c
  11546.     (col_tile "show_image" 0 dashdata)" F; c1 U( h% }# S* {
  11547.     (set_tile "list_lt" (itoa lt-idx))+ d5 Q; v% ]: f, Q+ n: U# y
  11548.     (set_tile "edit_lt" ltname)! e1 `3 N/ F4 G8 i0 h3 f. D* u
  11549.   )
    / P' [) D4 M" Q
  11550.   ;;/ T& l) l- o1 Z( f; j+ ~' ~
  11551.   ;; Reset to original linetype when cancel it selected2 C9 g/ l, v. J  W+ F
  11552.   ;;
    1 a  r1 }  Y9 Z- X9 B! Q
  11553.   (defun reset-lt ()7 I0 o1 {7 z" \  H& E* x
  11554.     (setq lt-idx old-idx)- \0 a. C: `# G. n9 f
  11555.     (done_dialog 0)
    $ t2 F3 x* `+ @
  11556.   )
    ! ]  ]  l' w# [! c
  11557.   ;;! Y  N, {( M( ~; Q1 @9 U. L# U( w
  11558.   ;; This function pops a dialogue box consisting of a list box and edit box to
    ) V6 i+ V: \7 p' M+ Z: z
  11559.   ;; allow the user to select or type a layer name.  It returns the layer name5 |" U$ \' }  p; }4 X  _# r
  11560.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the& x+ h" h! N, n, _
  11561.   ;; drawing." S5 ]7 z$ z8 H# _' N
  11562.   ;;
    9 z7 c6 Q: N# s, w) p
  11563.   (defun getlayer (/ old-idx layname on off frozth linetype colname)( j6 O1 F% R7 r8 d/ T! `: ?
  11564.     ;; Create layer list the first time the layer
    3 y: }3 A' A7 s' x  }0 r
  11565.     ;; dialogue is called.
    6 P6 U* G/ D3 D" ?0 T$ n
  11566.     (if (not lay-idx)
    6 ~& {% o' P; _- C
  11567.         (progn
    - U, j! h& S$ ^) E
  11568.          (makelaylists)                     ; layer list - laynmlst
    + V4 S6 ~; T; X3 U+ Z& d3 n6 e7 n
  11569.          ;rk
    # \- m% X: M7 o2 i9 U
  11570.          (setq lay-idx (getindex elayer laynmlst)). B& _" T. r/ y, L. D
  11571.         );progn0 r$ _& N* B4 W* _# o
  11572.     );if, }% b+ D6 U/ r! k
  11573. $ \- C. \1 W" T0 G! F6 G
  11574.     ;; Load a dialogue from dialogue file
    6 j( {' a7 h) Y8 n+ s7 N8 n
  11575.     (if (not (new_dialog "setlayer" dcl_id)) (exit))# I& _% s( @3 p1 V
  11576.     (start_list "list_lay")
    ' X3 p5 |! ?& p% `$ ^/ m
  11577.     (mapcar 'add_list longlist)        ; initialize list box* ]; T8 [/ F' |9 J: x) n6 \* ~. @
  11578.     (end_list)) ^4 c- X2 `+ }, D( g* U
  11579.     ;; Display current layer, show initial layer name in edit5 ?1 @) A+ y2 {, k% [* x
  11580.     ;; box, and highlight list box.
    + |0 u! d8 h, H; q  y* r3 T4 I
  11581.     (setq old-idx lay-idx)
    2 Q  C# F% a  b. \* y: V# ^, q" C
  11582.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))4 x3 M$ S% y+ |8 P! p  ^
  11583.     (set_tile "cur_layer" (getvar "clayer"))
    # h# h: F- l3 L/ X  H
  11584.     (action_tile "list_lay" "(laylist_act $value)")7 L' Q: ^* K( X7 J( t
  11585.     (action_tile "edit_lay" "(layedit_act)")
      V& r  }7 Q" n7 \/ ^0 m; g) u) t, H8 {/ z4 H
  11586.     (action_tile "accept" "(test-ok)")- V+ [! n; s4 ^) _
  11587.     (action_tile "cancel" "(reset-lay)")6 S8 h, k  i- x, [
  11588.     (if (= (start_dialog) 1)           ; User pressed OK
    4 ~/ o5 X* f" X4 ^+ x% s
  11589.        (progn
    ' C9 c2 }' ~. w, t2 P! v
  11590.          (if (or (= lay-idx nil)) j0 r, a8 \% e4 N; r2 b! e
  11591.                  (= lay-idx (1- (length laynmlst)))
    / k  Z% i# G; d
  11592.              );or
    & `% w; e6 m6 Q2 H5 J3 N! v' L% Q
  11593.              (progn! D; y' D. Y! A3 g
  11594.               (setq lay-idx nil)  ' m" }+ H0 n3 E1 w. @+ G
  11595.               (setq layname ;|MSG0|;"VARIES")
    $ }/ U  G" a4 F# Q: V7 t
  11596.               (set_tile "t_layer" "Varies")# N8 f% n+ b, k) r
  11597.               (setq layname "")7 D# ^; M  y$ `. @6 \) A
  11598.              );progn
    : @0 I  Q# X# W) m9 F
  11599.              (set_tile "t_layer" layname)
    % J( k3 l" f8 D2 ]' @, l9 g( b( n
  11600.          );if
    3 A! E/ f! Y2 o
  11601.          ; If layer or ltype equals bylayer reset their tiles
    , V4 o! b2 R/ z) j5 s
  11602.          (if (= lt-idx 0)
    8 q- n! r3 I" x
  11603.              (set_tile "t_ltype" (bylayer_lt))
    ) c1 |4 G( A% V/ Y* E
  11604.          );if9 W9 [; p1 V( u  F% R
  11605.          (if (= ecolor 256)/ f% K/ l' g" l" X
  11606.              (progn
    3 p0 b; n" X0 n* c5 M2 R
  11607.               (set_tile "t_color" (bylayer_col))( l) Q2 g: i4 G1 }
  11608.               (col_tile "show_image" cn nil)
    + P! @" l" c$ ]
  11609.              )' P9 O% x' w2 G/ N6 A+ W* z
  11610.          );if
    0 A7 n7 V) Q, ~' ]3 ?( y% A
  11611.          layname
    5 w, X& X. X! |: W( y* t
  11612.        );progn
    , \; T: L- L2 R+ Q6 p
  11613.        elayer4 c1 Q" ?: F$ k( u3 r6 V* ?  I& _8 V
  11614.     );if
    " X7 g# w( v! Q( i2 i. c
  11615.   )3 s, w  q6 c( M' F# S* _
  11616.   ;;  {- p1 L. K5 N
  11617.   ;; Edit box selections end up here
    6 q, V4 x3 f) D  f; a" p0 W8 `/ z
  11618.   ;;, Y9 P0 o: x9 \! V# [9 i4 x1 j8 a
  11619.   (defun layedit_act()$ X; C7 p0 ]# N0 q  T
  11620.     ;; Convert layer entry to upper case.  If layer name is# J3 \& e7 I1 R5 z
  11621.     ;; valid, clear error string, call (laylist_act) function,
    0 |4 P$ ^6 \6 x0 E3 z5 A- E, e
  11622.     ;; and change focus to list box.  Else print error message.
    ! [7 H" X# }% U. z4 W
  11623.     (setq layvalue (xstrcase (get_tile "edit_lay")))
    . q! U: E4 _1 m! [& y
  11624.     (if (setq lay-idx (getindex layvalue laynmlst))* K) @& W) F# }7 p" t
  11625.         (progn  Y1 J4 K% m# P7 k& E/ J9 w
  11626.          (set_tile "error" "")
    ; h- {7 l% y; [3 j8 M3 x; _) n% F9 `
  11627.          (laylist_act (itoa lay-idx))# [. u' \" l% z' a' [
  11628.         )
    + [3 `0 j$ W2 @6 Z7 z8 B, U9 m
  11629.         (progn
    6 w" d2 N: i' l* t3 L2 l
  11630.          (set_tile "error" "Invalid layer name.")/ \7 S4 }# u: m, {) b; f
  11631.          (mode_tile "edit_lay" 2)8 e- Z; r7 X& g, K( ^& _6 D; G& m
  11632.          (setq lay-idx old-idx)8 V2 C! y. }: ]; H
  11633.         )% K: }, [2 D7 W' F
  11634.     );if4 E1 I: n! v7 y# b7 o
  11635.   );defun
    1 |7 T/ ]* S5 G+ V, m$ n) c
  11636.   ;;
    1 K) i3 g! @% A7 k* z9 Q7 K
  11637.   ;; List entry selections end up here
    . J0 A& w0 c6 A3 k* a
  11638.   ;;3 {; H& ], y; D9 r! Q. i
  11639.   (defun laylist_act (index / layinfo color dashdata)
    ; Y# y, j+ F, C  }
  11640.     ;; Update the list box, edit box, and color tile
    ; c0 G' X' p$ J+ s- Y; h, V- w
  11641.     (set_tile "error" "")
    # Y! T% f6 c; S$ f# Y
  11642.     (setq lay-idx (atoi index))4 E* `+ |! O9 b( h
  11643.     (if (not (equal lay-idx (1- (length laynmlst))))
    * W& |9 s. F! t
  11644.         (progn
    - H- A+ O: L1 O# _; ^9 T* R
  11645.          (setq layname (nth lay-idx laynmlst))( B9 L9 Z) d' G
  11646.          (setq layinfo (tblsearch "layer" layname))
    ! u' X4 |  \, U7 q
  11647.          (setq color (cdr (assoc 62 layinfo)))9 r5 o' t+ h" e2 C
  11648.          (setq color (abs color))
    * E  h0 @; r4 {
  11649.          (setq colname (colorname color))
    # G/ M. y9 Y7 y
  11650.          (set_tile "list_lay" (itoa lay-idx))
    " r5 \+ `9 `2 A" ?* w+ p
  11651.          (set_tile "edit_lay" layname). F8 ?) ]# r6 A' j& w/ @: {  |
  11652.          ;(mode_tile "list_lay" 2)* ^* a4 @3 W0 s  v$ c
  11653.         );progn then
    7 k2 x  \* v' A: Q: e8 S! H
  11654.         (set_tile "edit_lay" "")
    ) w, K1 r: @" D% d
  11655.     );if
    * V) a9 ^" a' \  q# b. B, H3 }7 o7 m
  11656.   );defun laylist_act; J: t# a1 N2 ^2 |. a
  11657.   ;;/ ~8 V! N  q; @8 z' r
  11658.   ;; Reset to original layer when cancel is selected
    / V- N5 C6 c$ H2 Q+ s, E
  11659.   ;;% n) f& H9 i5 i) y& p$ N" \$ f
  11660.   (defun reset-lay (): X: h: v1 f# b; V+ ]
  11661.     (setq lay-idx old-idx)% k: H, m4 y$ Q  v( R, C' |
  11662.     (done_dialog 0)
    2 [8 u9 y0 H& o7 O
  11663.   )% K' f3 T9 S+ c8 u# v

  11664. ; r) v7 m/ J) u4 w( }
  11665.   ;; Checks validity of linetype scale from edit box.  It checks to) \; _, l% U3 u: E
  11666.   ;; see if the value equals "Varies".
    * q9 k3 v- i/ i- Y& x: R7 |3 k
  11667. , d- ?4 b- @& H+ r" k9 S
  11668.   (defun getscale (value / rval)
    1 {' k5 e" d% A% X2 W# T; ^1 v
  11669.     (setq value (strcase value)- j# X# u" U, m9 L" |" K5 M0 F, j
  11670.            rval (distof value)
    6 X- I! J; c' J( _
  11671.     );setq5 e& Y2 R# E9 g; H9 k
  11672.     (if (or (= value "")
    3 m) F* M) C0 u' w
  11673.             (> rval 0.0)
    & x: j9 F. }! h* I# z8 P. y. h
  11674.         )- x, ^8 S4 y/ V; D# Y4 n
  11675.         (progn3 o* h; Y* V* P' P; g+ L
  11676.           (set_tile "error" "")
    ( S  _8 L" ?# H# y/ B7 z7 ^4 J
  11677.           (if (= value "")
    & L1 l9 U3 z! R$ b  b. j1 r
  11678.               (progn5 e7 r, Z  Z: n4 W
  11679.                (set_tile "eb_ltscale" ""), r- @: B3 S' l: k
  11680.                (setq eltscale nil)
    , I9 n* E$ v9 W. Z; a& b8 B
  11681.               );progn then& t: f4 {- m9 T( g7 x& `5 {
  11682.               (progn
    : a: e* M6 k2 }$ {- m( h
  11683.                (setq eltscale (distof value))
    , y! b! e, B( h1 H$ m0 [/ f0 l! b- e
  11684.                (set_tile "eb_ltscale" (ai_rtos eltscale))
    9 T* G) D* F" y% T3 F& z5 l
  11685.                eltscale
    / {( X. q+ H/ [8 h+ {) k
  11686.               );progn else
    1 o" P% R& ~3 T+ ?+ c
  11687.           );if! d2 O+ o/ @7 m* P+ I) q1 A
  11688.         );progn8 _2 I6 w* P+ Z
  11689.         (progn. S+ G  _- t) b; M0 L; ?: ?2 ~9 f. p- e
  11690.          (set_tile "error" "Invalid ltscale.")& T7 [! N2 p9 b, A
  11691.          nil
    7 X+ W; D, y0 ^  V
  11692.         );progn else
    ' G/ L8 T  i% @  U9 H
  11693.     );if+ |9 R$ w) }. T
  11694.   );defun$ o; I$ i) M7 O8 C6 q' |- W
  11695.   ;;' I5 o8 g; n5 J( U
  11696.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a
    6 }4 l% ~( U: M9 z4 T& G  l
  11697.   ;; string can't be converted to a real, this routine checks if the first' v3 [1 G  \. N. b
  11698.   ;; character is "0".  It also checks to see if the value equals "Varies".
    8 s: \) b" }  k
  11699.   ;;
    0 ^7 P' {7 k$ [2 c' m; K
  11700.   (defun getthickness (value): [0 {! i9 D7 T0 [' e/ R
  11701.     (setq value (strcase value))
    - v% y6 Y8 c# n& b  C; Q
  11702.     (if (or (= value "")% d& S/ V3 F! Z: |
  11703.             (distof value)
    ) D- V  C+ ]4 I) K
  11704.         );or) ?: L3 ?& q# Y, u6 ~
  11705.         (progn
    8 ?$ r) W  `* `( H; u: x
  11706.          (set_tile "error" "")
    5 T4 u( |: n# @9 A2 ~3 b
  11707.          (if (= value "")
    + Q0 E& b( f6 O
  11708.              (progn* K2 w0 c* i2 i& |% M
  11709.               (set_tile "eb_thickness" "")
    % ^/ X$ K. L2 r4 X8 X
  11710.               (setq ethickness nil)
    ) h3 ~4 ~7 @  ?( `2 ]3 F
  11711.              );progn
    / W3 p" `0 l! `& @# ]9 N
  11712.              (progn
    & p* ?: J0 b8 t% M0 [6 r
  11713.               (setq ethickness (distof value))
    * w! k+ ~$ t6 s6 w3 b% F, @  e
  11714.               (set_tile "eb_thickness" (ai_rtos ethickness))# _$ q5 r( f( z  V  m1 I& G- L: N( Y; V
  11715.               ethickness
    5 B! c+ D+ s" R/ E2 Z
  11716.              );progn$ i! z7 @: v' D1 W! k0 s
  11717.          );if
    1 b; e1 ~. E, a) |' S
  11718.         );progn
    1 \) Y3 L4 O2 ]: G6 X& g
  11719.         (progn* w3 Y9 O) w# F$ Q! ^
  11720.           (set_tile "error" "Invalid thickness.")
    $ e& v! a2 J0 \" X4 h0 V% G
  11721.           nil
    - ]1 r$ }" G5 [0 ~+ Z4 ~
  11722.         );progn" o5 D; E9 F8 ]) ]# F
  11723.     );if
    0 ^5 m9 W4 O2 ^% M2 v
  11724.   );defun 5 h; e" i7 b+ M) _- d6 O
  11725.   ;;
    3 i, C( l1 p% E: y' w9 |
  11726.   ;; Checks validity of polyline elevation from edit box.: Q6 H; B9 Q3 P% \. m. {
  11727.   ;;
    ( L- ]2 }% H0 @
  11728.   (defun getelevation (value)
    % w6 ?4 @+ f& i4 e$ D
  11729.     (setq value (strcase value))1 `& _4 K2 ^- i5 r
  11730.     (if (or (= value "")
    5 v, l, o3 H& _8 |! r; d
  11731.             (distof value)$ Y3 M# \6 a" [/ E
  11732.         )
    * D( o9 r+ |- i% W$ Z) p' ^
  11733.         (progn
    # g+ g7 W' h' x7 W. a
  11734.          (set_tile "error" "")% y. v, S2 J) k: u( z$ d0 Q5 k" P& ]7 j. J
  11735.          (if (= value "")) w: Y- k1 P6 d; l/ g# p
  11736.              (progn
    5 ^! ]1 q  ]! }) n
  11737.               (set_tile "poly_elev" "")
    " j" e7 r- ^1 _2 U
  11738.               (setq eelevation nil)
    ' o  r% E, t' x7 P5 b# O$ L5 y
  11739.              );progn
    ! q% C9 V& ?1 h
  11740.              (progn4 G% J+ E( w" ^! y: y) M2 d
  11741.               (setq eelevation (distof value))
    6 w& z# Z% V% W# H
  11742.               (set_tile "poly_elev" (ai_rtos eelevation))
    1 R4 @( U5 x( W+ `8 Q5 ]3 w3 h
  11743.               eelevation, ]: y2 ?+ D" v% W
  11744.              );progn% {& t' u" D6 e+ k: Y+ _4 D" c! u9 K
  11745.          );if
    ' n" }; w- D# o; B) \
  11746.         );progn% L# X) H/ Z8 S/ K
  11747.         (progn
    + n1 J6 z9 z" N* `' q7 z
  11748.          (set_tile "error" "Invalid elevation.")
    7 P% \$ y- D% Y3 ]
  11749.          nil  l6 v% d% c7 }( A/ H
  11750.         );progn
    $ ]! k+ e6 G9 S" y' s2 N5 p8 |6 P
  11751.     );if7 p, y( a( S2 I& z6 N7 k
  11752.   );defun7 V4 h+ p$ l& f; n
  11753.   ;;. s% X4 h3 J- o6 u, _
  11754.   ;; Checks validity of polyline width from edit box.# m7 D* _# x% R" |6 k+ h
  11755.   ;;& @% |2 X; Y9 F( o3 r
  11756.   (defun getwidth (value / rval)
    - N0 d& ]7 {& n
  11757.     (setq value (strcase value)
    % \, }+ C/ Q+ c  Q/ b4 p  C- _
  11758.            rval (distof value)
    6 M/ U" t: k' ^1 N3 t, I5 G, Q
  11759.     )/ b' \. T: U  J
  11760.     (if (or (= value ""). v& b, }0 p1 p: y* c' w  f
  11761.             (>= rval 0.0)
    ; e4 M4 r7 ~9 A5 E
  11762.         )
    % \/ W( B2 x% }. ^9 J) W) p
  11763.         (progn, W' y( u/ i4 M
  11764.          (set_tile "error" "")
    6 r% Y3 X3 S4 V& F  o8 i
  11765.          (if (= value "")# L( q6 a  \2 o3 ?9 \. V. ^
  11766.              (progn
    4 e- I- M, g1 H. T- [: G; R9 p- F
  11767.               (set_tile "poly_wid" "")
    . S5 z* c. H+ L7 G3 |6 M
  11768.               (setq ewidth nil)# F4 w4 R' |+ K( Y4 x' C
  11769.              );progn) B% }% a% m8 C+ b3 y
  11770.              (progn
    2 J$ \1 a0 R& r+ n
  11771.               (setq ewidth (distof value)), K+ i) ~& _+ W: P1 a! V  m
  11772.               (set_tile "poly_wid" (ai_rtos ewidth))" y& \) V; t$ _$ a( c7 \9 ^
  11773.               ;width
    + A6 ~7 t1 i5 ?8 A! R
  11774.              );progn. r0 M+ w: |8 X( a
  11775.          );if6 r% V2 D# c8 e9 I  ?
  11776.         );progn! c. e$ |8 ]0 ?) o. ?% {  j: ^1 F) m
  11777.         (progn- V: x/ [! B6 e
  11778.          (set_tile "error" "Invalid width.")
    + _- ]" x' Z( T1 C7 v" o$ f
  11779.          ;(setq ewidth nil)9 m+ f4 Q, G1 |1 }$ R
  11780.          nil , p8 i# h" d7 T4 i1 }6 T# j; q
  11781.         );progn1 Z& m4 n+ c, s+ S* q3 T9 m
  11782.     );if
    6 ?4 h$ g+ q8 [5 q
  11783.   );defun
    7 H; ?) }8 `! o) p, I9 q. i% x
  11784.   ;;1 f2 @" e6 |6 t+ r. o# y1 G, I% R
  11785.   ;; Checks validity of text height from edit box.
    $ U2 y, y7 z5 G9 ?3 J) t) X4 |0 z
  11786.   ;;3 e4 g( z( c' Y4 l' I
  11787.   (defun getheight (value / rval)
    & d+ B3 @2 X0 r( J  G
  11788.     (setq value (strcase value)* X( |% Y% r5 v2 F* b# L8 E
  11789.            rval (distof value)2 T4 Y6 ^& O. T$ W1 Z5 C
  11790.     )
    ; f* ~# |/ m( `/ T4 m+ j; z
  11791.     (if (or (= value "")
    . x% p' E( }, S" o6 _
  11792.             (> rval 0.0)  a$ V8 H  M% p8 Y# B/ Z
  11793.         )
    4 g& |" A# `! B
  11794.         (progn5 I1 s6 i+ j1 n( r$ v  z( s
  11795.          (set_tile "error" "")
    / w- z. a; E: z0 F. x: A
  11796.          (if (= value "")( ]' m! {% A7 t
  11797.              (progn
    * C" Q6 J5 Z2 K' R, a
  11798.               (set_tile "text_hgt" ""), U: C3 i/ b" J3 z: g# y: K3 e
  11799.               (setq eheight nil)) z! c; A* D$ u. g# B$ _1 c0 V) p
  11800.              );progn
    : Z9 r( c2 ^+ Q3 ?, M) q1 S; ]1 b
  11801.              (progn8 r0 `3 g% A$ m  n' ]
  11802.               (setq eheight (distof value))5 X& h' g( K7 d, F) b9 j
  11803.               (set_tile "text_hgt" (ai_rtos eheight))! d8 j9 x, W/ [* k9 U
  11804.               eheight
    ' g- o# b, G. G8 F* k1 e+ Y
  11805.              );progn
    5 W6 e* B) P' }& J
  11806.          );if
    0 x% ]4 _* S3 t& |1 M
  11807.         );progn
    ! X3 o" l  @1 L; A! V4 s
  11808.         (progn
    ) h! d, z% l; q/ p, y
  11809.          (set_tile "error" "Invalid height.")  F# n$ J9 ?7 z5 o
  11810.          nil' F; F7 e% j5 Q* N% l
  11811.         );progn" t4 [' O: x5 x' E, K9 l! \
  11812.     );if) l& n: K  t. s( \: f% W5 a6 d
  11813.   );defun. h4 }" N$ r+ M  E" D" `3 O2 f% b

  11814. 1 n# |- x! A, T, \2 E
  11815.   (defun getstyle (value lst / rval)7 c* ^' `, x9 q" ?, _4 m" X/ w6 M
  11816.     ;(setq value (strcase value))
    9 U( q( U; F% |5 K+ p$ g9 Q( |
  11817.     (set_tile "error" "")' X' S. V6 e: B) f; o; l3 W0 n
  11818.     (setq estyle (nth (atoi value) lst))
    / H) S. A( n- j# \, v2 |2 V
  11819.     (if (equal estyle ""), p# v- [$ h; E% ^) {
  11820.         (setq estyle nil)7 q7 Z; I! w, r9 y; X
  11821.     );if
    ! F1 C6 V2 v3 R3 I

  11822. 6 ~/ L+ h. ~3 N
  11823.   );defun getstyle5 k) Y8 ]/ h& r: f* P7 n

  11824. # z5 \. |6 @( b
  11825.   ;;
    ( T; F7 k" h) Z& L  H& j
  11826.   ;; This function make a list called laynmlst which consists of all the layer: A3 N* w; q0 M2 B! Y2 U
  11827.   ;; names in the drawing.  It also creates a list called longlist which5 g3 L3 q: p* ?$ J/ G; L
  11828.   ;; consists of strings which contain the layer name, color, linetype, etc.
    * r4 G$ S6 t! P5 D  t
  11829.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the6 b4 F! ^& p+ Y' _% \0 T
  11830.   ;; same.
    ; K+ x8 j* k* `& d" E8 j+ ^
  11831.   ;;! r) ]. y1 J  x
  11832.   (defun makelaylists (/ layname onoff frozth color linetype lock vpf vpn ss cvpname& e! q9 F3 ?: Z6 X
  11833.                          xdlist vpldata sortlist name templist bit-70
    ) x# i& g, a5 h
  11834.                          layer_number9 `4 f- G4 c3 B; n" Y* K- E
  11835.                       )9 o; b6 ^- c: T1 M: F# S) ^$ e0 j
  11836.     (if (= (setq tilemode (getvar "tilemode")) 0)
    ! |+ [1 n" J% ^$ t# N) h
  11837.       (progn* b3 o3 u8 I6 J* h; Z7 f6 v3 B# ]
  11838.         (setq ss (ssget "_x" (list (cons 0 "VIEWPORT")
    2 c4 K( r9 J8 L: {; U/ r
  11839.                                   (cons 69 (getvar "CVPORT"))  @. G! H+ Q$ E  N
  11840.                             )
    7 e0 L9 R) E+ _8 l2 @" w7 u
  11841.                  )
    ( H" g4 i* w6 T/ A3 s# b
  11842.         )
    4 C' {, M" P1 L3 E
  11843.         (setq cvpname (ssname ss 0))5 C+ V2 ~0 F# J
  11844.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))
    / |: p* Z' ~" d) k
  11845.         (setq vpldata (cdadr xdlist))4 C4 J, F& X1 B
  11846.       )! h% o9 j* s0 }0 y2 z+ S7 m6 G
  11847.     )8 \8 C" N- n9 Q. v
  11848.     (setq sortlist nil)
    , c1 g4 A9 C1 s7 Z. ^( U. C( E
  11849.     (setq templist (tblnext "LAYER" T))& G0 |: E, H# p# m& M& v
  11850.     (setq layer_number 1)
    % I' ]+ F* ^) `
  11851.     (while templist
      k) [; k% k2 h
  11852.       (if (not (equal 16 (logand 16 (cdr (assoc 70 templist)))))
    7 e; y% o5 P- }0 P; F) I
  11853.           (progn  " `+ ~# L% `/ C& B
  11854.            (setq name (cdr (assoc 2 templist)))5 `$ A( B  u7 k
  11855.            (setq sortlist (cons name sortlist))& M- {0 N& T6 o( t
  11856.            ;; Not dead message...0 A$ M3 w) k$ X! _! `5 v! Q% n
  11857.            (setq layer_number (1+ layer_number)): y6 S# I# |9 C$ f# J( `
  11858.           );progn
    % z' P4 L1 ]4 ?$ b3 r/ m
  11859.       );if
      ]7 O: X# ~5 B: `) y1 f2 u
  11860.       (setq templist (tblnext "LAYER"))
    ) ]" I. t. \& M/ r- W* K6 z2 w$ T
  11861.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))! J% |; v1 A( u& d. N& z' \3 y: e
  11862.           (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    8 v  t' A* ^3 g4 I2 X
  11863.       );if
    ; L5 ^  L; x- {' [8 c+ p4 m1 b
  11864.     )
    ; e; _1 p& D% g4 _# L6 S
  11865.     (set_tile "error" "")) X( B. w- Q& u
  11866.     (if (>= (getvar "maxsort") (length sortlist))# y8 M/ d# d1 M
  11867.       (progn. w7 i1 r2 Q" R6 v
  11868.         (if (> layer_number 50)) \7 _) u, u1 H8 X
  11869.           (set_tile "error" "Sorting...")/ d8 O" \  g  Q1 f3 \" D
  11870.         )# x; n0 G; {+ _) O. l, b
  11871.         (setq sortlist (acad_strlsort sortlist))
    ' ~! r: c0 ]" t/ i: y2 ?
  11872.       )
    8 ^1 L- f( V; F. O% p) `7 i
  11873.       (setq sortlist (reverse sortlist))* P6 N* n: {2 x8 X- K& w
  11874.     )
    8 U) p3 \( q& |* W0 j$ N
  11875.     (set_tile "error" "")
    ! ^# G/ M& b. r: \; `1 e
  11876.     (setq laynmlst sortlist)
    ) o; o7 C/ v( U% X1 W! _
  11877.     ;rk
    4 W. P$ A1 O( _( V2 ^3 a; b* b
  11878.     (setq laynmlst (append laynmlst (list "")))     # _/ m. I' ~" o& ^  I

  11879. ' q" _. ]( V7 }5 X$ n) i
  11880.     (setq longlist nil)
    7 j* R5 E$ M# o' s) V$ p6 D8 [% o3 M/ U
  11881.     (setq layname (car sortlist))
    8 x7 ]! q5 D) [8 }9 l
  11882.     (setq layer_number 1)
    . Y1 e& i4 ^% P& U; Z, f" K
  11883.     (while layname
    ) M3 ]; k% V; K% v8 H
  11884.       (if (= (/ layer_number 50.0)
    ( \* H1 O, c+ d! R! C: V$ i
  11885.              (fix (/ layer_number 50.0))8 y2 y1 n* W3 S, ?' B/ ]
  11886.           )
    / v) u; ~8 r& p: K8 ?6 s+ e
  11887.           (set_tile "error" (strcat "Analyzing..." (itoa layer_number)))4 }$ W% r! N5 {, n
  11888.       );if/ B& z, E  T' ]/ i/ f% d
  11889.       (setq layer_number (1+ layer_number))/ N, Q! {, t- q$ R
  11890.       (setq laylist (tblsearch "LAYER" layname))
    5 l1 d  S! l$ u3 m4 X, V6 n: ]
  11891.       (setq color (cdr (assoc 62 laylist)))
    ' |$ p/ W  {, \4 b
  11892.       (if (minusp color)
    % T9 |, Q4 M/ K" g: Q; Q
  11893.         (setq onoff ".")
    " N! r8 _# e3 ^- L
  11894.         (setq onoff "On")* L* j/ H/ J' v/ F
  11895.       )
    0 J- \) ~! N& W, H
  11896.       (setq color (abs color))
    4 G( x9 i, H3 n$ _) }
  11897.       (setq colname (colorname color))
    2 I6 K9 r( ^- ~' j4 X) y- W
  11898.       (setq bit-70 (cdr (assoc 70 laylist)))
    : p- }; d  r/ s) \: u" p, M: H1 i' r
  11899.       (if (= (logand bit-70 1) 1)
    - J6 ?% j3 r4 g# ]* o
  11900.         (setq frozth "F" fchk laylist)1 t9 @5 t) ?8 w, {7 I( X
  11901.         (setq frozth ".")- \" v6 n! T1 A: A
  11902.       )/ o; ?' p$ Z: V4 `2 p& p3 `# z
  11903.       (if (= (logand bit-70 2) 2)
    5 F' i( @, M$ m4 j* S
  11904.         (setq vpn "N")
    " F2 u: F) n( V6 I; l
  11905.         (setq vpn ".")" X1 P, ?6 j! c9 w% x
  11906.       )
    , `7 C7 m" y. {9 A: L0 O* Z* p
  11907.       (if (= (logand bit-70 4) 4): M) s, Z0 x4 d. K( H' B) {
  11908.         (setq lock "L")
    - [; R$ V9 m! @: t' C) H
  11909.         (setq lock ".")
    8 @1 K) s; e( E; W7 U2 g( C, J. d4 r7 z8 {
  11910.       )* E/ n; |( y# O; S6 J. ~
  11911.       (setq linetype (cdr (assoc 6 laylist)))$ V  e( u) o. D; S; u
  11912.       (setq layname (substr layname 1 31))9 N& B, K' s! `1 D
  11913.       (if (= tilemode 0)
    ! r4 f, T# w- h( \; K# v
  11914.         (progn
    3 ?! o9 R# H, Q
  11915.           (if (member (cons 1003 layname) vpldata)
    2 p) D, d( {- k8 G/ P" |1 p
  11916.             (setq vpf "C")
    " {0 H; r8 R, t% E1 o
  11917.             (setq vpf ".")$ g! M/ u! {. M# K6 M
  11918.           )
    0 o  m3 w$ ^5 o  Q: N2 y
  11919.         )  {0 j3 M7 @+ k2 x. e2 t4 V
  11920.         (setq vpf ".")2 j1 z" }, T: u$ E6 [7 j) @
  11921.       )
    & T$ v8 D5 f9 q  Z6 s. ~
  11922.       (setq ltabstr (strcat layname "\t"3 _/ q, p, t( m2 K
  11923.                               onoff "\t"
    ) c: v/ c$ J' x. ]
  11924.                              frozth "\t"
    : g& A, j5 ~, G- f- ]9 s
  11925.                                lock "\t"6 T* g6 w& s- k, q  O
  11926.                                 vpf "\t"% v0 y2 p: N+ E7 G
  11927.                                 vpn "\t"
    . f; R! e) d  T! ]7 W
  11928.                             colname "\t"
    " |5 ?  m) b  f+ Z9 x
  11929.                            linetype, S6 N; g+ D  \" J- E  T' N
  11930.                     )6 u. h* k* I+ _5 f
  11931.       )6 U* z+ y4 P! u$ ^* Q
  11932.       (setq longlist (append longlist (list ltabstr)))
      p( o2 G2 N; b0 S! Z
  11933.       (setq sortlist (cdr sortlist))
    ; H/ b; \! d0 W
  11934.       (setq layname (car sortlist)), F' C% M  l# t# s# n3 k' Q+ t) g4 Y
  11935.     );while  m# q3 p+ [; V/ `8 F
  11936.     (setq longlist (append longlist (list "")))
    : u& }  v, p* X3 p: d" x
  11937.     (set_tile "error" "")
    " @) S+ U' [* u; a4 A  H+ J
  11938.   )
    - D9 E# I, [$ S' n; E$ v
  11939.   ;;
    2 ]9 ?7 j  [; j8 s1 U
  11940.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of
    9 I& `. g9 z% q) j. V" S" x0 H
  11941.   ;; linetype names read from the symbol table.  Mdashlist is list consisting8 ~, e* Q5 A# O8 U& c) j% |/ u
  11942.   ;; of lists which define the linetype pattern - numbers that indicate dots,
    & i3 O' [8 ^" ?, [( k  ^* J
  11943.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    ) c% q1 U: T3 W9 P# p3 Q) `
  11944.   ;; order of names in ltnmlst., R: B& T# s8 A! s6 i
  11945.   ;;
    + E8 G7 r3 p) M, c% E5 X; k0 l
  11946.   (defun makeltlists (/ ltlist ltname)" h  [1 s1 Y9 j1 X
  11947.     (setq mdashlist nil)+ M' }8 o9 d9 S- _
  11948.     (setq ltlist (tblnext "LTYPE" T))
    + N0 Z6 B7 Q2 b
  11949.     (setq ltname (cdr (assoc 2 ltlist))): \4 g- h  w2 s7 Y* b$ S+ z* A! p
  11950.     (setq ltnmlst (list ltname))
    2 r3 [2 G" c3 k/ H9 f
  11951.     (while (setq ltlist (tblnext "LTYPE"))
    : b% A' h" Y2 V+ w6 e
  11952.      (if (not (equal 16 (logand 16 (cdr (assoc 70 ltlist)))))  d! W2 Z# s$ v2 I
  11953.          (progn
    " X! p* y% p4 x  F% n8 j4 ^
  11954.           (setq ltname (cdr (assoc 2 ltlist)))% z& U/ c/ B" W# I+ P$ n0 t
  11955.           (setq ltnmlst (append ltnmlst (list ltname)))" |- l6 s1 X2 R
  11956.          );progn1 J1 B8 e/ ^3 L8 B! v
  11957.      );if ' @8 F; j( g. W% N
  11958.     );while
    0 a3 n) e4 J, M! V. E
  11959.     (setq ltnmlst (acad_strlsort ltnmlst))
      V; R& g6 k" ?9 S5 N+ e. A4 m
  11960.     (setq ltnmlst (append ltnmlst (list "")));add by rk
    3 C9 G3 \) L6 D4 C( O9 ]
  11961.     (foreach ltname ltnmlst; r# k* k# `1 [) T$ f9 n1 S2 C  u
  11962.       (setq ltlist (tblsearch "LTYPE" ltname))5 d/ X% n2 A3 X1 @' Z) B
  11963.       (if (= ltname "CONTINUOUS")
    4 `6 ^% I$ }7 w/ {! x& x
  11964.         (setq mdashlist (append mdashlist (list "CONT"))), Z- o2 X4 C' |! K3 S
  11965.         (setq mdashlist  V% k2 q% [+ J4 x5 L
  11966.             (append mdashlist (list (add-mdash ltlist)))' z$ L6 L! `# j. Y) Q
  11967.         )
    6 a6 b5 f+ e5 \! l0 \  ]& q. o' Y
  11968.       )
    + p" }. ^& C0 i7 g! M+ D, E( }0 e
  11969.     )
      ^  k- }# v9 \' k4 Z( y
  11970.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))! q# g- L% G2 a% U) i
  11971.     (setq mdashlist  (cons nil mdashlist))
    7 t; J) v& c! j6 N* g
  11972.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    0 T# e: H; p# h% I- {4 V
  11973.     (setq mdashlist  (cons nil mdashlist))
    / k* O% {  `* Z
  11974.   )
      u4 u* `& v2 b; u- j
  11975.   ;;, E& f$ f6 r0 W' k
  11976.   ;; Get all the group code 49 values for a linetype and put them in a list- Z, I/ e6 Q) k. [7 d4 [* B
  11977.   ;; (pen-up, pen-down info)3 e% _3 ~9 N8 M0 I1 @8 l
  11978.   ;;
    " L' Y2 I# m. L2 f$ _2 x
  11979.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)
      V' P/ |7 h8 t7 u4 ^; r$ \
  11980.     (setq dashlist nil)
    # E" K* c0 C6 ]: b$ y, R
  11981.     (while (setq assoclist (car ltlist1)). |( q+ Y6 l& c2 C2 `( b8 h
  11982.       (if (= (car assoclist) 49): w) j5 D+ M; }: h
  11983.         (progn% b0 S0 H# S0 Q% G
  11984.           (setq dashsize (cdr assoclist))/ W7 p6 h* a- \5 p
  11985.           (setq dashlist (cons dashsize dashlist))
    ' c$ D6 I5 o" r
  11986.         )
    ) {6 O8 B1 U# U
  11987.       )) _4 n* g7 \! v
  11988.       (setq ltlist1 (cdr ltlist1))
    . q: I* N" k3 m! i5 ?3 E$ C
  11989.     )( Z9 L8 V1 {- j- }0 `. j! H9 `
  11990.     (setq dashlist (reverse dashlist))2 _+ P7 Q) o5 ^: O% }* u" N
  11991.   )% _( D* y9 J, _: V3 ]3 @0 a8 X
  11992.   ;;5 Q% g' j8 o3 X1 B4 X# y! Z. n& h
  11993.   ;; Color a tile, draw linetype, and draw a border around it
      @6 ^+ C2 x5 M0 ]$ q( Q
  11994.   ;;
    9 g: h. ~* G% I+ M$ v) a1 l8 M
  11995.   (defun col_tile (tile color patlist / x y)
    ' I0 ]4 j  V' n5 b7 b* z* Z
  11996.     (setq x (dimx_tile tile))
    # @3 F5 f  `' Y( g- n+ _
  11997.     (setq y (dimy_tile tile))# C1 J& r/ D7 c7 G9 F" r
  11998.     (start_image tile)  e- i% s% g  E! b
  11999.     (fill_image 0 0 x y color)
    2 c. a  h7 h0 h" U5 f
  12000.     (if (= color 7)+ }, S1 ]6 t/ u
  12001.       (progn, y. h4 V# d/ Y" E
  12002.         (if patlist (drawpattern x (/ y 2) patlist 0))6 S8 P  Z3 C2 J, x7 |% R
  12003.         (tile_rect 0 0 x y 0)8 Q& G' e0 P9 g5 |
  12004.       ), u; k$ E3 o: w" K, {8 Y/ j
  12005.       (progn( k/ M* h, D2 v" W2 t
  12006.         (if patlist (drawpattern x (/ y 2) patlist 7))+ t6 C% m/ G- Z/ V
  12007.         (tile_rect 0 0 x y 7)
    , W) _3 }1 x+ [" n
  12008.       )
    ; m6 Q4 t; X' h1 s& @  f
  12009.     )
    $ d' z- x- x, ~5 C6 R
  12010.     (end_image)
    4 O$ R( H2 Z, Z$ w, m! y$ P
  12011.   )
    * R+ E! j3 E+ w
  12012.   ;;9 L7 _9 h  W! S0 _
  12013.   ;; Draw a border around a tile* h; c& q4 s* G( R, d- I
  12014.   ;;
    . o5 @* J6 `/ H+ P1 f* f4 y
  12015.   (defun tile_rect (x1 y1 x2 y2 color)9 @6 M& {4 U4 g  U4 W# p) c
  12016.     (setq x2 (- x2 1))- N2 o) K1 {% J: }- K! ?) L$ z
  12017.     (setq y2 (- y2 1))
    9 E: u& L. v. H: i! Y" g
  12018.     (vector_image x1 y1 x2 y1 color)
      j2 B5 L( C- k& ?/ p; g5 H4 g
  12019.     (vector_image x2 y1 x2 y2 color)+ ?, ]3 K0 S3 ?6 t- k* h9 c
  12020.     (vector_image x2 y2 x1 y2 color)
    ) w9 V, z: c6 d# a  K0 ]
  12021.     (vector_image x1 y2 x1 y1 color)+ N2 O" B* B' g/ k
  12022.   )' ]; r2 A# x1 k% e6 P
  12023.   ;;
    9 j+ T0 O8 o# r, \# _; H
  12024.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image% |/ p1 J* t, L  N, A$ r1 B7 V; i
  12025.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
    * C1 k  E/ J% A$ t; L2 u
  12026.   ;; list of numbers that define the linetype, and color is the color of the% F/ g/ b5 S3 w: s1 y1 x1 M8 }9 [
  12027.   ;; tile.
    $ X& S) A% w% M4 j$ m5 _8 l/ K
  12028.   ;;4 s* O% ]1 h' r7 ~" o
  12029.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    4 p! B. R( D' c! g4 A$ G: M5 Y
  12030.                       patlist dash); V2 S1 w6 E6 g8 n/ J
  12031.     (setq x1 0 x2 0)! H) T& R" t5 Q5 W
  12032.     (setq patlist pattern)
    . v- @% B" ]6 z0 x% b) F8 o, k
  12033.     (setq fx 30)
    + f$ _9 _* M6 T
  12034.     (if (= patlist "CONT")0 o) A2 N9 d  Y
  12035.       (progn( }9 j6 @& P- i% j: f9 @: D& p  ]
  12036.         (setq dash boxlength). {6 h7 t6 B8 `6 `3 v
  12037.         (vi)' [8 V3 K+ H6 W  U
  12038.         (setq x1 boxlength)
    * w+ v3 V4 M, }( f+ p9 @! O: T
  12039.       ): O) H0 n% A2 J( O
  12040.       (foreach dash patlist
    ( ^$ P  X6 O4 t# n
  12041.         (if (> (abs dash) 2.5)
    8 ^* a2 e  q) z3 C) Y3 A" K2 T. L
  12042.           (setq fx 2)
    % `2 R3 W! H6 x6 _  O& [
  12043.         )! A! @* ]& U0 ?+ I5 |
  12044.       )
    ) |* U5 G  j; ]0 X  o* d
  12045.     )% ~' F" U  r! C0 l: L; p3 h
  12046.     (while (< x1 boxlength)
    , c, V: v' [( a: S( i! y6 o, a& U
  12047.       (if (setq dash (car patlist))) ~" P" \  @- O2 b7 S
  12048.         (progn1 R8 p9 m- {, N( s8 V
  12049.           (setq dash (fix (* fx dash)))
    0 d5 ^3 k  {) R( e0 M1 U1 ^5 C
  12050.           (cond
    2 ]0 l9 [" v; O( \! A0 N
  12051.             ((= dash 0)
    2 x. y* [( w7 S6 F% ]+ F5 Y& E2 |6 \
  12052.               (setq dash 1)  m* Y6 Y$ p4 N  l
  12053.               (vi)
    6 ]4 t. M" M1 s7 ~* K, P5 v
  12054.             ). n- Z9 o) u0 C3 B1 S
  12055.             ((> dash 0)6 o+ {7 X8 D! N! F& U. @
  12056.               (vi)/ B4 ]+ F/ W; E8 i9 a
  12057.             )' V8 E/ y7 G1 D3 x6 {
  12058.             (T
    7 Y9 A7 m, u. b1 B3 Y
  12059.               (if (< (abs dash) 2) (setq dash 2))2 t" F2 m  J* j  S" V- S, J, u
  12060.               (setq x2 (+ x2 (abs dash)))
    * E+ P/ \" j, B8 l' f  l( l6 w
  12061.             )  Q. |. {. H  {" h. y* v, O
  12062.           )
    7 r% ^' D/ j  |$ ^3 e. f
  12063.           (setq patlist (cdr patlist)). D3 L6 d9 ?" B6 q. W
  12064.           (setq x1 x2)" g# ]. A: |% `. G
  12065.         )3 m  u5 @! i. u: K
  12066.         (setq patlist pattern)& H  W# i/ m1 G1 }3 H  B
  12067.       )
    8 C6 j' Y/ `; g1 t: V# z/ V
  12068.     )0 ?: r; b; R  f
  12069.   )9 d6 R" F4 c& ?+ v. N5 d" C
  12070.   ;;) }. R3 p$ s& C. T
  12071.   ;; Draw a dash or dot in image tile
    8 d, l$ @4 p0 _  G8 k$ c
  12072.   ;;4 H' @$ ~' p+ @7 _& w- P% e
  12073.   (defun vi ()
    ' D3 Y' r) k% Z- g7 J6 t5 S$ s
  12074.     (setq x2 (+ x2 dash))
    ) i8 ^4 y1 t/ F2 S3 f0 M3 |, Z7 W
  12075.     (vector_image x1 y2 x2 y2 color)
    " f; p& Q# w$ V: ?" z( U
  12076.   ): Q/ b0 p8 ?3 q0 T9 S/ q

  12077. + ~- q/ Q3 U* _& H" t* C+ B
  12078.   ;; This function takes a selection and returns a list of the color,
    / [8 o/ U/ V. K! o8 X* [( |
  12079.   ;; linetype, layer, linetype scale, and thickness properties that; q8 s# x7 V! o* j; ^, N+ U0 S
  12080.   ;; are common to every entities in the selection set - (color
    ( g( O- d/ q4 ^/ G3 O
  12081.   ;; linetype layer thickness).  If all entities do not share the same
    2 c0 D3 n, E. M( H6 j
  12082.   ;; property value it returns "Varies" in place of the property
    4 A5 x" l5 w' L$ n- i
  12083.   ;; value.  i.e.  ("BYLAYER" "DASHED" "Varies" 0)
    8 o" E3 o$ A) G0 E$ H" x" ?
  12084.   ;; The last item in the return list is an integer flag for the$ f3 K: z; V. u$ u" S4 x$ Z
  12085.   ;; homegenity of the selection-set object types.7 p7 F# y" b" }
  12086.   ;;   1 = All polylines
    7 y  w1 L' A/ X; j5 G5 p; v1 t$ M
  12087.   ;;   2 = All text or mtext or attdef, or a combination of the three
    + V; e' i2 w# R/ h
  12088.   ;;  -1 = Any other mix of objects3 l( P& I: g. A8 P1 _" Z" M

  12089. + \0 R' ]& c. ^
  12090.   (defun getprops (selset / sslen elist color ltype layer ltscale thickness4 ]  k+ y/ b7 y8 K+ h
  12091.                           width elevation height go ctr
    9 R  ~& [% B# W  o  j' z: ^
  12092.                           eflag 6 O" b8 z1 k$ Q/ j6 Q+ a3 f
  12093.                           etype temp
    8 `9 W6 n1 x' v" k* g; W% u! v& p
  12094.                           txt_ss     ;;;;rk 11:24 AM 1/30/97
    . p8 k6 y( f' V6 b# l8 l
  12095.                           tmp $ b2 t8 ]$ d5 C8 `
  12096.                           poly_ss   ( P! @! e8 e+ G: W* C0 m  P- d
  12097.                           style
    % d  M0 e0 A& z
  12098.                   )# j$ |5 F& H" K  }0 w8 t" `
  12099. / k+ P% S/ B; Y! [" i# `$ g# s

  12100. 6 }6 K* D& u! G3 C' D( ]
  12101.     (setq     sslen (sslength selset)
    * m6 q' ]! M) I8 z) H
  12102.               elist (entget (ssname selset 0))% V; h! A3 j3 [& S% m1 {7 X* k
  12103.               etype (strcase (cdr (assoc 0 elist))): \. b' q# a3 w* B8 E" C3 c7 l2 F
  12104.               color (cdr (assoc 62 elist))- y/ g, q* e6 }
  12105.               ltype (cdr (assoc 6 elist))
    ' [6 O# |$ i5 e" Z
  12106.               layer (cdr (assoc 8 elist))
    3 u+ C9 i2 \5 m8 b; n* R
  12107.           thickness (cdr (assoc 39 elist))
    ; U6 V  a) g! ?3 D' L
  12108.             ltscale (cdr (assoc 48 elist))
    2 Z( x$ i. ^9 }# E4 {* R
  12109.     );setq
    ( x' D1 s# j% Q7 x0 J: y
  12110. ) B; N5 _3 A( @0 Q8 X6 z( Q
  12111.     (if (not color)     (setq color 256))
    0 b- y( |9 ]9 i
  12112.     (if (not ltype)     (setq ltype "BYLAYER")), Q2 s  Y1 ~  _. e. d' Q) x5 }0 B& A
  12113.     (if (not thickness) (setq thickness 0))3 J. e6 @. D) @, v3 P
  12114.     (if (not ltscale)   (setq ltscale 1))
    % E( Z* q0 k; {0 Q1 p. L7 Y: N
  12115. 7 m* M. ]# D& Y/ E8 r
  12116.     (if (not width)     (setq width ""))
    ; n# n% O2 Y" I2 U4 [7 ?' j
  12117.     (if (not elevation) (setq elevation ""))
    5 r7 o3 s9 ^+ f- A+ [4 p  `
  12118.     (if (not height)    (setq height ""))
    / G. }# F! A1 f8 w5 U; D

  12119. : c( y, Q8 {6 \: R* c
  12120.     (setq      go T
    6 b6 L) F9 ]" {$ \% j
  12121.           chk-col T
    % N4 x* \6 {# y/ S4 }/ h# u! k# s
  12122.            chk-lt T
    " M, s3 o) e. S8 r& P# w/ H* t
  12123.           chk-lay T
    0 }# o! J0 k+ P) N' w
  12124.           chk-lts T
    " @' M  r% L8 _6 ^
  12125.            chk-th T
    5 g* g, z5 `  D( T# Y' a) g
  12126.               ctr 0
    7 M* J& V6 P9 B( L1 V  o
  12127.     );setq
    2 d' r: d3 k, \/ G* ?, O

  12128. 1 h6 s3 [* v$ k) u) J4 q- o& `
  12129.     ;; Page through the selection set.  When a property
    " t+ u$ x, A( V1 [
  12130.     ;; does not match, stop checking for that property.) c/ p+ b  D* J: e
  12131.     ;; When the selection set is not homogenous, stop checking.. o% \" s4 ^1 R3 {8 t. i
  12132.     ;; If all properties vary and the set is not a type 1
    + @2 M; ~1 P' Y( j. z* t0 \
  12133.     ;; (polyline) or type 2 (attdef/text/mtext) set, stop paging.$ h! h+ j3 o. w0 R+ H* q: v: D

  12134. ; z, u3 \% z& P; l
  12135.     ;Lets set the eflag so we know if the selection set includes any
    4 C9 |  l, D: E5 f; j4 i! F+ t
  12136.     ;combination of polylines, lwpolylines, text, mtext or attdefs.5 ~( U# q) L: U. v7 d8 {0 ]

  12137. ) _4 t  u& k. N
  12138.     ;watch out for 3dpolyline and 3dmeshes here! @rk 10:17 AM 1/30/97' C! |" h4 H- s5 o; E7 ]
  12139.     (setq eflag 0)
    2 ^+ ^3 H* }3 r* T  t
  12140.     (if (setq poly_ss
      K- J  m3 H- K- j! I% I/ Z( C
  12141.               (ssget "P" (list '(0 . "*POLYLINE")
    4 s" K) z2 }3 k; d& N6 |
  12142.                                '(-4 . "<AND") / I. ?4 Z- e, I* i
  12143.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 8)  '(-4 . "NOT>")
    ; A3 l5 N% ^* {' U
  12144.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 16) '(-4 . "NOT>")7 Q. B3 Y9 x6 N2 @7 {6 T6 a3 p" C3 e- i
  12145.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 64) '(-4 . "NOT>"); f- n$ F, G1 {6 P
  12146.                                '(-4 . "AND>")
    + p  J7 A% ?5 M4 }
  12147.                          );list5 D, n/ C( k' T  p# }
  12148.               );ssget get 2d polylines (legacy and lw)6 W+ {3 X, b* k) f1 y
  12149.         );setq
    6 }% H9 y& G- h8 I& c9 e2 i5 a7 y& l
  12150.         (progn
    ( Y/ E. b, h$ f( J
  12151.          (setq eflag (+ eflag 1))
    5 d# u. l& y9 V! i, B
  12152.          5 ~  f2 o9 u0 v3 Y$ Q
  12153.          (setq tmp (entget (ssname poly_ss 0)));setq
    9 [4 b9 G# D, ~

  12154. & G3 O  _2 Z" }
  12155.          (if (equal "POLYLINE" (cdr (assoc 0 tmp)))( B' w' n1 L; l6 ]
  12156.              (setq elevation (last (cdr (assoc 10 tmp))))
    ) `8 u1 b! X2 V% S
  12157.              (setq elevation (cdr (assoc 38 tmp)))0 n2 }5 b8 k. q1 p
  12158.          );if
    0 C5 `5 r& z8 I, H* ^( S7 S& V. M
  12159.          (if (not elevation)
    ( {8 o& v* Q; _" @
  12160.              (setq elevation 0.0);setq
    ( D: y% m: {1 }) Q
  12161.          );if
    & G, ]1 s. }: a! G1 t

  12162. + i. R) R7 A& G- E2 }6 c- D& k
  12163.          (setq tmp (ssget "P"
    ' p1 S4 M, |3 }4 n0 Z! _
  12164.                           (list
    - N% |' n6 L/ E+ C4 o# i. G
  12165.                              '(-4 . "<OR")0 n$ g4 _8 C2 ^/ I
  12166.                                '(-4 . "<AND") 1 q# e  e* a# K
  12167.                                  '(0 . "LWPOLYLINE")
    % S# m, v9 E* @$ M. i
  12168.                                   (cons 38 elevation)) S' K+ s! I' j
  12169.                                '(-4 . "AND>")
    2 ?9 O  q1 V! \8 G; x
  12170.                                '(-4 . "<AND")
    + j& n: Y% j9 Z+ i0 `- D9 u
  12171.                                  '(0 . "POLYLINE")
    # R) _1 d5 e2 u! ?+ O" A
  12172.                                  '(-4 . "*,*,=")
    , z$ F: N- r; \
  12173.                                   (cons 10 (list 1.0 1.0 elevation))
    ' w  x. |: |" Y, K$ l# P( I
  12174.                                '(-4 . "AND>")
    ( [: Y1 h( K/ G+ f/ g
  12175.                               '(-4 . "OR>")( ]/ }% K, R6 C
  12176.                          );list
    / S+ l+ T2 f- J" [; _8 Y. `
  12177.                    );ssget
    3 }2 o1 i0 h9 X- x
  12178.          );setq
    / n3 U+ o5 z8 X8 o: P

  12179. / T0 I8 r, f( R0 f! {7 f
  12180.          (if (and tmp
      R) f6 Y( M# O7 A
  12181.                   (equal (sslength tmp) (sslength poly_ss))& z) H4 U9 P. `# O1 T- O
  12182.              );and# f. ?0 V& l& ^9 X
  12183.              (setq elevation (ai_rtos elevation));setq
    2 {; n! q6 i2 `& A1 P
  12184.              (setq elevation "")
    1 u7 E4 _) o8 j
  12185.          );if
    " c* w7 u: T. `* g6 |; |/ J
  12186.          
    5 O. w7 k" X6 Y# V
  12187.          (setq width (pl_width_getter poly_ss));setq- Y: l5 W  T# s0 I# @
  12188.          8 X4 D1 P5 C9 }" a
  12189.         );progn then 2d polylines and/or lwpolylines are in the HHHHHOUSE!
    , L1 Y5 ~" M. l# J% _7 j. [
  12190.     );if
    % }( X/ i( c) D  @
  12191.     (command "_.select" selset "")6 _% Q9 ?9 @, }) ~
  12192.      3 q8 {0 `; q% q* n- P, T  h
  12193.     (if (setq txt_ss   Y7 M& q" ]+ y3 Y. h
  12194.               (ssget "P" '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT")
    ; Y0 {. [( C- I: W  |
  12195.                            (0 . "ATTDEF") (-4 . "OR>"))2 f7 D/ W% f& ~* e! n0 n4 _2 N
  12196.               )  , c) w3 }0 h+ ]- w
  12197.         );setq9 [0 k3 t( k" [1 [0 V: ?1 o
  12198.         (progn# j" H$ y% {- W9 [6 n: ~: I+ M
  12199.          (setq eflag (+ eflag 2))
    ( Y: t5 F. |; [7 q) P
  12200.          (setq height (cdr (assoc 40 (entget (ssname txt_ss 0))))
    ' S/ ~9 _# R8 A/ ~" P( f
  12201.                   tmp (ssget "P" (list (cons 40 height))) 5 z1 n0 ^" \: R& V' \1 e/ ^
  12202.          );setq
    0 _" R, H5 H5 N, t
  12203.          (if (and tmp
    7 l& j8 p4 O4 g
  12204.                   (equal (sslength txt_ss) (sslength tmp))                    
    ( [2 N$ E3 J% W% c. `. G, j# A
  12205.              );and$ O( S; C& d% m1 l% ^1 a4 A3 t
  12206.              (setq height (ai_rtos height));setq  ;@rk need to translate from float , t$ s6 y1 `, [: W. B* ^" [- W9 Q
  12207.                                                    ;to string and back again easily
    * N0 L. u- n. B% Y' L9 O
  12208.              (setq height "");setq else the height varies
    % R" l: I% g1 f
  12209.          );if
    + x' W$ Q& s; P2 R
  12210.          (command "_.select" txt_ss "")
    - g4 L8 ?: `* r+ d# v3 T$ H; Y
  12211.          (setq style (cdr (assoc 7 (entget (ssname txt_ss 0))))
    5 k+ ^1 p# s7 Q( U
  12212.                  tmp (ssget "P" (list (cons 7 style)))
    - N0 X2 G3 e. ~) P0 L; J& j
  12213.          );setq
    * P" J/ n8 T5 e2 a
  12214.          (if (not (and tmp2 Y+ B! T; L8 k0 g- `8 u: j; x( @1 B
  12215.                        (equal (sslength txt_ss) (sslength tmp))                    ; t$ i) r7 Z, K
  12216.                   );and: u5 f6 L$ T; m
  12217.              );not: }6 }9 V2 w2 n- }+ \! F$ u
  12218.              (setq style "");setq then the style varies 2 G, ]- ~% y7 `/ p5 D8 ?- k
  12219.          );if
    / H2 @' Q, d( ]% s1 k) @2 l# e
  12220.         );progn the text type objects are in the selection set
    0 I/ F2 J7 l5 W" G" h# A
  12221.     );if
    - N. l$ B9 h. L9 j" ?3 f* v
  12222.     (command "_.select" selset "")% i! u2 L; W5 \4 G/ \' D# w" ?
  12223.     / g+ e( y/ {) p4 ~9 C( a
  12224.     (while (and (> sslen ctr) 2 P6 ^) ^% I' M
  12225.                 go# o2 w; `' s4 C( m
  12226.            );and; ~! {" z1 H  T$ y! F7 f( m7 ^
  12227.       (setq elist (entget (setq en (ssname selset ctr)))). f/ J1 j  r1 E

  12228. 0 ~( c/ _; j$ K7 d9 O4 R: `
  12229.       (if chk-col (match-col)): l$ h( W, K- v9 V
  12230.       (if chk-lt (match-lt))
    ; Z5 i2 I* `; B7 @5 Q2 w
  12231.       (if chk-lay (match-lay))2 @( L' ]1 T* e
  12232.       (if chk-lts (match-lts))* P4 M6 v) e( p/ c4 L. g8 g
  12233.       (if chk-th (match-th))- Y: s& H  U# [9 S7 o6 Y8 ^

  12234. : ~, C' i3 z6 M" \: T, M
  12235.       ;(if chk-etype (match-etype))
    . D) g, E8 R7 ^6 l0 X; a/ g

  12236. 0 i" e% ~& O/ E0 d% z1 Z
  12237.       (setq ctr (1+ ctr))
    ; v5 c& K) m* j& ^# }
  12238.       (if (and (not chk-col)
    0 C  `( V$ H/ o' g4 Q7 f
  12239.                (not chk-lt)" S5 _' `, x. q: @
  12240.                (not chk-lay)9 U+ i6 d- E- }: H6 B
  12241.                (not chk-lts)
      y% o- N* x; x) E/ b; y" C
  12242.                (not chk-th)
    . f6 W) {* b' c
  12243.                ;(not chk-etype)
    7 \  V# }1 U4 J4 K
  12244.           );and$ j- f* l+ Y( m( B+ i9 d& w
  12245.           (setq go nil)0 y7 P1 c) U9 a
  12246.       );if
    ) B8 p5 Y9 `/ J8 u0 K/ B! T
  12247.     );while
    & T: u9 a7 k" G1 Z' A% T
  12248.     1 o- w6 S! {1 ]7 D" j2 Q
  12249.     (list color ltype layer thickness ltscale, F) ]3 L5 C- u0 o, _/ Z
  12250.           width elevation height eflag 6 ^9 n/ Y* O' s" [( V( R  f
  12251.           style poly_ss txt_ss; U! B" _: X- G3 j9 V
  12252.     )
    5 d* z) E1 i% a' r$ T/ F5 i
  12253.   );defun getprops
    # ^$ j  ~# f7 L5 S9 u! ?& d
  12254. 4 A! s7 R# h* I/ _" ]
  12255.   ;  This is a speedy little routine to tell whether the polylines in   i6 c' d6 Z1 g& U: q- E; ^  A
  12256.   ;the selection set argument are of varying width or a constant value.   d* m' G. d1 D9 @4 e
  12257.   ;Looping through the vertex's has to be done for old polylines when / v* Q/ u2 v! j
  12258.   ;the polyline header has width values of 0.0. Basically, in this case,
    ! t. i" G9 }2 j, l' [7 y/ L' ~
  12259.   ;information in the polyline entity header is abmiguous. Width values
    / G( {2 }+ I- E
  12260.   ;of 0.0 in the header entity could mean the polyline has a constant 4 S# ]) m4 t- K8 y
  12261.   ;width of 0.0 or it could mean that the polyline has vertex's of varying
    6 k5 R8 \' ^" g! a9 a5 P
  12262.   ;width.
      a! {& C) m: O) H
  12263.   ;
    ' v' ?2 k* f# g, |0 d4 F: y( [: b* `$ S
  12264.   ;  It's all in wrist. Err a.., I mean it's all in the 'if'. L5 a! T" l  x7 a; G, l3 ?
  12265.   ;;4 j7 I6 b' k# }3 [- D9 T
  12266.   (defun pl_width_getter ( ss / ss2 ss3 n na e1 width width_a width_b flag flag2)
    8 H& f6 s$ V5 o7 V7 @# J" l' [

  12267. - G& W7 s5 B' H% X5 [
  12268.    (if ss 4 m  w9 T( h2 U5 n! {( C* N9 t
  12269.        (command "_.select" ss "")
    * C: A  G  N3 g
  12270.    );if$ I6 M  W+ |- d8 }7 ~/ N) _! g
  12271.    (setq width ""$ e: B% Q; K" `3 H
  12272.           flag nil
    7 F8 C. W& [* G6 `8 h  w9 i
  12273.          flag2 nil, I. v  p. Y* C0 J8 i, F! b
  12274.    );setq2 g& v0 V( N% G" E+ p! f% ]
  12275.    (if (not
    : U8 b" e# P8 ~" O3 `
  12276.          (and ss# L7 v. q) U0 Y% |" Z) R
  12277.               (setq ss2 (ssget "p" '((0 . "LWPOLYLINE"))));setq
    ( E, R- _- I0 u
  12278.               (setq    na (ssname ss2 0)
    ( h( a; e2 B$ Y% C: |* c
  12279.                     width (cdr (assoc 43 (entget na)))
    , c' C4 w( c0 t8 K- }) j
  12280.               );setq
    4 X# X/ b! K+ e
  12281.               (setq ss3 (ssget "p" (list '(0 . "LWPOLYLINE"), o. o6 F2 C! a
  12282.                                           (cons 43 width)9 e2 S+ ]$ \( ^  [' S& f* d
  12283.                                    );list
    # B+ r* V4 u; j1 V/ I& y
  12284.                         );ssget$ a, x- P# l! ~, l( M. @3 u
  12285.               );setq
    8 l+ c! x6 h( s' w; [$ W& o* o5 |
  12286.               (setq flag T)
    5 W, y; O9 {) B2 G
  12287.               (equal (sslength ss2) (sslength ss3))
    0 G! t( |$ _# q% J) |) T% }
  12288.          );and
    6 s6 a# Q2 f0 {
  12289.        );not2 Z  B2 P, R' A
  12290.        (progn
    ( c% z' g1 d; p1 H
  12291.         (if flag' r( I4 s' |3 j$ g% Y' V
  12292.             (setq width nil)
    ; ]& I2 v$ w: l8 N  }, ~! Q/ x' u2 }+ D
  12293.         );if
    $ @, V! {. u! Z9 }8 I# e: H
  12294.        );progn
    7 C/ n2 a  p- W. `2 c4 p1 r( c
  12295.    );if
    . N- K" P* P! U2 J; Q! j
  12296.       
    9 a9 F* }+ |6 t! B* ^
  12297.    (if (not
    & @% q0 z/ W+ i0 G( Q
  12298.         (and
    0 S. w5 ?3 x6 S8 c  w
  12299.              ss
    ; J' @) P! B$ p% ~5 p* L' U: W  @' o
  12300.              (progn (command "_.select" ss "") ' M' M# n; R. A2 b* J
  12301.                     (setq ss2 (ssget "p" '((0 . "POLYLINE"))));setq
    " y3 P  `; i* j% V1 K; P1 [/ _
  12302.              )
    ' Q% \3 @# k5 ?" Q) C
  12303.              (setq      na (ssname ss2 0)! `6 L9 @. ^! @9 X
  12304.                         e1 (entget na)$ d9 ]8 m0 @( N6 ?7 T9 r
  12305.                    width_a (cdr (assoc 40 e1))) T8 F) d) V$ t+ a
  12306.                    width_b (cdr (assoc 41 e1))
    9 c( {/ O4 S/ o5 A
  12307.              );setq2 n+ Y( Y* R' o; Z/ N/ {$ T5 ~
  12308.              (equal width_a width_b): D5 n' H$ q' a
  12309.              (setq ss3 (ssget "p" (list '(0 . "POLYLINE")8 U0 q  m( o' {# \2 m1 ]4 j' ?+ \0 m
  12310.                                          (cons 40 width_a)
    % n' t2 W- L( j8 Z, M8 Y
  12311.                                          (cons 41 width_b)
    . t! W6 W) \2 h8 }
  12312.                                   );list
    " x) M: A1 O$ b  ^( }
  12313.                        );ssget7 O2 O' d) D, f& m) S' B4 G
  12314.              );setq1 W/ W/ B- k1 Y; X
  12315.              (setq flag2 T)
    - ?. y7 t( ?3 _
  12316.              (equal (sslength ss2) (sslength ss3))
    / ?, }, M' W- G) }
  12317.         );and
    ) T% r- h3 q( Z8 M+ i
  12318.        );not
    ) k1 ]4 X, s; X- Z- D
  12319.        (progn
    9 \* f5 b/ S7 e3 B0 [
  12320.         (if flag2
    1 K" u" s, V. i, t( v/ I: x0 l
  12321.             (setq width nil);setq  S5 n  R, r2 ~0 O, l* r" g
  12322.         );if
    / j( u- J& `4 E0 I
  12323.        );progn then9 v, o1 ]/ j3 W# ?$ l7 F) M( t0 z$ `% A& W
  12324.        (progn
    1 i/ a( d' n9 G3 |( Y( u
  12325.         (if (or (equal width "")4 R1 y$ i+ l4 L! F+ J
  12326.                 (not flag)6 N6 b+ b1 |; X3 r: L, C+ ?0 j0 K
  12327.             );or
      ?# R# l6 Q, h7 T  {& \* k4 p3 `/ f
  12328.             (setq width width_a)
    ) k  I# C4 f* B7 r! v5 h
  12329.             (progn8 ]# ~  G" \2 M2 ?9 V% E
  12330.              (if (not (equal width width_a))
    : Z+ v) ^+ c+ h/ t5 d: ]$ D
  12331.                  (setq width "")4 g) a! \2 c8 e2 W
  12332.              );if  3 U& K. V8 p0 h, z; ~- _' [9 ~+ \/ D
  12333.             );progn
    $ }% |" x( V. V0 _# ?
  12334.         );if
    + L% h" P  V4 c7 v2 y7 W: `
  12335.        );progn
      ]6 E! I7 O7 p+ g' |
  12336.    );if1 R9 `/ Y% I% G
  12337.       0 S$ X: q5 ?( b/ e+ @: j  R: K
  12338. 4 s* k0 B: q: _, |! ^+ }
  12339.    ;now for the special handling for old polylines
    ! l0 N+ |6 Q  x- X& J: h4 _  _) I
  12340.    (if (and width 9 V% w; D' X5 q# [- |9 B5 A
  12341.             (equal width 0.0)7 P# }* J& D! ~! r4 d  k
  12342.             flag2: J& n2 q- k& U' [: T; c
  12343.        );and
    9 E! J: E6 e0 ^9 q" L  J
  12344.        (progn6 k) z6 d; f0 z  D+ E! {
  12345.         # t) i1 A, X2 o# `' t
  12346.         (setq n 0);setq3 V+ S" r3 d/ M# l( E" F
  12347.         (while (and (equal width 0.0); x) o* V% i# F% f* \' z
  12348.                     (< n (sslength ss3)), A' O- V' m, W2 ^! Q
  12349.                );and  N9 j* L4 Q6 W* w
  12350.          (setq flag nil8 k) i8 o) L8 N/ k3 v7 M8 L
  12351.                  na (ssname ss3 n)
    * k7 b0 @- {1 `/ c8 I1 N
  12352.                  na (entnext na), ~5 Q) f, y$ \( h' w8 D) B
  12353.                  e1 (entget na)& m$ b9 H! p1 O% q! u0 O2 @
  12354.          );setq- i, _! ?- C! s8 D" O8 ~
  12355.          (while (not flag)+ [5 o, t: P' p/ R" k; S
  12356.           (if (or (equal (cdr (assoc 0 e1)) "SEQEND")# I1 q, [$ Y* V$ o; \" U& S
  12357.                   (not (equal (cdr (assoc 40 e1)) 0.0))
      S+ {. e' _1 A) v& @# c6 \
  12358.                   (not (equal (cdr (assoc 41 e1)) 0.0))" E( {8 }; p$ ?$ ^+ J
  12359.               );or% e$ k- ^! |1 {9 C5 g
  12360.               (progn
    3 x! D' M# G" {  X' b! v* S
  12361.                (setq flag T);; X% E% o* Y, T- S+ W+ W
  12362.                (if (not (equal (cdr (assoc 0 e1)) "SEQEND"))
    8 B0 }, g- g8 l
  12363.                    (setq width nil)
      _* P+ j& P( N5 W
  12364.                );if& \$ w1 q7 b- v1 ]3 \) B/ ^0 O
  12365.               );progn then jump out of the loop
    * \2 p1 n+ U) y3 F% I* t
  12366.               (setq na (entnext na)
    2 |* R4 n% p! f: Z+ w2 m, z
  12367.                     e1 (entget na)
      s& T" }' C. `5 l! L; r$ \
  12368.               );setq . Q8 H8 p6 q# e, |4 L2 h8 x
  12369.           );if
    ) A- ^/ g) i/ F
  12370.          );while
    $ F9 \! P) b1 f7 E5 K4 W
  12371.         (setq n (+ n 1));setq  1 F9 o$ @' Y/ q+ G: j. f# G
  12372.         );while ' V. E0 D5 `! R0 ]- `
  12373.            
    ) C% ^6 _2 ^- }$ O" ^! r
  12374.        );progn then it's a legacy
    4 d- d& p0 D( C
  12375.    );if    ;legacy polylines that may have varying widths  
    ; T% V5 k+ T. G7 E7 w
  12376. ' T# x* c; S$ j: {5 L2 g
  12377.    (if (not width)2 [! ~, r& ?1 ^& ]5 m6 e
  12378.        (setq width "");setq) Q0 N0 j. b5 a
  12379.    );if
    ! P9 G8 n/ Y6 a8 R
  12380.    (if (not (equal 'STR (type width)))1 X% A1 ?0 A4 ]* J. E6 }1 M
  12381.        (setq width (ai_rtos width));setq 8 V7 A9 P) J6 @1 g7 O. q  U8 h
  12382.    );if
    $ ]) n% K1 S, S1 R$ H5 s. A% i1 G" x
  12383.     ! J# D' x& D, a/ q: T' s' r( J
  12384.    width   7 K2 s. s' d, m5 c
  12385.   );defun pl_width_getter6 M2 t) ?* n4 O0 g5 b) M

  12386. ! H, Z) a3 v3 `& j2 S
  12387.    
    , s7 Q/ u' _  M$ l
  12388.   (defun match-col (/ ncolor)
    $ G! s" L5 u$ _) N! J& t, \& ?
  12389.     (setq ncolor (cdr (assoc 62 elist)))
      z6 X9 z* f' A6 a; z
  12390.     (if (not ncolor) (setq ncolor 256))' r5 r1 k: K5 t4 n
  12391.     (if (/= color ncolor)
    7 P% X$ \5 ?' e% D& M* P: ~/ R
  12392.       (progn
    $ N4 t) e/ ^& o5 M! n# V/ Z& T
  12393.         (setq chk-col nil)! ~7 R/ b/ L6 ~
  12394.         (setq color nil)
    0 ?3 d, r3 w7 l, g
  12395.       )
    2 w8 k1 w9 M3 ^& e. i. G" _
  12396.     ); [  m1 j! s& t! I3 o" `0 R, Q
  12397.   )
    ( f8 a1 z* K& I. q! P
  12398. + {9 y& S$ b6 C
  12399.   (defun match-lt (/ nltype)  L, W5 w8 ]* v6 m7 r2 M; j; f% x. y
  12400.     (setq nltype (cdr (assoc 6 elist)))
    0 f9 a! H% ~5 E
  12401.     (if (not nltype) (setq nltype "BYLAYER"))
      a3 n6 ^3 g/ I/ u
  12402.     (if (/= ltype nltype)
    / l+ O7 [6 d8 }2 ]1 E
  12403.       (progn9 u  y+ r2 l# i+ x) ]2 u
  12404.         (setq chk-lt nil)
    $ @5 n$ T, F; T* U, z
  12405.         (setq ltype ;|MSG0|;"Varies")- R4 l6 j5 [; P2 o9 X
  12406.       )
    , j0 v+ }* {% f/ I, L% D
  12407.     )
    ' k( J. J: S7 E* Y" E' N, a
  12408.   )( X- w# z3 D. s: i1 X
  12409. 9 s# ~1 E/ R7 {; Z& b
  12410.   (defun match-lay (/ nlayer)
    / u9 O2 W2 h7 f4 L6 a. X
  12411.     (setq nlayer (cdr (assoc 8 elist)))3 n& J- ?3 J7 X+ ]
  12412.     (if (/= layer nlayer)
    2 l& t. h1 P3 X. A& W/ M( Z
  12413.       (progn! a+ N8 H1 b. X
  12414.         (setq chk-lay nil)% g9 O6 w& c: t) O, p+ l5 R" {
  12415.         (setq layer ;|MSG0|;"Varies")2 a7 j7 A; D0 p: v6 D  y. L
  12416.       )7 r" v3 ?4 d! g0 M; ]
  12417.     )
      I: j! z, e3 A6 j
  12418.   )
    / s1 J! ^6 P5 l, l% _9 x5 H
  12419. 7 ~8 p% j# ?: E! p3 e2 y0 i- e$ o: g
  12420.   (defun match-th (/ nthickness)
    5 v' ?. s7 b8 c( a# L$ I
  12421.     (setq nthickness (cdr (assoc 39 elist)))
    5 i% W) l. D# o
  12422.     (if (not nthickness) (setq nthickness 0))
    ) ^# M/ x( L3 V
  12423.     (if (/= thickness nthickness)7 x# e4 P% v2 ^% A8 M) v1 Y
  12424.       (progn% I" I: h2 J* C3 ]2 K
  12425.         (setq chk-th nil)
    5 H0 j6 G% }4 u( Q3 c( N  S6 W& R$ B1 ?
  12426.         (setq thickness ;|MSG0|;"Varies")& o8 w1 l( m+ ?- k) N
  12427.       )  O" \2 {. u$ `- W8 y- ^! _
  12428.     )
    % a5 M) M$ a) q* \+ z
  12429.   )
    4 I! Y7 I7 ~! U+ p

  12430. / C$ n; Y0 G) z
  12431.   (defun match-lts (/ nltscale)6 Z4 C% U; v, U' O' o9 k; `$ s
  12432.     (setq nltscale (cdr (assoc 48 elist)))
    # C4 g1 k) T1 h2 I! w
  12433.     (if (not nltscale) (setq nltscale 1))
    ! X8 s3 s& A$ a% |
  12434.     (if (/= ltscale nltscale)* }4 @! V. i7 }' j. ?+ i
  12435.       (progn4 N6 l  {% J* I/ V/ R3 `8 J
  12436.         (setq chk-lts nil)5 h: g: M: }- D/ R  Q/ |0 O1 F
  12437.         (setq ltscale ;|MSG0|;"Varies")
    : r8 ]( E  V1 J$ ^6 a
  12438.       )
    . g4 }3 h- d0 E' M8 \! ]1 n% Y
  12439.     )
    " J/ i2 z: k: f6 Y
  12440.   )
    4 O  A( S1 `# K% z
  12441. ( V5 n) {- v$ A' n) D6 e0 ~
  12442.   ;;6 ~! C! x+ P8 s. z% G7 z0 Z
  12443.   ;; If an item is a member of the list, then return its index number, else
    ! [- J' i8 ~' C1 I! e; @! t% a
  12444.   ;; return nil." C1 p& M" d% ~& D5 T5 \- Q5 ]! D
  12445.   ;;) P4 m3 `( L  R9 ?
  12446.   (defun getindex (item itemlist / m n)+ Y% u. R$ C( D& f6 n
  12447.     (setq n (length itemlist))
    4 d0 h2 p' F& F& z$ U
  12448.     (if (> (setq m (length (member item itemlist))) 0)/ T5 x2 s2 N/ t( \; A+ {: Q
  12449.         (- n m)
    0 O% P( K* U* @3 h5 ~3 [6 t
  12450.         nil/ w  n& b+ l( V- f! }) n, @
  12451.     )) ]' K5 w0 D4 J
  12452.   )5 Z3 G; b) O( A5 c# I) i
  12453.   ;;
    ( V- ]) B. z. i* W
  12454.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    4 y. l+ k6 P1 Y7 h' |: _' n
  12455.   ;; ltype of the layer so it can be displayed beside the linetype button.2 c" _6 z1 {# ]/ L
  12456.   ;;
    & S5 s5 _% h& m/ ]% a
  12457.   (defun bylayer_lt (/ layname layinfo ltype)/ A6 I& d1 q9 D5 c! {7 ~
  12458.     (if lay-idx" ~- s4 v8 a9 m0 J- R5 T
  12459.       (progn& C& Y0 C8 c' m, J
  12460.         (setq layname (nth lay-idx laynmlst))5 d+ P) t. p/ N- H/ Q
  12461.         (setq layinfo (tblsearch "layer" layname)). K4 R' i3 ~% @5 q* L9 r
  12462.         (setq ltype (cdr (assoc 6 layinfo)))
    ( ^9 X4 Y5 N/ H% ]( O; D# @0 V1 x; Q
  12463.         (strcat "BYLAYER" " (" ltype ")")
    " S3 y/ U. r  N$ {( x& D2 S
  12464.       )/ R9 q$ F8 F: V- R
  12465.       "BYLAYER": t" ?5 e8 f. T: I+ E% ~
  12466.     )8 o' Q1 s+ d- M( k) a
  12467.   )
    0 f: \7 {) J" x1 T9 _' H
  12468.   ;;
    9 ?3 m# n5 x* t2 N+ y6 b' Y
  12469.   ;; This function is called if the color is set "BYLAYER".  It finds the
    " f; M+ u! g9 t& u- s3 n
  12470.   ;; color of the layer so it can be displayed  beside the color button.
    7 h6 m: U0 {2 N; c* K4 P
  12471.   ;;; c% |3 O7 f4 o8 J& w( M+ C5 h& f
  12472.   (defun bylayer_col (/ layname layinfo color)6 V# P3 Q, I" e
  12473.     (if lay-idx" r$ m& P) v  i5 ~: s+ C
  12474.       (progn
    1 O2 Y6 f1 z# R/ k7 D
  12475.         (setq layname (nth lay-idx laynmlst))
    6 a2 H; Q2 G) J4 A5 {* Q; j# h
  12476.         (setq layinfo (tblsearch "layer" layname)): ~- P$ k% n: Y6 h9 ]: `7 n  X, j% |
  12477.         (setq color (abs (cdr (assoc 62 layinfo))))
    7 E. N+ t% c' J! ?7 h7 K
  12478.         (setq cn color)
    ( l  ?' r: A" ?
  12479.         (strcat "BYLAYER" " (" (colorname color) ")")% O/ E1 a3 j8 K; Z! |8 T
  12480.       )
    & p% ?  ?2 N* ~' E6 W# W' A. q
  12481.       (progn
    ( ~$ L. O( K4 v, |" ]) I
  12482.         (setq layname elayer)
    & R: S+ Z& x! X3 T0 A: D
  12483.         (if (and (/= elayer "")
    8 q1 q4 \# ~9 s% f1 C
  12484.                  (/= elayer "Varies")8 W1 ?: f9 ]1 O4 G. h9 s' U
  12485.             );and
    # G+ Y" K3 l7 P2 y9 O% {
  12486.             (progn
    5 h: c. r$ d4 C
  12487.              (setq layinfo (tblsearch "layer" elayer))
    0 I: p) Q& M' N/ ?
  12488.              (setq color (abs (cdr (assoc 62 layinfo))))
    5 h& p( A# u1 Y9 x& T) O
  12489.              (setq cn color)/ d) ~5 r8 C( g. d/ B& [
  12490.              (strcat "BYLAYER" " (" (colorname color) ")")
    $ \5 X: T$ Y6 s! ]% g" x
  12491.             ); {% e: x% J; ]6 t# A+ N/ e* c
  12492.             (progn1 K7 a7 O& P- U$ O; u# }
  12493.              (setq cn 0)
    " ?: r8 P6 L/ u, P( B' _; m
  12494.              "BYLAYER"' ?9 E3 g7 L1 A: j9 k4 Y& h8 f, }% C
  12495.             )& {& ^, U5 L) F( m- P( I
  12496.         );if
    + i5 l# y  L( D+ p
  12497.       );progn$ l8 U, n' I* z4 _3 H! I
  12498.     );if5 p5 ~! w8 M" S" }+ f  Q
  12499.   ). h9 B2 {3 U8 ]( y& ~8 t
  12500.   ;;! y* A, N1 J4 u7 O4 H  L; \8 u; ~
  12501.   ;; If there is no error message, then close the dialogue. u& o, B3 L) K4 c# K7 a
  12502.   ;;
    / a, n/ R5 f% t# F  u0 ]
  12503.   ;; If there is an error message, then set focus to the tile6 {* x/ O& s) i4 I$ {. W* p
  12504.   ;; that's associated with the error message.
    . _+ U6 D" Y2 v) P6 M% x- ~: B
  12505.   ;;7 L- f; ?) R2 G# H6 ]; L
  12506.   (defun test-ok ( / errtile)
    0 c1 P, S$ E5 W  y1 h/ T$ Y
  12507.     (setq errtile (get_tile "error"))
    7 f! K) I2 x% ^) s* z- M# @& E/ W" i
  12508.     (cond
    - J/ g$ R  e0 f- I) z* _
  12509.       (  (= errtile "")
    * L  t* e1 y0 N+ J4 t/ E" J( @5 A' v
  12510.          (done_dialog 1))
    # l, e9 p' j  U
  12511.       (  (= errtile "Invalid thickness."); t: n( V5 j, w6 C0 E- p" o* i7 p
  12512.          (mode_tile "eb_thickness" 2))$ e9 B" {$ n' B- p
  12513.     )" @0 X+ I" v# `/ i- s* Z; F# Q( S* k
  12514.   )& ~; }# p& |# n8 ~3 X8 @9 O8 X
  12515.   ;;3 }  d0 S  u7 q1 B9 d/ b3 u2 V
  12516.   ;; OK in main dialogue., C8 T2 Q; n8 ]. \! g6 t# v
  12517.   ;;/ Z6 {' i* P$ E' B4 n2 h/ h
  12518.   (defun test-main-ok ( / flag)
    * @( d0 ~7 \- s2 ]1 O
  12519.    (setq flag T)
    . l( P$ T- B+ n* y) M& s4 f
  12520.    (if (not (or (distof (get_tile "eb_thickness"))
    ' G8 f1 N4 @- ?8 R& }1 V- c" f
  12521.                 (= "" (get_tile "eb_thickness"))
    0 w, L1 Y$ [+ e5 J
  12522.             );or
      M" R7 z) g% J# B. Y2 Z6 l
  12523.        );not
    + h5 [' P& i1 q) C# g; Z" ^
  12524.        (progn& T4 m" e9 h% S# z9 N- F
  12525.         (set_tile "error" "Invalid thickness.")3 l( n) B6 y% y$ z
  12526.         (mode_tile "eb_thickness" 2)4 l' |5 \' h$ j8 _8 k) j3 a
  12527.         (setq flag nil);setq
    : ~. X2 R$ y' I
  12528.        );progn5 H7 o! T9 p. c- H5 w8 Q
  12529.    );if
      z" b2 w, c- R* ^4 H
  12530.    (if (and flag
    2 x7 {9 S. y5 a; ~: r! G
  12531.             (not (or (< 0 (distof (get_tile "eb_ltscale")))" D0 Q  _& Q$ s6 x1 p; u' t6 a& I- B
  12532.                      (= "" (get_tile "eb_ltscale"))7 A; w) N4 [9 x/ d& M( A- g& }
  12533.                  );or      
    8 c( j( [0 W$ z  Z/ R/ A2 X
  12534.             );not1 L# U3 e7 I1 \" X. M' }; x
  12535.        );and
    , i* e2 y+ j6 |" w
  12536.        (progn
    ) n# l  f& k6 O; |: n9 B
  12537.         (set_tile "error" "Invalid ltscale."); B0 Q7 i5 j/ Z9 ^/ u
  12538.         (mode_tile "eb_ltscale" 2)
    3 T" N9 F/ G) a
  12539.         (setq flag nil);
    , g7 g5 D% n  E9 v  K
  12540.        );progn then9 ^1 k6 a+ Y* z* N0 L) l
  12541.    );if
    7 X6 {3 F; K! a& V; W2 x' O6 Y
  12542.    (if (and flag( S. S  J0 f, s7 O6 k* C" I
  12543.           ; Don't test the tile's value unless it's enabled.- M$ F6 V- B- Q8 A
  12544.           ; We're not set up for the display-only value' @* B5 \* H: m1 y, f8 q# A) L
  12545.           ; of "" here in the error handler.
    , x6 @; l7 |4 W
  12546.           (= 2 (logand 2 eflag))9 Y& o, g8 m+ y: _+ i1 g8 Q
  12547.           (not (or (< 0 (distof (get_tile "text_hgt")))
    3 x+ m: J: o! ?  q! l8 U9 [
  12548.                    (= "" (get_tile "text_hgt"))3 D' D3 n; J( E- ~' Y9 D
  12549.                );or
    7 a0 L; C& P- o6 x1 c! H2 O* Q: K
  12550.           );not
    ( W; {! w9 d: S6 h$ Q
  12551.         );and
    ; M2 N3 K# }: _6 `, Y# z
  12552.         (progn; }& o6 H* g+ v! e; C  S" g0 V$ ~
  12553.          (set_tile "error" "Invalid height."), ~" @0 g3 }' a; x/ r5 L0 D
  12554.          (mode_tile "text_hgt" 2)6 c8 L9 J- h/ @. N8 k8 s
  12555.          (setq flag nil);6 b2 L) }9 ^0 J- E2 h7 a1 T
  12556.         );progn then2 q, J  L/ @/ a: Q% E# O
  12557.    );if* n, q7 k2 W8 _( a! N& }0 T
  12558.    (if (and flag% S, q3 X% P' ^! _3 S
  12559.             (= 1 (logand 1 eflag))( P) P3 J# E' s3 D2 Z, s
  12560.             (not (or (<= 0 (distof (get_tile "poly_wid")))$ O- @  U& E3 v$ O
  12561.                      (= "" (get_tile "poly_wid"))& q  Z2 V# j1 D
  12562.                  );or7 e( O" G1 O; ~# w
  12563.             );not& u3 v0 D8 V- r0 y
  12564.        );and
    + d" ]* N! Y9 S
  12565.        (progn7 W7 d/ M  j4 M* y2 q
  12566.         (set_tile "error" "Invalid width.")
    3 H: P5 I- r" H! d0 F
  12567.         (mode_tile "poly_wid" 2)) Z7 g# J$ L$ b/ F
  12568.         (setq flag nil); m3 Y" O* e' A. {4 N( h) p$ b
  12569.        );progn then* J# E' T2 y6 Q6 G4 E$ u, ?
  12570.    );if
    7 s) o8 ^8 }1 x; i# X' h' }
  12571.    (if (and flag: U7 J; q  @' V
  12572.             (= 1 (logand 1 eflag))
    8 ^6 z5 X# t3 P# ~5 [/ F
  12573.             (not (or (distof (get_tile "poly_elev"))6 E4 I! g- o% F4 e9 W$ \
  12574.                      (= "" (get_tile "poly_elev"))
    " I1 ?# [( U$ N+ D4 T2 q
  12575.                  );or6 z. q- M, W  b' ~. U
  12576.             );not
    $ ~" y8 _  X1 @, I
  12577.         );and
      ]2 x- T* q" ^# U& F
  12578.         (progn
    8 I5 _" w! B3 C) h9 |1 T
  12579.          (set_tile "error" "Invalid elevation.")
    - _+ V9 a5 U2 t4 o. J* Z' v
  12580.          (mode_tile "poly_elev" 2)
    ; |6 i; F. e7 T
  12581.          (setq flag nil)
    1 N& d0 H2 z9 c' t
  12582.         );progn then
    ( \9 f8 p) ~( \1 X) [
  12583.    );if  
    ' h3 C3 p/ u/ d9 v) D0 n( j
  12584.    (if flag
    8 r9 D( L! z6 F+ a) g+ D$ W
  12585.        (done_dialog 1)8 G6 G3 O+ i5 t) d3 W: s4 D
  12586.    );if0 \7 w9 Y2 @; L6 w/ `& @0 c0 t
  12587.   );defun test-main-ok4 r) c! q1 s+ F9 v

  12588. / y' L+ A* W) X
  12589.   ;;
    8 {) V* ^  H$ _2 O, s
  12590.   ;; A color function used by getlayer.
    0 b  ^4 j5 ]- U) g
  12591.   ;;0 K) B$ D) c# w& R% k
  12592.   (defun colorname (colnum)
      i  s3 n# x* |6 f3 o
  12593.     (setq cn (abs colnum))
    " `( r: X! }% N0 S
  12594.     (cond ((= cn 1) "red")
    - p' V* B; S  L( ^( F
  12595.           ((= cn 2) "yellow"): |9 M* w3 x2 a4 D; T
  12596.           ((= cn 3) "green")
    + U8 G4 r8 O% {: N  E4 P1 `
  12597.           ((= cn 4) "cyan")
    $ @! G% d6 v- U2 \6 }
  12598.           ((= cn 5) "blue")
    - v, z- T8 L9 f. s9 D2 T/ h
  12599.           ((= cn 6) "magenta")
    * x4 ]+ f% B# S- a/ g
  12600.           ((= cn 7) "white")
    9 Z$ r! ~5 O) G4 v( s! Y% E8 K0 f
  12601.           (T (itoa cn))
    : C0 g( O! h# ]- ?, Q/ \5 S( f8 u/ j( U
  12602.     )/ W* r/ c0 h6 e* `$ ], H! L2 \8 ]
  12603.   );defun6 f% l/ ?* r  i4 A/ \6 ^

  12604. 1 D9 z% J$ d. b: q2 n: D4 P( G
  12605. ;;; Construct layer and ltype lists and initialize all
    ; G! W* y7 e. q# O
  12606. ;;; program variables:" E' P- p) |; m+ K6 m) ]5 i- H

  12607. ( L! D4 J1 E+ q1 r/ h# i% k
  12608. ;  (makelaylists)                     ; layer list - laynmlst/ Y  O. F$ @0 Q1 }; @

  12609. 1 k+ ?8 G: [7 j4 P% m' ?+ N/ k8 A

  12610. # G/ \" E" ~- X- A# X7 R
  12611.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    1 T4 g& |  I2 O! ?5 I

  12612. 4 T+ _7 @8 S7 e6 {% M: C  I- w/ H' A. j
  12613.   ;; Find the property values of the selection set.
    ( W: W; g/ ?  k/ J, c& i
  12614.   ;; (getprops ss) returns a list of properties from. ~" X. l0 G) B/ F: ]- H, E, c( }$ d
  12615.   ;; a selection set - (color ltype layer thickness HEGHT STYLE WIDTH).5 w+ v! ?2 }+ O. B+ d+ U* w& y
  12616.   z' ~& z! f3 L/ x
  12617.   (setq proplist (getprops ss));@rk interesting things happen here  N8 g: c! X. T: n6 ~' w

  12618.   v" w0 H! H1 a# Y6 O
  12619.   (setq
    9 v& O0 j( h0 v/ h
  12620.             ecolor (car proplist)! P$ [- y# b3 O( x' U) F
  12621.             eltype (nth 1 proplist)* B, Q$ F; U7 p# b, a' J: x% x
  12622.             elayer (nth 2 proplist)  H- o1 k: O$ _& c3 @7 ]
  12623.         ethickness (nth 3 proplist)
    , ?( k. v$ X6 O3 P" J  Q* m
  12624.           eltscale (nth 4 proplist)
    8 L! m/ ?# q' z
  12625.             ewidth (nth 5 proplist)
    7 P8 p$ f9 @3 N( I" q) z( j% n) W" T. z
  12626.         eelevation (nth 6 proplist)) P; ~. w9 g" I# j/ d3 X9 [8 ]) ^
  12627.            eheight (nth 7 proplist)1 f5 U/ F2 j0 s8 ]7 _
  12628.             ;etype (nth 8 proplist);commented out and replaced with the line below. RK.3 S# B0 p/ i" h7 F, W7 F" I7 n
  12629.              eflag (nth 8 proplist)
    2 R+ R4 j* S) Z: t- y
  12630.             estyle (nth 9 proplist)
    3 Y# h- l) p. J) L$ C: P$ u, ]8 f/ P* r
  12631.            poly_ss (nth 10 proplist)3 ?2 a; E' f1 |
  12632.            txt_ss  (nth 11 proplist)
    ( ?7 l! V& D# N/ R/ D# A6 D. Y
  12633.   );setq* r  P( s: ^1 D+ |8 U

  12634. 6 Y: |. V" N( F9 m6 @0 d7 A
  12635.   ;; Find index of linetype, and layer lists
    - S% Q* D  N% h' O3 U
  12636.   (cond9 K7 x7 _. V/ o4 Q9 k4 _- g
  12637.     ((= eltype "Varies") (setq lt-idx nil))7 t- {5 ], A( g5 ?  l" d
  12638.     ((= eltype "BYLAYER")% o. |& p3 G4 Z
  12639.      (setq lt-idx (getindex "BYLAYER" ltnmlst)))* m8 |$ \" e2 G' W" p4 S
  12640.     ((= eltype "BYBLOCK")  z' r9 z! O$ p  ~9 I
  12641.      (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
      ^9 I) n% u0 k6 d
  12642.     (T (setq lt-idx (getindex eltype ltnmlst)))
    + E: |$ ]2 B5 _! b1 P) C! X3 `
  12643.   )4 d% w" u8 q& i$ m2 R
  12644.   (if (= elayer "Varies")
    $ U5 e$ l2 k2 }: i
  12645.       (setq lay-idx nil)0 Q) e0 O9 d. w/ L- _' Z6 p+ }* W
  12646.       (setq lay-idx (getindex elayer laynmlst))  {; l9 l, I  y. r$ ?
  12647.   );if
    * t+ p" K9 Z$ f! {" F
  12648.   (if (= ethickness "")
    " p- r+ ?5 \0 k# B
  12649.       (setq ethickness nil)
    6 u! g* ~7 y% @4 d2 t6 p; y# c
  12650.   );if( ^4 s5 m. R7 z+ _: Y2 y
  12651.   (if (= eltscale "")3 W0 ]( I" {( P' T
  12652.       (setq eltscale nil)
    + w- p0 m$ C7 v6 y, z! r3 S1 @
  12653.   );if1 K. c# m* v) _; O

  12654. * u: J& D& p, i  N' Y" @
  12655. );defun ddchprop2_init   ; end (ddchprop2_init)
    ' C6 r3 z9 `0 L3 {0 c* e

  12656. 1 X/ _3 x2 v2 E+ j2 ]
  12657. ;;; (ddchprop2_select)! ^  C' ?- v6 F/ G5 j
  12658. ;;;
    % r. |$ Y/ n; z( j
  12659. ;;; Aquires selection set for DDCHPROP2, in one of three ways:
    2 o* D& V; A$ m, O, l1 v, R
  12660. ;;;
      L4 Z2 d* \* t5 U4 e, d. ]/ l$ }
  12661. ;;;   1 - Autoselected.9 f: h- c! M  K9 l6 n8 O3 S& p
  12662. ;;;   2 - Prompted for.& I# e3 @9 M2 v
  12663. ;;;   3 - Passed as an argument in a call to (ddchprop2 <ss> )# H" c5 A7 z' J+ F& d6 L0 V
  12664. ;;;
    + ~+ F( ?4 _7 c, z4 N
  12665. ;;; The (ddchprop2_select) function also sets the value of the! Q: l0 f* P; q! D% n
  12666. ;;; global symbol AI_SELTYPE to one of the above three values to4 y3 g+ e4 g0 i0 f' O, Q
  12667. ;;; indicate the method thru which the entity was aquired.3 f. z  Z  j3 @; Y6 C, |7 _
  12668. 3 N" @, o5 {8 y% b$ M$ c
  12669. 5 H( t) T# o2 @% |' }2 I
  12670. (defun ddchprop2_select ( / )
    2 D' L  q- D" E& B3 A

  12671. 7 F3 I% e% G3 E
  12672. , i9 v0 e# R, V( G% M) u' D
  12673. ;returns only entities in ss that are in the current space.
    7 v. L1 M6 p  r" Z) A
  12674. (defun ss_in_current_space ( ss / a cur_space ss2)+ |$ S' w9 p/ J/ H3 [

  12675. $ S" e* T* ~' i# o
  12676. (if ss: _& L1 Q! U7 [
  12677.      (progn
    0 n/ B8 w+ \2 a+ s6 M
  12678.       (if (and (equal (getvar "tilemode") 0): T# K$ o* A) t$ l
  12679.                (equal (getvar "cvport") 1)
    % Z, J7 Y& r' J" X$ G6 u
  12680.           );and " e0 F) V8 X3 ?1 Q) N) k6 r: y
  12681.           (setq cur_space 1);then paper space is where we are.- _. e  D9 i( ]3 U/ J' G1 l$ I
  12682.           (setq cur_space 0);else model space.- _4 \* s( P7 {) F+ B9 m3 \# T# d
  12683.       );if
    - {: W4 F9 z# f! \
  12684.       (command "_.select" ss "")
    9 a# C& e% w, Z1 T7 r, R/ A& U0 d
  12685.       (setq ss2 (ssget "p" (list (cons 67 cur_space))));setq
    & b$ F, L4 j' m7 M
  12686.       (cond                              ;;;;;tell the user what's going on.- a2 m$ d( b- K- E6 y8 C9 R2 p1 c; ]  j
  12687.        ((not ss2) (princ "\nNo objects found in current space."))
    ( Y2 J4 d2 ~& z7 b) J4 |
  12688.        ((not (equal (sslength ss) (sslength ss2)))" i, H$ e$ R# x
  12689.         (princ (strcat "\n" (itoa (- (sslength ss) (sslength ss2))); U0 I: S1 v4 U# T0 i: [/ i+ H4 t
  12690.                        " object(s) were not in current space."
    3 k! N; G# h) X$ F2 R
  12691.                )
    $ v, K9 h- L3 ?) _" h& A' z
  12692.         )# X; e. m' Z# K
  12693.        )
    1 Z" [9 v9 ], r* `
  12694.       );cond
    . F7 k) d6 `& j6 l+ B( e
  12695.      );progn then
    7 f2 o" m* m9 c1 k7 @% s: d
  12696. );if  % J$ N" ?4 j' d$ F( R" f9 o
  12697. ss2
    % C4 P5 ]9 J; f+ ?8 E3 [
  12698. );defun ss_in_current_space
    " V1 [, I' s% r
  12699. 4 ^8 Z; @; ?/ d7 O0 r
  12700. 8 R) n, ^7 f( Z; D1 a8 r" m
  12701. ;;;begin the work of ddchprop2_select
    ' r; N- x. [! j2 l/ J9 e
  12702. 2 l% V/ Q% l' S# M# c) t& F
  12703. ;; temporarily restore original highlight setting.
    # P7 {0 R  e. x/ H9 s
  12704. (b_set_sysvars (assoc "HIGHLIGHT" (car bonus_varlist)))
    $ R3 X/ U, ^" L' z1 Z8 ]5 H
  12705. (cond( q& l" q2 K6 \7 c# C) C
  12706.    ((and ss
    ) x2 H" Y$ d" H. z
  12707.          (eq (type ss) 'pickset)
    + m, T4 A7 y+ ~& K# B8 J
  12708.     )        ; selection set passed to
    4 L* ]' q9 i* O. [, ^# {( Y% b
  12709.     (cond                                   ; (ddchprop2) as argument
    0 O2 I; X8 ]1 F& ~
  12710.      ((not (zerop (sslength ss)))       ;   If not empty, then
    8 A) _( {! p$ d# B4 X
  12711.       (setq ai_seltype 3)               ;   then return pickset.
    : _9 V% O" l3 ]8 E$ X9 k6 l' D1 Z
  12712.       (ai_return ss)0 ~% A: ?6 D& X  F* {# l9 C
  12713.      )3 v( S4 `) g  d* \
  12714.     );cond close8 @8 ^! g8 ?4 W, a  _) t
  12715.    );cond #1
    ; ]8 K: y% R8 j2 A- t
  12716.    ((setq ss (ai_aselect)))                          ; Use current selection+ ~1 O( V  h( m: ^& R2 g
  12717.                                                      ; set or prompt for objects
    ! _# I4 n5 _. A
  12718.    (T (princ "\nNothing selected.")- U5 r6 x& J1 p6 ]  T7 H5 @/ O
  12719.       (ai_return nil)* k! p0 ^" A* r9 n/ _5 B
  12720.    )
    ' u# K4 v% V, d& ]6 B
  12721. );cond close! q1 q# Q; Z/ b% v4 f% z
  12722. (b_restore_sysvars)$ n. y6 u2 X; Y. y9 }

  12723. 5 {$ c8 i9 p! p6 S$ W8 c. a, d7 k% _
  12724. ;(if ss) F, \8 Z  u0 a8 g9 s& T
  12725. ;    (setq ss (ss_remove_locked ss))
    9 U$ ^$ b; Y/ m  _# l7 [
  12726. ;);if
    1 X7 w1 P8 X6 X8 M3 W: o
  12727. (if ss. g+ P5 ?9 Y+ D% i8 r; y0 g. v* e
  12728.      (setq ss (ss_in_current_space ss))
    - @/ S6 K/ S+ H1 F0 i5 ~
  12729. );if
    + M8 p3 N8 N4 p! p+ j0 V6 z  Y

  12730. / X, y1 G; d* G1 w
  12731. ss
    6 h+ m3 c3 h# R3 |: Q8 P
  12732. );defun ddchprop2_select& u8 p4 G& p! P. y7 T

  12733. 9 X0 k) X3 D7 I" |$ F
  12734. " u3 q, _- r( o) i) H
  12735. ;;; Define command function.' V1 d6 |* g3 E5 Z
  12736. (defun C:CCH ()
    ' A( A$ C1 ]3 a/ m$ J
  12737.   (ddchprop2 nil)
    ' s; g+ J+ @& m6 D$ O
  12738.   (princ)( h: a9 G8 E& ^, }. d( c( }
  12739. );defun/ a% e) N! G/ f/ e
  12740. 0 x5 Z  R) u4 ~. D% J% T

  12741. / p' x3 L0 ^0 C5 r3 y" L
  12742. ;;; Main program function - callable as a subroutine.1 V* i5 F, G- u2 s& r% m6 [
  12743. ;;;7 K7 l: n$ s" m
  12744. ;;; (ddchprop2 <pickset> )
    . b$ D% M- d/ n) b
  12745. ;;;
    $ v4 G3 M" E0 x5 G6 d, f
  12746. ;;; <pickset> is the selection set of objects to be changed.
    ; A# ^) T! j0 Y0 Q8 z1 W
  12747. ;;;1 [' I3 q0 l- D3 S5 s
  12748. ;;; If <pickset> is nil, then the current selection set is3 a. P. x7 A7 L( ?, E* l, Q5 I7 Q5 v
  12749. ;;; aquired, if one exists.  Otherwise, the user is prompted
    4 s( v; M3 `- U6 {# B
  12750. ;;; to select the objects to be changed.
      X0 j4 s) I  o, t- Y' v$ N
  12751. ;;;
    2 r9 g- u7 |- S0 O( D
  12752. ;;; Before (ddchprop2) can be called as a subroutine, it must! B& `4 Q; [' I0 `- E+ d8 s# @
  12753. ;;; be loaded first.  It is up to the calling application to
    1 t+ Y4 }! V' r, @/ [5 ?
  12754. ;;; first determine this, and load it if necessary.
    3 D% ]' R) c! Z4 v' W" K$ {( V1 N7 E# w

  12755. $ ]( s$ h$ \0 i& r, Y$ P& U
  12756. (defun ddchprop2 (ss  /
    5 K8 N3 `* N: k# D

  12757. . b- `  s+ ^7 v# `3 u3 @1 j: v
  12758.                   a
    2 Z9 Z0 Y, {- n( `) V4 x
  12759.                   add-mdash
    9 n$ v" e& i7 x/ v
  12760.                   assoclist2 {  H# A/ Z% u+ _4 k4 m) V, M3 k
  12761.                   bit-70
    8 D1 k6 X+ L" `6 E
  12762.                   boxlength
    ) U: O0 |6 O2 ^: j6 ?
  12763.                   bylayer-lt- ^# u/ Y2 o# T0 T& {
  12764.                   bylayer_col
      p' e  |/ n' i. z3 I
  12765.                   bylayer_lt* o6 g+ a+ M9 n+ h& F# Z* [8 g3 A
  12766.                   call_chp2! R2 H1 c1 t4 X* U! |
  12767.                   chk-col/ r+ i) R' y/ X- H& s* E, f. N% N
  12768.                   ;chk-etype        ;var removed by rk
    + Z% v: B0 n! W# r
  12769.                   chk-lay    3 Q6 ~. w5 `: H3 G+ t$ H4 i
  12770.                   chk-lt
      T8 p$ Z! T5 X4 d7 a
  12771.                   chk-lts           ;var added by rk
    5 ]+ @6 Q0 J! B/ D: c0 G  u
  12772.                   chk-th( D3 q5 |5 [( r" g  [' Q
  12773.                   cmd! S! R1 D2 h9 }2 I+ H- O
  12774.                   cmdecho) |, X6 i8 F6 a4 P4 U! p3 o2 I3 r
  12775.                   cn
    $ i/ Y4 }% v" s  H$ r2 y
  12776.                   cnum
    " [. m2 ?0 ^2 Y7 T, v4 L) X( z7 L; F5 J
  12777.                   col-idx
    # Q& h: B# I. r3 ?
  12778.                   col_def
    ' x/ Z6 G2 _7 s+ q/ \1 U0 i6 w
  12779.                   col_tile* k; C4 d6 O/ s/ g
  12780.                   colname
    2 q; d& Y  w' q3 S+ [
  12781.                   colnum
    & u6 `. j6 b0 P) R  h
  12782.                   color6 j" B8 i9 P6 s2 [- q  n3 b& L7 |
  12783.                   colorname# E$ p2 h0 n1 Y+ B1 c
  12784.                   cvpname
    ' ~1 l6 _9 a/ _& x
  12785.                   dash' ], [* |5 L. ]( d' @
  12786.                   dashdata
    6 W) L/ w( a+ z6 N
  12787.                   dashlist3 g# `; Q( w/ C' C
  12788.                   dashsize0 c3 a, R, }) P9 k) G) i& B
  12789.                   dcl_id4 B: f0 Y1 b  b) Z( r0 m& z
  12790.                   ddchprop-err. b2 p+ N  U: \( U3 Q" L  u/ x
  12791.                   drawpattern2 g1 V# F. _5 K
  12792.                   ecolor
      x; F5 Z7 X/ H3 Y; \; y
  12793.                   eelevation) _) X' c! U/ A, Q
  12794.                   eflag
    $ |; h' H+ y6 Q$ X. l4 k
  12795.                   eheight. E/ T+ A* t; g7 Y
  12796.                   elayer- C2 V! L- O; n0 P/ g5 P0 b
  12797.                   elevation& }/ _% H1 f; H' C! }8 h
  12798.                   elist
    ' W  H. m8 N0 V
  12799.                   eltscale
    7 w! b5 M$ V( @) Z* Z) d& U, h6 k$ e
  12800.                   eltype- ~/ F, C5 ^+ W$ e: T5 }1 p
  12801.                   en, f* E  n; R' V! P0 g6 q) y' s; F
  12802.                   ename* Y7 I1 M4 r8 u2 y
  12803.                   ESTYLE             ;var added by rk  t6 C1 s- d3 z% ?$ q$ D- p) B
  12804.                   ethickness  s& F8 A3 \" N
  12805.                   ;etype             ;var removed by rk
    ; x8 R* ?2 e9 i& ~" Y+ h6 R
  12806.                   ewidth
    6 B; f( Q7 W$ q
  12807.                   fchk
    ' |* d  W+ z5 g
  12808.                   frozth
    ' ?/ n- w. R4 |/ g- J; A( a7 C
  12809.                   fx" L4 e0 @0 `& y3 C. R) Y2 r7 q
  12810.                   getcolor
    ( B( o1 m5 L+ e# U' S% h6 t
  12811.                   GETELEVATION      ;function added by rk( M6 D$ y( e* {& L
  12812.                   GETHEIGHT         ;function added by rk" a. I9 }. [+ B! F/ j4 W. e6 e* p
  12813.                   getindex
    # q) M# i' ~7 V3 t. ]. M( w
  12814.                   getlayer6 ^, E; @+ p& g& p5 g1 d% a
  12815.                   ;get_locked_layers ;function added and then removed by rk
    8 g" ]! F" K  n$ r! ^% I8 N" O- \
  12816.                   getltype
    & i* w. B' T: L5 R* h8 _6 H4 A6 x
  12817.                   getprops
    - @6 N+ K' j7 e: W
  12818.                   getscale          ;function added by rk; H& X/ i# W# C, `' \" ^8 y9 S
  12819.                   GETSTYLE          ;function added by rk# r3 R9 ]! E  ?2 ?
  12820.                   getthickness1 `( d  x9 B: v' C, j
  12821.                   GETWIDTH          ;function added by rk) ~' j0 K( v1 i" Q
  12822.                   globals
    * q+ R6 t; ^' i1 Z
  12823.                   HAIR_STYLE_LIST   ;var added by rk% G% x5 O6 H9 ^8 C& A4 ^# D; {8 N+ v
  12824.                   height
    4 I' ?, f5 T8 N
  12825.                   index
    ! W$ n- G: Q! S% P
  12826.                   item
    9 R8 R  \- U1 c- ^0 A
  12827.                   item1
    ! P! b. ^! S3 s7 c, E9 {2 S/ f
  12828.                   item2
    1 l- {; S  @% E
  12829.                   itemlist* j, F: ]0 x' e' h- T, B6 T/ K% _
  12830.                   lay-idx" p2 [% Q0 [3 c3 U* w5 C. `2 |4 ~
  12831.                   layedit_act0 e% y5 `) N) U( o
  12832.                   layer$ r9 j, Q" G  e) h
  12833.                   layinfo' U9 w, {& ~+ i* B" s, K0 j3 |2 ?7 l
  12834.                   laylist" O# `. Q. o1 e6 o+ F: T/ T) L
  12835.                   laylist_act
    ) Y9 I+ i2 T* x0 ]- J" Q
  12836.                   layname9 F' A! k6 B8 O5 G5 T# p" T! B, `
  12837.                   laynmlst
    ; x# ]2 ]8 K) f0 b. d3 f8 h* g
  12838.                   layvalue
    . M: W5 h9 O; S# d0 V4 W+ s
  12839.                   linetype
    3 v5 \0 O1 |2 [0 ?/ ?* k( i
  12840.                   list14 v' W" d5 w$ P; d
  12841.                   longlist
      \0 P# P& G( V2 r* R) V* Y7 f
  12842.                   lt-idx
    2 X7 ^) G6 F- E7 o
  12843.                   ltabstr% |. D- f  W$ T
  12844.                   ltedit_act2 d7 J. n+ b6 h# E  N& {
  12845.                   ltidx
    5 N  s) j, n7 c- o0 y8 g
  12846.                   ltlist- Y6 ]2 A% ]- x8 S3 s
  12847.                   ltlist1" a/ Y% k  k4 W0 c  |9 X
  12848.                   ltlist_act1 |2 {( e+ ?& M* I7 H3 X
  12849.                   ltname5 D0 Q9 s( l& a3 n1 `. s: Y/ m0 n
  12850.                   ltnmlst
    : B. X8 p% q8 A2 }- v
  12851.                   ltvalue" X. ^) G, E4 I6 r) b6 d
  12852.                   ltype( L7 w# b: a6 m: [3 f
  12853.                   m( N' G  Q1 }" B& I8 M7 u
  12854.                   makelaylists6 a0 Z1 B2 w+ M9 f5 A5 e+ q& |- X0 K; f
  12855.                   makeltlists
    # b; R: a# A9 B* H
  12856.                   match-col
    ( V) I- j' Q' n  u# e
  12857.                   ;match-etype          ;function removed by rk1 b4 B& L1 N+ N$ N3 k
  12858.                   match-in: a5 E& d  X: j0 \
  12859.                   match-lay) e2 ?5 S& W1 E5 A% m
  12860.                   match-lt* k9 X7 ?- H; o8 _8 G
  12861.                   match-lts9 D3 t) f3 v- R% l! l5 h9 ^
  12862.                   match-th0 g7 I+ ^9 Y1 r1 M: U9 p5 D* q! H
  12863.                   match_col/ U3 O  z- K6 o; L7 S6 @8 t& b# h3 v
  12864.                   mdashlist  }3 g( ~0 ~9 q+ h8 P' |
  12865.                   ;MPOPLST               ;function added and then move to ac_bonus.lsp by rk
    ( c1 A: G! t7 a$ ?( @: L  k. O
  12866.                   n
    : Z& X. u. O% p5 k3 G8 `8 z
  12867.                   name
    . V+ F) q2 E8 t- ?. x
  12868.                   ncolor
    7 I2 N9 T/ _$ g5 Z8 r. ?! {  N
  12869.                   nlayer( \. e! G! m/ M2 P" j* R6 |. ~
  12870.                   nltype
    5 @1 F* O9 W1 j
  12871.                   nthickness
    7 ^  e+ |* G* E# q& A9 U
  12872.                   off
    . O8 G: j: W4 B- [/ Z
  12873.                   old-idx+ l8 @* Z9 Y" z% n/ L- _3 n3 q
  12874.                   olderr
    ; P9 h5 ]  @1 W3 J+ C* x
  12875.                   on/ d: n8 u; {% B+ J
  12876.                   onoff5 W9 g" s( f1 V* [% H) n5 W
  12877.                   patlist! }0 _. Z+ M: X' n. F
  12878.                   pattern
    ' g7 z& c% N  {
  12879.                   PL_WIDTH_GETTER       ;function added by rk& ~0 B0 [( o( i( e
  12880.                   POLY_SS               ;var added by rk* P# f) `7 n' f. \) h& |% ~
  12881.                   ;POSITION              ;function added by rk and then moved to ac_bonus.lsp
    ' a4 P$ m% F- H! W1 Y" l& A
  12882.                   proplist
    3 V' s+ ?4 A  G9 r* w% {
  12883.                   reset-lay
    + e. R$ q4 R. x8 e3 D
  12884.                   reset-lt+ Q" X& T. S( M% J: B4 j- _
  12885.                   s
    ; f9 K: _1 E- u0 N" m2 P: \; b
  12886.                   selset2 o. D3 c7 S( p+ M! ?* _, j( N
  12887.                   set_col_tile
    * M/ Z% X' ^( W0 {! S
  12888.                   sortlist8 U- R7 g6 L; B: x9 {* |
  12889.                   ss; S/ Q5 _8 b- q8 r+ m( I+ i
  12890.                   ss_in_current_space  ;function add by rk.' m, w* I# n  H. |1 a
  12891.                   ss-index
    . p1 y9 R* F$ z
  12892.                   ss-length9 D8 w9 [: v" m5 C% B) ~
  12893.                   ;ss_remove_locked     ;function added and then removed by rk.
    8 o* r/ D2 f& J, ]# E, T7 B: `3 X% H
  12894.                   sslen
    ) K: O- F2 h! v% g8 H: \# \- a0 r
  12895.                   temp_color. O9 _# r+ M' @
  12896.                   templist
    2 @0 i& s5 T# i, \# r- q
  12897.                   test-main-ok6 }- a4 I0 \# d+ `& e7 O
  12898.                   test-ok) n9 t0 f0 S! A0 _7 a. @
  12899.                   testidx. h3 I& D2 H# U/ y( o% h2 L
  12900.                   testlay
    ; e$ Y$ p# t: J4 G" ]3 w
  12901.                   th-value
    % H4 _5 V% D- r4 I/ S( `
  12902.                   thickness
    5 @+ o; T* N+ g& Z
  12903.                   tile
    / _6 e+ D8 d' M& K% \$ W8 U
  12904.                   tile_rect) R& Z" P. W; e" }$ \
  12905.                   tilemode
    3 w4 T9 o8 o. A; e3 J! Y" c3 B0 N
  12906.                   ;TNLIST           ;function removed and moved to ac_bonus.lsp by rk: |; @+ v6 ]* C
  12907.                   TXT_SS            ;var added by rk
    ! v+ j) W+ J+ j1 a# E" N
  12908.                   ;undo_init        ;removed by rk." G6 B, L0 a# ~7 C, }: z+ a
  12909.                   vi! t3 ?4 k2 O4 l' [8 d5 [0 v
  12910.                   vpf/ D4 {1 y1 b; r6 s, \; B; j
  12911.                   vpldata6 t0 |) v) \3 s! y  M% y
  12912.                   vpn
      V6 r; ~7 N  W2 I, T. x
  12913.                   which_tiles) t' T/ l% Z6 y7 p$ @; \: o$ Q
  12914.                   width5 f& R2 w0 s7 ^$ m
  12915.                   x; W: y2 A3 V: ^
  12916.                   x1. Q" N. F, H" }3 J
  12917.                   x2
      ?; \# O/ Y0 ]8 {, V. `
  12918.                   xdlist
    7 r( C9 v  x# f/ e! F7 s# u5 o
  12919.                   y  c& U7 |* J0 S+ d
  12920.                   y1) {0 `$ b$ t# @; ^# c! W1 t+ h
  12921.                   y2
    + f+ l* J! C" R$ S
  12922.                 )! Z$ c) c3 q0 m6 K5 ]( ~6 X. t
  12923. & {3 F" _3 h& F( k
  12924.   (if (and (not init_bonus_error) " q0 N' X7 t" R0 A* o
  12925.            (equal -1 (load "ac_bonus.lsp"  -1)) - T6 G: s+ T4 F. x" m
  12926.       );and
    . B" k$ n: c/ d/ L5 q
  12927.       (progn (alert "Error:\n     Cannot find AC_BONUS.LSP.")(exit))
    * O: |3 ^4 j) A8 g+ c) z
  12928.   );if
    2 }% ^8 O' t% C; k5 T, \
  12929.   (init_bonus_error (list! s1 Z5 F  g. \5 k( }
  12930.                      (list   "cmdecho" 0
    ! e7 X( m& z9 o1 ^* S  f
  12931.                            "highlight" 0
    * Q8 z. p% F- L5 i
  12932.                            "regenmode" 18 P$ I) o# ~2 R, O
  12933.                              "ucsicon" 0
    9 W% n1 K- T- U9 [2 {
  12934.                      )
    ' x% |  d. S$ E4 k/ N- a' K" o" y
  12935.                      T     ;flag. True means use undo for error clean up.                    
    ( n5 {8 p, v9 c* v* r5 R% k- o( d
  12936.                     );list  , ]% N7 C" H/ g0 T. X; J2 i# T
  12937.   );init_bonus_error
    ( S9 I2 h  t  e# H7 b4 a( a
  12938.   G* e( U- Z, X: G& a
  12939.   (cond$ W* J7 L6 K) c$ r; }* R$ H
  12940.      (  (not (ai_notrans)))                       ; Not transparent?, Y' i( _& \5 v8 b
  12941.      (  (not (ai_acadapp)))                       ; ACADAPP.EXP xloaded?! H! i; h. d" P# Y( g  _/ k
  12942.      (  (not (setq dcl_id (ai_dcl "exchprop")))) ; is .DCL file loaded?
      p) V; q" z0 a* }
  12943.      (  (not (setq ss (ddchprop2_select))))       ; objects to modify?
    ) l3 A( F6 H. v* B* N! {- [
  12944.      (t , h. k. D/ j8 g4 ?( s( g% E
  12945.         ;(ai_undo_push)1 B2 \$ K! i. [' w2 W
  12946.         (ddchprop2_init)                          ; Everything's cool,
    5 M9 H' T: V3 v: G
  12947.         (call_chp2)                               ; so proceed!
    9 X# {' W) t+ Q" E7 ~
  12948.         ;(ai_undo_pop)
    : t5 N: j5 L3 E, j
  12949.      )4 c0 p1 J! @4 x8 x% k. A0 J
  12950.   );cond close/ I. W. ?! a! ?' u6 w0 U! t+ c. p2 `

  12951. 4 A6 F; {; Z2 m" O* P2 S$ f, Y
  12952.   (restore_old_error)
    : d9 k! e, }$ H$ W( @+ \' E
  12953. ! i2 D. Y+ p8 \) z
  12954. (princ)
    % P& K% p. a4 V8 W' q/ t
  12955. );defun ddchprop2
    - I9 q3 ]# Q8 u) G, T- T
  12956. 3 w. H/ L/ ~+ X( h
  12957. ;;;----------------------------------------------------------------------------
    8 y& U! [8 D$ E( f& e. c/ f

  12958. " ^5 y% Z$ ^) ?
  12959. (princ "   EXCHPROP loaded.")* @5 l! E% Y5 W' b3 x  `: u
  12960. (princ)
    9 ^& D1 Z$ k; o) L8 `
  12961. + _! ?% w3 X0 D# y7 B
  12962. ;;;----------------------------------------------------------------------------* p5 Q( Y! n  ~! p" r7 X
  12963. ;;;---------------------------------DDCOLOR_LSP--------------------------------
    1 Q9 {: h2 v# l
  12964. ;;;----------------------------------------------------------------------------
    3 }) q& \/ o# O! M0 F4 i* j
  12965. ; t6 |! ^) L5 T. [. g$ c
  12966. ; Next available MSG number is    24
    ( F& G/ i7 u  [$ d1 \
  12967. ; MODULE_ID DDCOLOR_LSP_: E) c- R2 b4 g4 }
  12968. ;;;
    + O$ |$ }& h  F% a/ c2 R5 K* j# i
  12969. ;;;    ddcolor.lsp
    + `9 f9 T0 S: i6 Y# I: ]
  12970. ;;;   
    0 E  z( u8 M- O  [. @& }' E# }( S
  12971. ;;;    Copyright 1990, 1992, 1994, 1996 by Autodesk, Inc.' m, E* Q- z- r
  12972. ;;;: i, p8 B) M! {
  12973. ;;;    Permission to use, copy, modify, and distribute this software; \! U: I6 I. F$ l! w  g
  12974. ;;;    for any purpose and without fee is hereby granted, provided
    % O3 J, G; p& c
  12975. ;;;    that the above copyright notice appears in all copies and& k0 R9 s# W0 u$ {' Y0 w
  12976. ;;;    that both that copyright notice and the limited warranty and
    : V- Z# `& D( g
  12977. ;;;    restricted rights notice below appear in all supporting
    % A/ q( N& m) C9 e/ ~. m* _
  12978. ;;;    documentation.( c# E, ?8 w) D; L
  12979. ;;;5 N! Z! g5 N" |; R+ Q" m
  12980. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.$ K1 u/ f3 r7 w1 o- O& U9 o
  12981. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    + ?9 X9 c! b$ U- z
  12982. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    . M0 U. m' R" q) @  S
  12983. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    : {3 p' H, i8 C& o
  12984. ;;;    UNINTERRUPTED OR ERROR FREE.
    " j, g( S6 e$ D4 }
  12985. ;;;
    : A4 i4 s9 W+ o5 y1 H# a
  12986. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    + E. X: v" \$ ?' ^3 o1 P
  12987. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer4 O6 K% ~8 L  |: J
  12988. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    8 ~& k8 q7 t) r+ A! u
  12989. ;;;    (Rights in Technical Data and Computer Software), as applicable.2 U1 {2 p/ ~# |' e
  12990. ;;;6 ~6 W3 j* {& I5 @; W7 n
  12991. ;;;.
    + ?' Q3 P: E9 s
  12992. ;;;
    / j) c( @7 y: |- L" x+ p! @; i
  12993. ;;;----------------------------------------------------------------------------
      ?9 `3 p+ o9 T
  12994. ;;;    DESCRIPTION0 x, ^9 |, F+ u0 V' `( Q
  12995. ;;;     
    ) r# Y6 v. q- h$ C
  12996. ;;;    Chromatic Pallete style color selection dialog.& f1 Y7 s& O% _, v, c
  12997. ;;;    4 ?" a: X' O1 K* x8 F
  12998. ;;;    Globals:
    6 m3 E2 P. I, M2 s
  12999. ;;;    7 o& ?+ |& z5 \% L0 b3 B' z0 w
  13000. ;;;          chroma_color - Integer color index.  The last value selected/ h3 B( S/ T* e8 W% Z/ q
  13001. ;;;              by the user in chroma dialog.  It is not cleared or reset. w' B5 z0 H  m! Q2 [7 }: V
  13002. ;;;              by a cancel.  Only used for communication between callback
    1 t! `1 i+ _- s3 ^
  13003. ;;;              functions and the (chroma) funciton.6 c2 c8 D8 d" ~* ?  O
  13004. ;;;   
    $ Q" N. L( p. }$ i* t
  13005. ;;;    Depends on the definitions for the dialog provided in chroma.dcl.: ^8 T7 H3 {( G; b* r( i( f& ?
  13006. ;;;    / z4 q; [" w% [( y& }# M
  13007. ;;;8 h8 P$ b: ~5 R$ ?# p1 D3 X
  13008. ;;; C:DDCOLOR -- Dialogue front end to the CECOLOR sysvar.  Uses the chroma 6 @. n5 n9 e& |4 ]# W
  13009. ;;; pallete style color selector.
    % i; T  x! q9 k3 }% a
  13010. ;;;
    9 n# g9 d4 G" X" [& o4 @
  13011. ;;; ===========================================================================
    4 g2 Q" @% i0 r. F+ Y" e+ U& [
  13012. ;;; ===================== load-time error checking ============================6 ]+ Z! }% r, N( N+ P. r2 \2 O
  13013. ;;;7 f& J3 Q" o* @1 ~3 l7 l
  13014. : F; Y# x/ @! g- N4 Z0 v
  13015.   (defun ai_abort (app msg): n- f) T: [3 A8 d( X
  13016.      (defun *error* (s)0 m2 D' e/ C2 T! `
  13017.         (if old_error (setq *error* old_error))
    7 ~: I0 v, c' F4 D7 J! N" y# z
  13018.         (princ)
    * @$ _; W8 H& z; k. n7 q, n! w
  13019.      )& E; L4 D1 i, x2 @
  13020.      (if msg* b2 c6 L7 s7 w, Q) A
  13021.        (alert (strcat " Application error: "
    : q2 R+ I8 T& S5 A- F% x4 H& t5 B
  13022.                       app: y( W% C1 K" e
  13023.                       " \n\n  "3 G  x$ s& R8 N6 s- K. K
  13024.                       msg" L# q& d& I+ U3 y* y# u# k
  13025.                       "  \n": ?/ @* V* x- X4 y
  13026.               )
    & p& e8 i( ]3 u( F& ^/ |) G1 a
  13027.        )+ a: m8 o5 M. I( }! }/ ~' z
  13028.      )8 F" q+ U$ Y2 }; K% J) X8 \9 `
  13029.      (exit), H% {, o' L- h2 I
  13030.   )+ E  p0 O6 g+ e7 V% ~0 |- U
  13031. 0 M) g- t  H2 d& Y
  13032. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,5 M+ J) ^0 I- R' f0 G- \+ G
  13033. ;;; and then try to load it.; o  ], |* t7 {+ j# A& J4 I
  13034. ;;;' \# @/ x  j5 U: K' y
  13035. ;;; If it can't be found or it can't be loaded, then abort the+ _( ~1 W& y* X2 J7 U
  13036. ;;; loading of this file immediately, preserving the (autoload)$ l% B6 n) {' t" i$ Y
  13037. ;;; stub function.
    9 m4 @0 {! o$ o

  13038. 0 w) Q' M& U1 `4 g; d
  13039.   (cond# }6 W! L; j1 f/ ^' }- d+ I
  13040.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    ) T5 M  G4 C+ d2 w! q

  13041. " @9 ^8 R( s: t! g
  13042.      (  (not (findfile "ai_utils.lsp"))                     ; find it: @1 ]. V  r9 i, U
  13043.         (ai_abort "DDCOLOR"" ~- M# ^" c' [' T3 `
  13044.                   (strcat "Can't locate file AI_UTILS.LSP."
    0 L/ {7 F; K" F
  13045.                           "\n Check support directory.")))5 S4 E& W- h2 B6 Y
  13046. % \2 o2 V( T" c+ c: g7 ?* @
  13047.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    - V9 \4 B! v5 ~. M  ]
  13048.         (ai_abort "DDCOLOR" "Can't load file AI_UTILS.LSP"))2 u0 M. \7 L: I) J* w+ C1 z
  13049.   ). H: X' C6 K- e1 F& n+ v/ x

  13050. * Z. E6 e$ L7 G" P1 M  t' V8 R
  13051.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ; A# F6 \+ k# J& P  [
  13052.       (ai_abort "DDCOLOR" nil)         ; a Nil <msg> supresses
    , q6 U7 m: P' G/ U
  13053.   )                                    ; ai_abort's alert box dialog.
    # d. y6 R) b& _, @2 Q4 W
  13054. ' _# E7 f) s& P# F. k
  13055. ;;; ==================== end load-time operations ===========================
    ) T) A- z% ]' {, b: m5 o( O
  13056. ' b' {6 g( ^0 g1 p0 p
  13057. (defun c:ccc (/ co_oce clrx co_err co_oer lay_clr)
    4 c( O/ V  t3 W) i, ?

  13058. . M' f1 J, W' D3 j1 a
  13059.   ;; Main Color function, called by setup code.
    $ p% M8 r* J; L2 P& i
  13060.   (defun ddcolor_main()8 |% {  g: v9 U4 N7 e

  13061. 2 }/ D) Y3 I6 x: u
  13062.     (graphscr)9 u' ^) i. z1 F0 f
  13063.   
    ' d. h: l  y  |' H6 O
  13064.     ;; Get the color of the current layer, for possible BYLAYER color swatch.6 `, _- T* \& @: E( H$ G) T
  13065.     (setq lay_clr (cdr (assoc 62 (tblsearch "layer" (getvar "clayer")))))
    / b0 y" F0 R$ z1 _8 }
  13066. ) B; V7 R( h& x( z
  13067.     ;; Call the dialog here...  y# i+ N5 A' F: H6 t
  13068.     (setq clr (acad_colordlg (cstoci (getvar "cecolor")) T lay_clr))
    ) g% Q4 f- y( A) |

  13069. * m# ?4 i% G+ P/ q! h5 c5 e
  13070.     (if clr
    9 q/ b4 P& @4 M6 [. y8 q$ B
  13071.       (setvar "CECOLOR" (citocs clr)))
    6 l5 k; z1 `0 @0 G, y( R: u- E9 c. h
  13072.   )( h$ L- V# b0 q' ~

  13073. : E1 K2 G3 l# a& C/ `, l2 X+ O
  13074.   ;;;
    % V. j8 H6 ?5 j* P% ^1 U
  13075.   ;;; CSTOCI -- Color string to color index- k/ D: |2 Z+ Q! m) A
  13076.   ;;;   Convert an arbitrary case string into a color index.
    % |0 I! [: [8 |% @
  13077.   ;;;   Returns nil if string is not a valid color.
    % S7 d1 s, g: O+ ~' J
  13078.   ;;;
    5 i! v. e0 {( E' Q4 d, j6 d4 V
  13079.   (defun cstoci (str)
    & D5 M& H. K& L: |+ w0 t
  13080.     (setq str (strcase str))
    ! H( p  `* I; x0 h, @
  13081.     (cond. s, s0 M, o) W  M( y3 z6 ?
  13082.      ((= str "RED")        1)
    ' g( T9 c% {5 Q% W" F7 O
  13083.      ((= str "YELLOW")     2)- t( D: a, A0 x
  13084.      ((= str "GREEN")      3)
    3 _. k6 z( L( }1 I8 Y- u4 g" P8 H- E
  13085.      ((= str "CYAN")       4)6 I3 L9 E: f' D8 B8 f1 o5 I- \4 k
  13086.      ((= str "BLUE")       5)
    ! t. w9 X3 ]# T- x
  13087.      ((= str "MAGENTA")    6)$ G/ p" y) D/ m& Q  E2 k
  13088.      ((= str "WHITE")      7)4 B" J9 v" M0 B
  13089.      ((= str "BYLAYER")  256)
    1 j+ M( d) h$ y; M. d
  13090.      ((= str "BYBLOCK")    0)
    $ v! Q- w/ k) ~0 f
  13091.      ((= str "BY LAYER") 256)0 T+ j( E" _8 k
  13092.      ((= str "BY BLOCK")   0)
    / v4 P  Q! M4 r: s. J% Q# Y
  13093.      ((and (< 0 (atoi str)) (> 256 (atoi str))) (atoi str))0 H# P- C- R1 z' o
  13094.      (nil))
    2 ]: g! h7 r& c) j
  13095.   )" ?1 \, j' F& f! y! P4 I% c
  13096. 7 o  `' V& t* N# z

  13097. % o% H* D$ z" b+ n4 ~. f3 C) q) s
  13098.   ;;;3 S& `* i- B& U
  13099.   ;;; CITOCS -- Convert color index into standard color name.
      K4 A- L$ |" z9 K6 T: W
  13100.   ;;;    Will return the standard and logical color names as text& ~% t9 D( I' R% A& D
  13101.   ;;;    strings.  Returns nil for out-of-range color indicies.* m$ @4 \0 F& H& b
  13102.   ;;;" o7 B# e3 I4 P  o. ]2 m5 e
  13103.   (defun citocs(i)1 }. h6 q6 ]8 `, ?" C* C
  13104.     (cond
    # F5 v8 {2 R$ o5 D+ c  o( |
  13105.      ((= i 0)   "BYBLOCK")8 U9 N3 s  q2 `9 r. \! f
  13106.      ((= i 1)   "red")! A# J. L/ W8 k7 i9 |7 l% z' t# }
  13107.      ((= i 2)   "yellow")
    # |, J1 P; f) Z; r( S( q( {; ^
  13108.      ((= i 3)   "green")0 N5 r" A7 o3 q# Q4 c. [
  13109.      ((= i 4)   "cyan")' T- Y9 i7 p/ z3 K. b0 E
  13110.      ((= i 5)   "blue")% ^) @1 Z4 V3 _8 @2 m
  13111.      ((= i 6)   "magenta")
    % T% O& e6 |! O' S2 U. k) @) D
  13112.      ((= i 7)   "white")
      I# Q& f+ ~, E/ X# r
  13113.      ((= i 256) "BYLAYER")
    - Y9 w! l  P: C  W
  13114.      ((and (< 0 i) (> 256 i)) (itoa i))5 M& \1 \* O' c: l1 l5 n
  13115.      (nil))3 [. N6 m/ n2 I) Y/ X7 p5 J
  13116.   )# q& a2 ?* Z, \: }* V) P' C
  13117. : V* [& p4 n" ]1 Y& E- a. [
  13118.   ;; Start of ddcolor& T* X( c9 T# s
  13119.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    3 {# T, @& V% h# y0 k
  13120.         old_error  *error*            ; save current error function7 y# a$ y  [" C8 g) G  @
  13121.         *error* ai_error              ; new error function. U$ y2 D" Z* a7 G# B
  13122.   )
    ' ~; ^5 t$ w3 I

  13123. ) B( ]) K, |! n6 t3 }
  13124.   (setvar "cmdecho" 0)8 p9 M. y" V% z3 w1 l  F/ }
  13125. 8 \9 Q# T' h+ p. f5 d4 j) N
  13126.   (cond
    . I7 B' d# }) x) V; j, _9 W
  13127.      (  (not (ai_trans)))                        ; transparent OK2 I) a) E  v8 c# P& y0 }8 ]
  13128.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    $ t, j$ |* n' t( T( ]9 i6 T- g

  13129. * h, b% K) ~5 z- {# y. d
  13130.      (t (if (and (/= 1 (logand 1 (getvar "cmdactive")))
    2 \; m. L. W; U9 P( j& c
  13131.                  (/= 8 (logand 8 (getvar "cmdactive")))2 Q' e0 Q! U' m9 ]2 y
  13132.             )
    * h: Y+ D* n! r  d. l7 S  N3 Z
  13133.          (ai_undo_push)% [4 a0 s; [4 z+ x- w
  13134.         )
    ! J, P2 [! d" C- b9 i" `

  13135. 0 }# W$ J) R6 @$ w
  13136.         (ddcolor_main)                          ; proceed!
    2 I! J) {* I' H
  13137. # U) F' O( I" v0 w8 }
  13138.         (if (and (/= 1 (logand 1 (getvar "cmdactive"))), n& B! ~2 R2 ], t# |
  13139.                  (/= 8 (logand 8 (getvar "cmdactive")))
    $ e3 ]+ f2 k2 M  ]  R% f6 O
  13140.             )- U3 R0 h* W" W* ?1 h5 o. `5 n
  13141.          (ai_undo_pop)4 f$ R/ l" q4 L) h+ b8 ?
  13142.         )
    / p: h0 H8 b  f! j3 z/ K! I1 @
  13143.      )) ~% o- D. Z! v8 Y8 S! k
  13144.   )
    # m0 P6 m  \  i/ l5 g8 I3 F
  13145. 2 A4 ^5 f$ S: ?$ A  b( B6 \8 z1 z
  13146.   (setq *error* old_error) ) L' R6 f# w: [* W  Q0 U
  13147.   (setvar "cmdecho" old_cmd)2 C- b2 Y0 w" R  u& S4 X
  13148.   (princ)& r  s: y% Z6 p0 m5 b+ K4 W

  13149. ' G; w2 i; W3 w: s
  13150. )8 H  G* [9 J/ O

  13151. ' e' X# @8 r0 I
  13152. ;;;----------------------------------------------------------------------------7 T+ d% [( P: e' l9 `

  13153. & I6 K# S+ M$ {8 U0 x- ?- J
  13154. (princ "  DDCOLOR loaded.  ")+ X' v+ p$ p; n, L$ _5 @
  13155. (princ)
    ) u0 |# N/ r4 T3 b1 }/ n

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

  13494. ! i: J1 N! N- g) n
  13495. ;; Silent load for the Express Tools.0 d* {# A( C4 B) n" c" k
  13496. ;; Altering this line will affect Express Tools functionality
    5 y4 C' T: s9 i! d0 J/ H, K6 t
  13497. (load "acettest.fas" (princ))
    5 p4 X1 R6 d6 n" v' w
  13498. �32
Sao chép mã

1 E/ \" |$ G, v; a, i4 A# I% L00st Cách Thêm Menu & Lisp Vẽ & Fonts Chữ mở Gõ Chữ Administrator để Gõ
+ p+ d4 @. T% A% G

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

2025-04-21 Plot.jpg

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

2025-04-21 Text Style.jpg

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

2025-04-21 Layer.jpg

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

2025-04-21 AutoCAD Message.jpg

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

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

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

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

RUN-2000.zip

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

Zip

www.xaydung360.vn XÂY TÂM, DỰNG TẦM CHUYÊN NGHIỆP

Phòng tối|THƯ VIỆN XÂY DỰNG CHUYÊN NGHIỆP  

Phần mềm dự toán xây dựng excel | Hướng dẫn lập dự toán xây dựng | Phần mềm tư vấn giám sát | Phần mềm quản lý chất lượng xây dựng |

Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Kiến Trúc sư

Phần mềm ôn thi sát hạch chứng chỉ hành nghề Đấu thầu

GMT+7, 22/8/2025 03:17 , Processed in 0.675421 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.