Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
cuong49x5

Xin sửa dùm lisp xoay text theo một đường chuẩn

Các bài được khuyến nghị

Xin mọi ngưới sửa dùm lisp này !Em đã sử dụng nhưng hình như nó bị thiếu cái gì đó trong phần lập trình thì phải nên kết quả ra không như mong muốn!(Em nghĩ kết quả của việc dùng lisp này là làm cho text xoay song song với đường chuẩn đã chọn)

; Next available MSG number is  104
; MODULE_ID ACAD2000doc_LSP_
;;;    ACAD2000DOC.LSP Version 1.0 for AutoCAD 2000
;;;
;;;    Copyright © 1994 - 1999 by Autodesk, Inc.
;;;
;;;    Permission to use, copy, modify, and distribute this software
;;;    for any purpose and without fee is hereby granted, provided
;;;    that the above copyright notice appears in all copies and
;;;    that both that copyright notice and the limited warranty and
;;;    restricted rights notice below appear in all supporting
;;;    documentation.
;;;
;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
;;;    UNINTERRUPTED OR ERROR FREE.
;;;
;;;    Use, duplication, or disclosure by the U.S. Government is subject to
;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
;;;    Software - Restricted Rights) and DFAR 252.227-7013©(1)(ii) 
;;;    (Rights in Technical Data and Computer Software), as applicable.
;;;
;;;.
;;;
;;;    Note:
;;;            This file is loaded automatically by AutoCAD every time 
;;;            a drawing is opened.  It establishes an autoloader and
;;;            other utility functions.
;;;
;;;    Globalization Note:   
;;;            We do not support autoloading applications by the native 
;;;            language command call (e.g. with the leading underscore
;;;            mechanism.)


;;;===== Raster Image Support for Clipboard Paste Special =====
;;
;; IMAGEFILE
;;
;; Allow the IMAGE command to accept an image file name without
;; presenting the file dialog, even if filedia is on.
;; Example: (imagefile "c:/images/house.bmp")
;;
(defun imagefile (filename / filedia-save cmdecho-save)
 (setq filedia-save (getvar "FILEDIA"))
 (setq cmdecho-save (getvar "CMDECHO"))
 (setvar "FILEDIA" 0)
 (setvar "CMDECHO" 0)
 (command "_.-image" "_attach" filename)
 (setvar "FILEDIA" filedia-save)
 (setvar "CMDECHO" cmdecho-save)
 (princ)
)

;;;=== General Utility Functions ===

;   R12 compatibility - In R12 (acad_helpdlg) was an externally-defined 
;   ADS function.  Now it's a simple AutoLISP function that calls the 
;   built-in function (help).  It's only purpose is R12 compatibility.  
;   If you are calling it for anything else, you should almost certainly 
;   be calling (help) instead. 

(defun acad_helpdlg (helpfile topic)
 (help helpfile topic)
)


(defun *merr* (msg)
 (setq *error* m:err m:err nil)
 (princ)
)

(defun *merrmsg* (msg)
 (princ msg)
 (setq *error* m:err m:err nil)
 (princ)
)

;; Loads the indicated ARX app if it isn't already loaded
;; returns nil if no load was necessary, else returns the
;; app name if a load occurred.
(defun verify_arxapp_loaded (app) 
 (if (not (loadedp app (arx)))
     (arxload app f)
 )
)

;; determines if a given application is loaded...
;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....
;;
;; app is the filename of the application to check (extension is required)
;; appset is a list of applications, (such as (arx) or (ads)
;; 
;; returns T or nil, depending on whether app is present in the appset
;; indicated.  Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"
;; Also, if appset contains members that contain paths, app will right-match
;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that
;; "bar.arx" will *not* match "c:\\path\\foobar.arx."
(defun loadedp (app appset)
 (cond (appset  (or 
                    ;; exactly equal? (ignoring case)
                    (= (strcase (car appset))
                       (strcase app))
                    ;; right-matching? (ignoring case, but assuming that
                    ;; it's a complete filename (with a backslash before it)
				 (and 
				     (> (strlen (car appset)) (strlen app))
                     (= (strcase (substr (car appset) 
                                         (- (strlen (car appset)) 
                                            (strlen app) 
                                         ) 
                                 )
                        ) 
                        (strcase (strcat "\\" app))
                     )
			     )
                    ;; no match for this entry in appset, try next one....
                    (loadedp app (cdr appset)) )))
)


;;; ===== Single-line MText editor =====
(defun LispEd (contents / fname dcl state)
 (if (not (setq fname (getvar "program")))
    (setq fname "acad")
 )
 (strcat fname ".dcl")
 (setq dcl (load_dialog fname))
 (if (not (new_dialog "LispEd" dcl)) (exit))
 (set_tile "contents" contents)
 (mode_tile "contents" 2)
 (action_tile "contents" "(setq contents $value)")
 (action_tile "accept" "(done_dialog 1)")
 (action_tile "mtexted" "(done_dialog 2)" )
 (setq state (start_dialog))
 (unload_dialog dcl)
 (cond
   ((= state 1) contents)
   ((= state 2) -1)
   (t 0)
 )
)

;;; ===== Discontinued commands =====
(defun c:ddselect(/ cmdecho-save)
 (setq cmdecho-save (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (command "._+options" 7)
 (setvar "CMDECHO" cmdecho-save)
 (princ)
)

(defun c:ddgrips(/ cmdecho-save)
 (setq cmdecho-save (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (command "._+options" 7)
 (setvar "CMDECHO" cmdecho-save)
 (princ)
)

(defun c:gifin ()
 (alert "\nThe GIFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
 (princ)
)

(defun c:pcxin ()
 (alert "\nThe PCXIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
 (princ)
)

(defun c:tiffin ()
 (alert "\nThe TIFFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
 (princ)
)

(defun c:ddemodes()
 (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.")
 (princ)
)

(defun c:ddrmodes(/ cmdecho-save)
 (setq cmdecho-save (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (command "._+dsettings" 0)
 (setvar "CMDECHO" cmdecho-save)
 (princ)
)

;; HPCONFIG
(defun c:hpconfig (/ hlppath)
 (if (not (setq hlppath (findfile "acad.hlp")))
   (setq hlppath ""))
 (help hlppath "hpconfig")
 (princ)
)

;; OCECONFIG
(defun c:oceconfig (/ hlppath)
 (if (not (setq hlppath (findfile "acad.hlp")))
   (setq hlppath ""))
 (help hlppath "oceconfig")
 (princ)
)

;; CCONFIG
(defun c:cconfig (/ hlppath)
 (if (not (setq hlppath (findfile "acad.hlp")))
   (setq hlppath ""))
 (help hlppath "cconfig")
 (princ)
)

;;; ===== AutoLoad =====

;;; Check list of loaded <apptype> applications ("ads" or "arx")
;;; for the name of a certain appplication <appname>.
;;; Returns T if <appname> is loaded.

(defun ai_AppLoaded (appname apptype)
  (apply 'or
     (mapcar 
       '(lambda (j)
    (wcmatch
              (strcase j T)
              (strcase (strcat "*" appname "*") T)
           )   
        )
 (eval (list (read apptype)))
     )
  )
)

;;  
;;  Native Rx commands cannot be called with the "C:" syntax.  They must 
;;  be called via (command).  Therefore they require their own autoload 
;;  command.

(defun autonativeload (app cmdliste / qapp)
 (setq qapp (strcat "\"" app "\""))
 (setq initstring "\nInitializing...")
 (mapcar
  '(lambda (cmd / nom_cmd native_cmd)
     (progn
       (setq nom_cmd (strcat "C:" cmd))
       (setq native_cmd (strcat "\"_" cmd "\""))
       (if (not (eval (read nom_cmd)))
           (eval
            (read (strcat
                   "(defun " nom_cmd "()"
                   "(setq m:err *error* *error* *merrmsg*)"
                   "(if (ai_ffile " qapp ")"
                   "(progn (princ initstring)"
                   "(_autoarxload " qapp ") (command " native_cmd "))"
                   "(ai_nofile " qapp "))"
                   "(setq *error* m:err m:err nil))"
                   ))))))
  cmdliste)
 nil
)

(defun _autoqload (quoi app cmdliste / qapp symnam)
 (setq qapp (strcat "\"" app "\""))
 (setq initstring "\nInitializing...")
 (mapcar
  '(lambda (cmd / nom_cmd)
     (progn
       (setq nom_cmd (strcat "C:" cmd))
       (if (not (eval (read nom_cmd)))
           (eval
            (read (strcat
                   "(defun " nom_cmd "( / rtn)"
                   "(setq m:err *error* *error* *merrmsg*)"
                   "(if (ai_ffile " qapp ")"
                   "(progn (princ initstring)"
                   "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"
                   "(ai_nofile " qapp "))"
                   "(setq *error* m:err m:err nil)"
                   "rtn)"
                   ))))))
  cmdliste)
 nil
)

(defun autoload (app cmdliste)
 (_autoqload "" app cmdliste)
)

(defun autoarxload (app cmdliste)
 (_autoqload "arx" app cmdliste)
)

(defun autoarxacedload (app cmdliste / qapp symnam)
 (setq qapp (strcat "\"" app "\""))
 (setq initstring "\nInitializing...")
 (mapcar
  '(lambda (cmd / nom_cmd)
     (progn
       (setq nom_cmd (strcat "C:" cmd))
       (if (not (eval (read nom_cmd)))
           (eval
            (read (strcat
                   "(defun " nom_cmd "( / oldcmdecho)"
                   "(setq m:err *error* *error* *merrmsg*)"
                   "(if (ai_ffile " qapp ")"
                   "(progn (princ initstring)"
                   "(_autoarxload " qapp ")"
                   "(setq oldcmdecho (getvar \"CMDECHO\"))"
                   "(setvar \"CMDECHO\" 0)"
                   "(command " "\"_" cmd "\"" ")"
                   "(setvar \"CMDECHO\" oldcmdecho))"
                   "(ai_nofile " qapp "))"
                   "(setq *error* m:err m:err nil)"
                   "(princ))"
                   ))))))
  cmdliste)
 nil
)

(defun _autoload (app)
; (princ "Auto:(load ") (princ app) (princ ")") (terpri)
 (load app)
)

(defun _autoarxload (app)
; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)
 (arxload app)
)

(defun ai_ffile (app)
 (or (findfile (strcat app ".lsp"))
     (findfile (strcat app ".exp"))
     (findfile (strcat app ".exe"))
     (findfile (strcat app ".arx"))
     (findfile app)
 )
)

(defun ai_nofile (filename)
 (princ
   (strcat "\nThe file "
           filename
           "(.lsp/.exe/.arx) was not found in your search path folders."
   )
 )
 (princ "\nCheck the installation of the support files and try again.")
 (princ)
)


;;;===== AutoLoad LISP Applications =====
;  Set help for those apps with a command line interface

(autoload "edge"  '("edge"))
(setfunhelp "C:edge" "" "edge")

(autoload "filter" '("filter " "filter"))

(autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"
                "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")
)
(setfunhelp "C:3d" "" "3d")
(setfunhelp "C:ai_box" "" "3d_box")
(setfunhelp "C:ai_pyramid" "" "3d_pyramid")
(setfunhelp "C:ai__wedge" "" "3d_wedge")
(setfunhelp "C:ai_dome" "" "3d_dome")
(setfunhelp "C:ai_mesh" "" "3d_mesh")
(setfunhelp "C:ai_sphere" "" "3d_sphere")
(setfunhelp "C:ai_cone" "" "3d_cone")
(setfunhelp "C:ai_torus" "" "3d_torus")
(setfunhelp "C:ai_dish" "" "3d_dish")

(autoload "3darray" '("3darray"))
(setfunhelp "C:3darray" "" "3darray")

(autoload "ddvpoint" '("ddvpoint"))

(autoload "mvsetup" '("mvsetup"))
(setfunhelp "C:mvsetup" "" "mvsetup")

(autoload "ddptype" '("ddptype"))

(autoload "attredef" '("attredef"))
(setfunhelp "C:attredef" "" "attredef")


(autoload "tutorial" '("tutdemo" "tutclear"
			       "tutdemo" 
			       "tutclear"))

;;;===== AutoArxLoad Arx Applications =====

(autoarxload "geomcal" '("cal" "cal"))

(autoarxload "geom3d" '("mirror3d" "rotate3d" "align"
	      "mirror3d" "rotate3d" 
                                "align"))


;;; ===== Double byte character handling functions =====

(defun is_lead_byte(code)
   (setq asia_cd (getvar "dwgcodepage"))
   (cond
       ( (or (= asia_cd "dos932")
             (= asia_cd "ANSI_932")
         )
         (or (and (<= 129 code) (<= code 159))
             (and (<= 224 code) (<= code 252))
         )
       )
       ( (or (= asia_cd "big5")
             (= asia_cd "ANSI_950")
         )
         (and (<= 129 code) (<= code 254))
       )
       ( (or (= asia_cd "gb2312")
             (= asia_cd "ANSI_936")
         )
         (and (<= 161 code) (<= code 254))
       )
       ( (or (= asia_cd "johab")
             (= asia_cd "ANSI_1361")
         )
         (and (<= 132 code) (<= code 211))
       )
       ( (or (= asia_cd "ksc5601")
             (= asia_cd "ANSI_949")
         )
         (and (<= 129 code) (<= code 254))
       )
   )
)

;;; ====================================================


;;;
;;;  FITSTR2LEN
;;;
;;;  Truncates the given string to the given length. 
;;;  This function should be used to fit symbol table names, that
;;;  may turn into \U+ sequences into a given size to be displayed
;;;  inside a dialog box.
;;;
;;;  Ex: the following string: 
;;;
;;;      "This is a long string that will not fit into a 32 character static text box."
;;;
;;;      would display as a 32 character long string as follows:
;;;
;;;      "This is a long...tatic text box."
;;;

(defun fitstr2len (str1 maxlen)

   ;;; initialize internals
   (setq tmpstr str1)
   (setq len (strlen tmpstr))

   (if (> len maxlen) 
        (progn
           (setq maxlen2 (/ maxlen 2))
           (if (> maxlen (* maxlen2 2))
                (setq maxlen2 (- maxlen2 1))
           )
           (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))
                (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))
                (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))
           )
           (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))
                (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3))))
                (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))
           )
           (setq str2 (strcat tmpstr1 "..." tmpstr2))
        ) ;;; progn
        (setq str2 (strcat tmpstr))
   ) ;;; if
) ;;; defun


;;;
;;;  If the first object in a selection set has an attached URL
;;;  Then launch browser and point to the URL.
;;;  Called by the Grips Cursor Menu
;;;

(defun C:gotourl ( / ssurl url i)
  (setq m:err *error* *error* *merrmsg* i 0)

; if some objects are not already pickfirst selected, 
; then allow objects to be selected

 (if (not (setq ssurl (ssget "_I")))
     (setq ssurl (ssget))
 )

; if geturl LISP command not found then load arx application

 (if (/= (type geturl) 'EXRXSUBR)
   (arxload "dwfout")
 )

;  Search list for first object with an URL
 (while (and (= url nil) (< i (sslength ssurl)))
   (setq url (geturl (ssname ssurl i))
  i (1+ i))
 )

; If an URL has be found, open browser and point to URL
 (if (= url nil)
   (alert "No Universal Resource Locator associated with the object.")
   (command "_.browser" url)
 )

 (setq *error* m:err m:err nil)
 (princ)

)

;; Used by the import dialog to silently load a 3ds file
(defun import3ds (filename / filedia_old render)
 ;; Load Render if not loaded
 (setq render (findfile "acRender.arx"))
 (if render
   (verify_arxapp_loaded render) 
   (quit)
 )

 ;; Save current filedia & cmdecho setting.
 (setq filedia-save (getvar "FILEDIA"))
 (setq cmdecho-save (getvar "CMDECHO"))
 (setvar "FILEDIA" 0)
 (setvar "CMDECHO" 0)

 ;; Call 3DSIN and pass in filename.
 (c:3dsin 1 filename)

 ;; Reset filedia & cmdecho
 (setvar "FILEDIA" filedia-save)
 (setvar "CMDECHO" cmdecho-save)
 (princ)
)

;; Silent load.
(princ)

;; Silent load for the Express Tools.
;; Altering this line will affect Express Tools functionality
(load "acettest.fas" (princ))
;**********************************************************************
(setvar "pickbox" 4)
(setvar "aperture" 4)
;****************************************
; Zoom
(defun c:zz ()  (command "'_zoom" "_p"))
(defun c:ze ()  (command "'_zoom" "e"))
(defun c:za ()  (command "'.zoom" "a"))
(defun c:zd ()  (command "'.zoom" "d"))
(defun c:zp ()  (command "'.zoom" "p"))
;****************************************
; Cat kich thuoc
(DEFUN C:CD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I
               PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OLDERR *error*
     *error* myerror)
(PRINC "lµm on lua chon duong kich thuoc!")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Point to trim or extend:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
   (PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ N70  (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT13I (POLAR PT13 GOCY 2))
	(SETQ PT14I (POLAR PT14 GOCY 2))
	(SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
	(SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
	(SETQ O13 (ASSOC 13 DS))
	(SETQ O14 (ASSOC 14 DS))
	(SETQ N13 (CONS 13 PT13N))
	(SETQ N14 (CONS 14 PT14N))
	(SETQ DS (SUBST N13 O13 DS))
	(SETQ DS (SUBST N14 O14 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
   )
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
(setq *error* OLDERR)               ; Restore old *error* handler
(PRINC)
)
;**************************************************************
; Cham thep
(defun C:th ( / p1 p2 p3 p4 a l n deltaX deltaY i x1 y1 x2 y2 )
      (setq p1 (getpoint "\nDiem dau: ") )
      (setq p2 (getpoint p1 "\nDiem cuoi: ") )
      (setq a  (getdist  "Khoang cach    : ") )
;      (setq b  (getdist  "Lenght      : ") )
;      (setq a 0.8)
      (setq b 0.5) 
      (setq l  (distance p1 p2) )
      (setq n  (fix ( / l a ) ) )
      (setq deltaX ( - (car p2) (car p1) ) )
      (setq deltaY ( - (cadr p2) (cadr p1) ) )
      (setq i 0)
      (setvar "OSMODE" 0)
      (command "_UNDO" "_GROUP")
      (while (<= i n)
       (setq x1 ( + (car p1) (* i (* (/ a l) deltaX )  
                             )
                ) 
       )
       (setq y1 ( + (cadr p1) (* i (* ( / a l ) deltaY ) 
                              )
                ) 
       )
       (setq p3 (list x1 y1) )
       (setq x2 ( + x1 (* -1 (* b (/ deltaY l) )
                       ) 
                ) 
       ) 
       (setq y2 ( + y1 (* b (/ deltaX l) 
                       )
                )
       ) 
       (setq p4 (list x2 y2) )
       (command "donut" "0" "0.8" p4 "")
       (setq i (+ i 1) )
      )
      (command "_UNDO" "_END")
      (setvar "OSMODE" 183)
)
;**************************************
; Duong gach cheo 45 do
(defun C:GC ()
(setq pt1 (getpoint "Vi tri : "))
(setvar "OSMODE" 0)
(setq goc (/ PI 4))
(setq kcach 1)
(setq pt2 (polar pt1 goc (* kcach -1)))
(setq pt3 (polar pt1 goc (* kcach 1)))
(command "line" pt2 pt3 "")
(setvar "OSMODE" 183)
)
;***************************************
; Moc tron ben trai
(defun C:mt ()
(setq pt1 (getpoint "Vi tri : "))
(setvar "OSMODE" 0)
(setq goc (/ PI 2))
(setq kcach 1)
(setq pt2 (polar pt1 goc (* kcach 1)))
(command "arc" pt1 "@-0.5,0.5" "@0.5,0.5" "")
(command "line" pt2 "@1,0" "")
(setvar "OSMODE" 18300)
)
; ******************************************
; Moc tron ben phai
(defun C:mp ()
(setq pt1 (getpoint "Vi tri : "))
(setvar "OSMODE" 0)
(setq goc (/ PI 2))
(setq kcach 1)
(setq pt2 (polar pt1 goc (* kcach 1)))
(command "arc" pt1 "@0.5,0.5" "@-0.5,0.5" "")
(command "line" pt2 "@-1,0" "")
(setvar "OSMODE" 18300)
)
; ******************************************
; Moc nhon ben trai
(defun C:m3 ()
(setq pt1 (getpoint "Vi tri : "))
(setvar "OSMODE" 0)
(setq goc (/ PI 6))
(setq kcach 2)
(setq pt2 (polar pt1 goc (* kcach 1)))
(command "line" pt1 pt2 "")
(setvar "OSMODE" 18300)
)
;*******************************************************************************

********
; Xoay text theo mot duong thang chuan
        (DEFUN C:xt ()
        (GRAPHSCR)
        (PROMPT "Chon duong thang hoac chu lam chuan:")
        (SETQ A1 (ENTSEL))
        (IF (AND (= "LINE" (CDR (ASSOC 0 (SETQ A2 (ENTGET (CAR A1))))))
             )
             (PROGN
              (SETQ ANGOLD (ANGLE (CDR (ASSOC 10 A2)) (CDR (ASSOC 11 A2))))
             )
         )           
        (PROMPT "Chon chu can phai xoay:")
        (SETQ SET (SSGET))
        (SETQ QUANT (SSLENGTH SET ))
        (SETQ INDEX 0)
        (WHILE (< INDEX QUANT)
            (IF (AND (= "TEXT" (CDR (ASSOC 0 (SETQ A3 (ENTGET (SSNAME SET INDEX))))))
                )
              (PROGN
                (SETQ A3 (SUBST (CONS 50 ANGOLD) (ASSOC 50 A3) A3))
                (ENTMOD A3)
              )
            )
          (SETQ INDEX (+ INDEX 1))
        )
        (princ)
       )
;*************************************************************
; Xoay Crosshair theo duong thang chuan
(defun c:sn (/ ent pt1 pt2 ang)
 (setq cmd (getvar "cmdecho"))
 (setvar "cmdecho" 1)
 (prompt (strcat"\nSnap angle will be set to angle of line"))
 (setq ent (entget (car (entsel))))
 (setq pt1 (cdr (assoc 10 ent)))
 (setq pt2 (cdr (assoc 11 ent)))
 (setq ang (angle pt1 pt2))
 (setq ang (/ (* ang 180.0) pi))
 (setvar "cmdecho" 0)
 (command "setvar" "snapang" ang)
 (setvar "cmdecho" cmd)
)
;*************** VE DUONG HAN VOI CHIEU CAO LA 20 ********************
(defun C:DH ( / p1 p2 p3 p4 a b l n deltaX deltaY i x1 y1 x2 y2 )
      (setq p1 (getpoint "Start point  : ") )
      (setq p2 (getpoint p1 "End point  : ") )
;       (setq a  (getdist  "Distance    : ") )
;       (setq b  (getdist  "Lenght      : ") )
      (setq a 20 )
;;;chieu cao duong han la 20
      (setq b 20 )
;;;chieu cao duong han la 20	
      (setq l  (distance p1 p2) )
      (setq n  (fix ( / l a ) ) )
      (setq deltaX ( - (car p2) (car p1) ) )
      (setq deltaY ( - (cadr p2) (cadr p1) ) )
      (setq i 0)
      (setvar "OSMODE" 0)
      (while (<= i n)
       (setq x1 ( + (car p1) (* i (* (/ a l) deltaX )  
                             )
                ) 
       )
       (setq y1 ( + (cadr p1) (* i (* ( / a l ) deltaY ) 
                              )
                ) 
       )
       (setq p3 (list x1 y1) )
       (setq x2 ( + x1 (* -1 (* b (/ deltaY l) )
                       ) 
                ) 
       ) 
       (setq y2 ( + y1 (* b (/ deltaX l) 
                       )
                )
       ) 
       (setq p4 (list x2 y2) )
       (COMMAND "LAYER" "M" "Duong_han" "")  
(command "LINE" p3 p4 "")
       (setq i (+ i 1) )
      )
      (setvar "OSMODE" 177)
)
;;; ================================ Layer ON ==============================
(Defun LAYON ()  (setvar "cmdecho" 0)
(setq Lay loff1) (setq Loff1 Loff2) (setq Loff2 Loff3) (setq Loff3 Loff4) (setq Loff4 Loff5) (setq Loff5 Loff6) (setq Loff6 "0")
 (Command "LAYER" "ON" Lay "") (princ (strcat "\n      Layer : " LAY " da ON."))  (princ))
(defun c:LAYON () (layon)) (defun c:Lon   () (layon))
(Defun C:ln () (setvar "cmdecho" 0)  (Command "_.LAYER" "_ON" "*" "") (princ "\nDa ON toan bo cac Layer !") (princ))
;;******************************************************************************

****************
(DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI
               PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OLDERR *error*
     *error* myerror)
(PRINC "Please select dimension object!")
(SETQ SS (SSGET))
(SETVAR "CMDECHO" 0)
(SETQ PT (GETPOINT "Point to trim or extend:"))
(SETQ PT (TRANS PT 1 0))
(COMMAND "UCS" "W")
(SETQ LTH (SSLENGTH SS))
(SETQ DEM 0)
(WHILE (< DEM LTH)
   (PROGN
(SETQ DS (ENTGET (SSNAME SS DEM)))
(SETQ KDL (CDR (ASSOC 0 DS)))
(IF (= "DIMENSION" KDL)
   (PROGN
	(SETQ PT13 (CDR (ASSOC 13 DS)))
	(SETQ PT14 (CDR (ASSOC 14 DS)))
	(SETQ PT10 (CDR (ASSOC 10 DS)))
	(SETQ PT11 (CDR (ASSOC 11 DS)))
	(SETQ N70 (CDR (ASSOC 70 DS)))
	(IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
	   (PROGN
		(SETQ GOCY (ANGLE PT10 PT14))
		(SETQ GOCX (+ GOCY (/ PI 2)))
	   )
	)
	(SETVAR "OSMODE" 0)
	(SETQ PTI (POLAR PT GOCX 2))
	(SETQ PT10I (POLAR PT10 GOCY 2))
	(SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
	(SETQ KC (DISTANCE PT10 PT10N))
	(SETQ O10 (ASSOC 10 DS))
	(SETQ N10 (CONS 10 PT10N))
	(SETQ DS (SUBST N10 O10 DS))
	(SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
	(SETQ O11 (ASSOC 11 DS))
	(SETQ N11 (CONS 11 PT11N))
	(SETQ DS (SUBST N11 O11 DS))
	(ENTMOD DS)
   )
)
(SETQ DEM (+ DEM 1))
   )
)
(COMMAND "UCS" "P")
(SETVAR "CMDECHO" CMD)
(SETVAR "OSMODE" OSM)
(setq *error* OLDERR)
(PRINC)
)
;;;   ACADAB.lsp
;;;   © Copyright 1988-1992 by Autodesk, Inc.
;;;
;;;   This program is copyrighted by Autodesk, Inc. and is  cấp quyềnd
;;;   to you under the following conditions.  You may not distribute
;;;   or  publish the source code of this program in any form.   You
;;;   may  incorporate this code in object form in derivative  works
;;;   provided  such  derivative  works  are  (i.) are  designed and
;;;   intended  to  work  solely  with  Autodesk, Inc. products, and
;;;   (ii.)  contain  Autodesk's  copyright  notice  "©  Copyright
;;;   1988-1992 by Autodesk, Inc."
;;;
;;;   AUTODESK  PROVIDES THIS PROGRAM "AS IS" AND WITH  ALL  FAULTS.
;;;   AUTODESK  SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF  MER-
;;;   CHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK,  INC.
;;;   DOES  NOT  WARRANT THAT THE OPERATION OF THE PROGRAM  WILL  BE
;;;   UNINTERRUPTED OR ERROR FREE.
;;;
;;;   by Jan S. Yoder
;;;   09 March  1990
;;;
;;;   REVISIONS
;;;   1.01  22 May 1991  DTP -- Minor bug fixes.
;;;   1.02  18 June 1991  JSY, DTP -- Minor bug fixes.
;;;
;;;--------------------------------------------------------------------------;
(defun ketthuc ()
(setvar	"cmdecho"	luuecho)
(setq *error*	luu
	luu		nil	
	luuecho	nil
);setq
(princ)
)		
;*********************************************************************
(defun modau ()
(setq 	luu *error
	luuecho	(getvar	"cmdecho")
	*error	(ketthuc)
)
)
;*********************************************************************
(defun xulytext (text / kytu ma sokt luusokt lui )
(setq 	kytu	(substr text (strlen text))
	ma	(ascii kytu)
	sokt	(read kytu) 
	lui	1
)
(if (numberp sokt)
	(progn
		(setq luusokt	(1+ sokt))
		(if (and 	(numberp sokt) 
				(> (strlen text) 1)
		    )	
		   (progn
			(setq 	kytu	(substr text (1- (strlen text)))
					sokt	(read kytu) 
									)
			(if 	(numberp sokt) 
				(setq luusokt (1+	sokt)
						lui 	2

					)
			)
		    );progn	
		)
		(if (= luusokt	200)	(setq 	luusokt	0))
		(setq 	kytu		(rtos luusokt 2 0)

				text	(strcat	(substr text 1 (- (strlen text) lui))  kytu)
		)
	);progn			 
	(if   (or 	(= kytu "z")
			(= kytu "Z")
		)
		(setq 	text		(strcat 	text	"0")
			textxl		"0"
		)
		(setq		ma	(1+	ma)
				text	(strcat	(substr text 1 (1- (strlen text)))  (chr ma))
		)
	);if
);if
)
;*********************************************************************
(defun doitext(tendoituong / chuoi doituong thoat tam dsach kieu text vitri10 vitri11 dem canle)
;Neu doi tuong la text thi tiep tuc
(setq 	doituong 	(entget  tendoituong)
kieu		(cdr (assoc 	0	doituong))
canle		(cdr (assoc 	72	doituong))
)	
(if (or (= kieu		"TEXT")
(= kieu 	"MTEXT")	
   ) 	
(progn
	(setq	textxl	(xulytext textxl)
		text	(cons 1 textxl)
		vitri10 	(cdr (assoc 10 doituong))
		vitri10 	(list (+ (car vitri10) (car vitrilech)) (+ (nth 1 vitri10) (nth 1 vitrilech)))
		vitri10		(cons 10 vitri10)
		vitri11 	(cdr (assoc 11 doituong))
		vitri11 	(list (+ (car vitri11) (car vitrilech)) (+ (nth 1 vitri11) (nth 1 vitrilech)))
		vitri11		(cons 11 vitri11)
		dem	0
		dsach	nil
	)
	(foreach tam 	doituong
		(cond
			((= (car tam)	1)	(setq dsach 	(append dsach (list text))))
			((= (car tam)	10)	(setq dsach 	(append dsach (list vitri10))))
			((= (car tam)	11)	(setq dsach 	(append dsach (list vitri11))))
			((setq dsach 	(append dsach (list tam))))
		)
	)
	(entmake dsach)
);progn
);if
);
;*********************************************************************
;sao doi tuong cu sang vi tri moi

(defun copy_dt (tendoituong )
(command "copy" tendoituong "" goc toi )
);defun
;*********************************************************************
(defun c:nl (/ tdt ssdt sodt index)
(defun ObjName (ssdt /)
(cdr (assoc '0 (entget ssdt)))
)
(defun MoPL (ssdt /)
(= (cdr (assoc '70 (entget ssdt))) 0)
)
(defun NoiPL (ssdt /)
(if (MoPL ssdt)
(command ".PEDIT" ssdt "J" "All" "" "X")
)
)
(defun NoiLC (ssdt /)
(command ".PEDIT" ssdt "Y" "J" "All" "" "X")
)
(setq
tdt (ssget)
sodt (sslength tdt)
index 0
)
(repeat sodt
(setq
ssdt (ssname tdt index)
index (1+ index)
)
(if (or (= (Objname ssdt) "LWPOLYLINE")
(= (Objname ssdt) "POLYLINE")
)
(NoiPL ssdt)
)
(if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
(NoiLC ssdt)
)
)
(princ)
)
;;;------------------------CAC LENH VE LOP---------------
(defun c:li (/ LAY)
(setvar "cmdecho" 0)
(setq LAY (entsel "\n>Pick vao doi tuong <Enter chon>: "))
(if LAY 
   (progn     
      (setq LAY (cdr (assoc 8 (entget (car LAY)))))
      (command "_.layer" "set" LAY "")
      (princ (strcat "\nLayer " LAY " la hien hanh."))
   )
   (progn
     (if (not ddlop) (load "ddlop"))
     (if (setq LAY (ddlop)) 
        (progn
           (command "_.LAYER" "ON" LAY "THAW" LAY "SET" LAY "")
           (princ (strcat "\nLayer " LAY " la hien hanh."))
        )
     )
   )
)
(princ)
)
;-------------
(Defun C:K (/ LAY)
 (setvar "cmdecho" 0)
 (setq LAY (entsel "\n>Pick doi tuong tren layer muon LOCK: "))
 (if LAY
   (progn
     (setq LAY (cdr (assoc 8 (entget (car LAY)))))
     (Command "_.LAYER" "_LOCK" LAY "")
     (princ (strcat "\nLayer " LAY " da LOCK."))
   )
 )
 (princ)
)

;-----------

(Defun C:UK (/ LAY)

 (setvar "cmdecho" 0)
 (setq LAY (entsel "\n>Pick doi tuong tren layer muon UNLOCK: "))
 (if LAY
   (progn
     (setq LAY (cdr (assoc 8 (entget (car LAY)))))
     (Command "_.LAYER" "_UNLOCK" LAY "")
     (princ (strcat "\nLayer " LAY " da UNLOCK."))
   )
 )
 (princ)
)
;-------------

(Defun C:OO (/ LAY TEMP)
 (setvar "cmdecho" 0)
 (setq LAY (entsel "\n>Pick doi tuong tren layer muon OFF: "))
 (if LAY
  (progn
   (setq LAY (entget (car LAY)))
   (setq LAY (cdr (assoc 8 LAY)))
   (if (= LAY (getvar "clayer"))
      (progn 
  (initget "Yes No")
         (setq TEMP (getkword (strcat "\n>Layer " LAY " la hien hanh. Tiep tuc? Yes/<No>: ")))
  (if (= TEMP "Yes")
    (progn
       (command "_.LAYER" "OFF" LAY "YES" "")
       (princ (strcat "\nLayer " LAY " da OFF (Layer hien hanh)."))
    )	     
  )
      )
      (progn
          (command "_.LAYER" "OFF" LAY "")
          (princ (strcat "\nLayer " LAY " da OFF."))
      )	            
   )
  )
 )
 (princ)
)

;-------------
(Defun C:OI ()
 (setvar "cmdecho" 0)
 (Command "_.LAYER" "_ON" "*" "")
 (princ)
)
;-------------
(Defun C:IO (/ SS CNT LAY LAYLST VAL)

 (setvar "cmdecho" 0)
 (if (not (setq SS (ssget "i")))
   (progn
     (prompt "\nChon doi tuong tren layer(s) muon tach ra: ")
     (setq SS (ssget))
   )
 )

 (if SS
   (progn

     (setq CNT 0)

     (while (setq LAY (ssname SS CNT))
       (setq LAY (cdr (assoc 8 (entget LAY))))
       (if (not (member LAY LAYLST))
         (setq LAYLST (cons LAY LAYLST))
       )
       (setq CNT (1+ CNT))
     )

     (if (member (getvar "CLAYER") LAYLST)
       (setq LAY (getvar "CLAYER"))
       (setvar "CLAYER" (setq LAY (last LAYLST)))
     )

     (command "_.LAYER" "_OFF" "*" "_Y")
     (foreach VAL LAYLST (command "_ON" VAL))
     (command "")

     (if (= (length LAYLST) 1)
       (prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))
       (prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "
                       "Layer " LAY " la hien hanh."
               )
       )
     )
   )
 )

 (princ)
)

;-----------
(defun c:CX (/ A B C D)
 (setvar "CMDECHO" 0)
 (prompt "\nFor rotated copy")
 (ssget)
 (setq A (getpoint "\nBase point: "))
 (command "ID" A)
 (setq B (getpoint "\nNew point <Return> if same as Base point> "))
 (if (= B nil) (setq B A))
;  (setq D (/ (* (getangle B "\nRotation angle <0>: ") 180.0) pi))
 (command "COPY" "P" "" A A)
 (command "MOVE" "P" "" A :)
 (command "ROTATE" "P" "" B pause)
 (setvar "CMDECHO" 1)
)
(defun c:Ht(/ eni23 n23 ht23 l23 e23)
 (initget 7)
 (prompt "\nSelect texts: ")
 (setvar "cmdecho" 0)
 (command "select" "au" pause)
 (setq eni23 (ssget "p"))
 (setq n23 (sslength eni23))
 (setq ht23 (getdist "\nNew height: "))
 (setq l23 0)
 (command "undo" "mark")
     (while (< l23 n23)
       (setq e23 (entget (ssname eni23 l23)))
       (if (= "TEXT" (cdr (assoc 0 e23)))
         (progn
           (setq e23 (subst (cons 40 ht23) (assoc 40 e23) e23))
           (entmod e23)
         )
       )
       (setq l23 (1+ l23))
     )
 (prompt "\nFinished.")
 (setvar "cmdecho" 1)
)
(defun c:Ut ()
  (setvar "cmdecho" 0)
  (prompt "\nSelect texts: ")
;;;*************** THAY DOI MAU Vµ NET VE CHO DOI TUONG VE *********************
(defun c:1()  
 (prompt "_.change ")
 (princ "\n Change Colour to Red - 1")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "1" "") 
(princ)
)
(defun c:2()  
 (prompt "_.change ")
 (princ "\n Change Colour to yellow -2 ")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" " 2" "") 
(princ)
)
(defun c:4()  
 (prompt "_.change ")
 (princ "\n Change Colour to green -4")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "4" "") 
(princ)
)
(defun c:3()  
 (prompt "_.change ")
 (princ "\n Change Colour to cyan -3")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "3" "") 
(princ)
)
(defun c:5()  
 (prompt "_.change ")
 (princ "\n Change Colour to blue -5")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "5" "") 
(princ)
)
(defun c:6()  
 (prompt "_.change ")
 (princ "\n Change Colour to  magenta -6")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "6" "") 
(princ)
)
(defun c:7()  
 (prompt "_.change ")
 (princ "\n Change Colour to white -7")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "7" "") 
(princ)
)
(defun c:8()  
 (prompt "_.change ")
 (princ "\n Change Colour to 8 -8")
 (setq sset (ssget))
 (if (null sset) 
   (progn
     (princ "\nERROR: Nothing selected.")
     (exit)
   )
 )
 (command "_.change" sset "" "P" "C" "8" "") 
(princ)
)
(defun c:9 ()
(setq ss (ssget))
(command "chprop" ss "" "c" "9" "")
)
(defun c:10 ()
(setq ss (ssget))
(command "chprop" ss "" "c" "10" "")
)
  (command "select" "au" pause)
  (setq sstxt (ssget "p")
        sslen (sslength sstxt)
        ctr 0
  )
  (command "undo" "mark")
  (while (< ctr sslen)
      (setq listxt (entget (ssname sstxt ctr))
            txttxt (cdr (assoc 1 listxt))
            enttxt (cdr (assoc 0 listxt))
      )
      (if (= enttxt "TEXT")
        (progn
          (setq testxt (substr txttxt 1 3))
          (if (or (= testxt "%%u") (= testxt "%%U"))
              (setq newtxt (substr txttxt 4))
              (setq newtxt (strcat "%%u" txttxt))
          )
          (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
          (entmod listxt)
        )
      )
      (setq ctr (1+ ctr))
   )
  (setvar "cmdecho" 1)
)
(defun c:ad ()
  (setvar "cmdecho" 0)
  (prompt "\nSelect texts: ")
  (command "select" "au" pause)
  (setq sstxt (ssget "p")
        sslen (sslength sstxt)
        ctr 0
  )
  (command "undo" "mark")
  (while (< ctr sslen)
      (setq listxt (entget (ssname sstxt ctr))
            txttxt (cdr (assoc 1 listxt))
            enttxt (cdr (assoc 0 listxt))
      )
      (if (= enttxt "TEXT")
        (progn
          (setq testxt (substr txttxt 1 3))
          (if (or (= testxt "%%P") (= testxt "%%P"))
              (setq newtxt (substr txttxt 4))
              (setq newtxt (strcat "%%P" txttxt))
          )
          (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
          (entmod listxt)
        )
      )
      (setq ctr (1+ ctr))
   )
  (setvar "cmdecho" 1)
)
(defun c:Dk ()
  (setvar "cmdecho" 0)
  (prompt "\nSelect texts: ")
  (command "select" "au" pause)
  (setq sstxt (ssget "p")
        sslen (sslength sstxt)
        ctr 0
  )
  (command "undo" "mark")
  (while (< ctr sslen)
      (setq listxt (entget (ssname sstxt ctr))
            txttxt (cdr (assoc 1 listxt))
            enttxt (cdr (assoc 0 listxt))
      )
      (if (= enttxt "TEXT")
        (progn
          (setq testxt (substr txttxt 1 3))
          (if (or (= testxt "%%C") (= testxt "%%C"))
              (setq newtxt (substr txttxt 4))
              (setq newtxt (strcat "%%C" txttxt))
          )
          (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
          (entmod listxt)
        )
      )
      (setq ctr (1+ ctr))
   )
  (setvar "cmdecho" 1)
)
;;; =========================== VE NET CAT CHEO =============================
(defun C:nc () (setq old_osmode (getvar "OSMODE"))
  (setq ps1 (getpoint "\nPick diem thu nhat: "))
  (setq ps2 (getpoint ps1 "\nPick diem cuoi: ")) (setq sb 300.0 sh 500.0 se 1.0)
  (setq ang (angle ps1 ps2)) (setq pf1 (polar ps1 ang (- 0.0 se)))
  (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
  (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
  (setq pf5 (polar pf2 ang sb)) (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
  (setq pf6 (polar ps2 ang se)) (setvar "OSMODE" 0) (setvar "BLIPMODE" 0)
  (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
  (setvar "OSMODE" 177) (setvar "BLIPMODE" 0)   (setvar "OSMODE" old_osmode)   (princ)   )
;;; =========================== VE MAT CAT SAN ==============================



;------------------------



(defun c:vs (/ rongdam caodam daysan nangdam lechsan pt1 pt2 pdt pdd pphu 
	l_dv l_kt kt1 kt2 chuoi temp l_sspl ls_cu ds_cu l_pphu l_pdt
	 l_pdd olderr sanerr)

;-----------
(defun sanerr (s)
  (command "_.ERASE" l_dv "")
  (command "_.UNDO" "E")
  (setvar "blipmode" 1)
  (setvar "cmdecho" 1)
  (setq *error* olderr)
  (setq rongdam nil caodam nil daysan nil nangdam nil lechsan nil pt1 nil 
 l_kt nil kt1 nil kt2 nil pt2 nil pdt nil pdd nil pphu nil chuoi nil 
 temp nil l_sspl nil l_dv nil ls_cu nil ds_cu nil l_pphu nil l_pdt nil 
 l_pdd nil sanerr nil olderr nil)
  (princ)
)
;-------------
(defun doc_ff (/ f)
(setq f (open "c:/ACADTOOL/lib/san.lib" "r"))
(if (null f)
    (setq rongdam 220 caodam 400 daysan 80 nangdam 0 lechsan 0)
           (progn
        	(setq rongdam (atof (read-line f))
        	      caodam (atof (read-line f))
        	      daysan (atof (read-line f))
	      nangdam 0 lechsan 0
	)
	(close f)
    )
)
)
;---------------
(defun ghi_ff (/ f)
(setq f (open "c:/ACADTOOL/lib/san.lib" "w"))
       (write-line (rtos rongdam 2 0) f)
       (write-line (rtos caodam 2 0) f)
       (write-line (rtos daysan 2 0) f)
(close f)
)
;---------------
(defun prongdam (/ temp lap)
 (setq lap T)
 (while lap
   (initget 0)
   (setq temp (getreal (strcat "\n>Do rong dam<" (rtos rongdam 2 0) ">:")))
   (if temp
(if (or (< temp 100) (> temp 1000))
    (princ "\nLoi! Nhap rong dam trong khoang 100 den 1000")
    (setq rongdam temp lap nil)
       )
(setq lap nil)
   )
 )
)
;---------------
(defun pcaodam (/ temp lap)
  (setq lap T)
(while lap  
  (initget 0)
  (setq temp (getreal (strcat "\n>Chieu cao dam<" (rtos caodam 2 0) ">:")))
  (if temp
(if (< temp (+ (abs lechsan) daysan))
    (princ "\nLoi! Gia tri chieu cao dam khong hop le.")
    (setq caodam temp lap nil)
)
(setq lap nil)
  )
)
) 
;-----------
(defun pdaysan (/ temp lap)
(setq lap T)
(while lap  
  (initget 0)
  (setq temp (getreal (strcat "\n>Do day san<" (rtos daysan 2 0) ">:")))
  (if temp
(if (> temp (- caodam (abs lechsan)))
    (princ "\nLoi! Gia tri day san khong hop le.")
    (setq daysan temp lap nil)
)
(setq lap nil)
  )
)
) 
;-----------
(defun vesan1 (/ p1 p2 p3 p4 p5 p6) 
  (command "_.CIRCLE" (list (- (car pt1) (* 10 rongdam)) (cadr pt1)) (/ rongdam 2))
  (ssadd (entlast) l_dv)
  (command "_.PLINE" (getvar "lastpoint") "W" "0" "" 
    (list (- (car pt1) (* 6 rongdam)) (cadr pt1))
    "W" (* rongdam 2) "0" 
    (list (- (car pt1) (* rongdam 3)) (cadr pt1)) ""
  )
  (ssadd (entlast) l_dv)
  (command "_.CHPROP" l_dv "" "C" "3" "")
  (setq p1 (list (+ (car pt1) (/ rongdam 2)) (- (cadr pt1) (abs lechsan))))
  (setq p2 (list (+ (car pt1) (/ rongdam 2)) (cadr pt1)))
  (setq p3 (list (- (car pt1) (/ rongdam 2)) (cadr pt1)))
  (setq p4 (list (car p3) (- (cadr p3) caodam)))
  (setq p5 (list (+ (car p4) rongdam) (cadr p4)))
  (setq p6 (list (car p1) (- (cadr p1) daysan)))
  (command "_.PLINE" p1 p2 p3 p4 p5 p6 "")
  (ssadd (entlast) l_sspl)
  (setq pphu (list (car pt1) (+ (cadr pt1) lechsan)))
  (setq pdt p1)
  (setq pdd p6)
  (setq kt1 p3 kt2 p2)
)
;-----------
(defun plechsan (/ temp lap ch)
 (setq lap T)
 (setq ch (strcat "\n>Do lech san (Tu " 
	   (rtos (- daysan caodam) 2 0)
	   " den 0)<" (rtos lechsan 2 0) ">:"
 ))
 (while lap
    (initget 0)
    (setq temp (getreal ch))
    (if temp
(if (or (< temp (- daysan caodam)) (> temp 0))
    (princ "\nLoi! Do lech san vuot qua gia tri duoc phep")
    (setq lechsan temp lap nil)
)
(setq lap nil)
    )
 )      
)
;-----------
(defun pls (/ temp ch lap)

  (setq ch (strcat "\n>Do lech san (Tu " 
                   (rtos (- nangdam (- caodam daysan)) 2 0) " den "
	    (rtos nangdam 2 0) ")<"
	    (rtos lechsan 2 0) ">:"
  ))
  (setq lap T)
  (while lap
       (initget 0)
(setq temp (getreal ch))
    (if temp
(if (or (< temp (- nangdam (- caodam daysan))) (> temp nangdam))
    (princ "\nLoi! Do lech san vuot qua gia tri duoc phep")
    (setq lechsan temp lap nil)
)
(setq lap nil)
    )
  )
)
;-----------
(defun pnd (/ temp lap ch)
 (setq lap T)
    (setq ch (strcat "\n>Do nang dam <Tu "
	      (rtos ls_cu 2 0) " den "
	      (rtos (+ ls_cu (- caodam ds_cu)) 2 0) ")<"
	      (rtos nangdam 2 0) ">:"
    ))
 (while lap
    (initget 0)
    (setq temp (getreal ch))
    (if temp
(if (or (< temp ls_cu) (> temp (+ ls_cu (- caodam ds_cu))))
    (princ "\nLoi! Do nang dam vuot qua gia tri duoc phep")
    (setq nangdam temp lap nil)
)
(setq lap nil)
    )
 )   
)
;-----------
(defun vesan2 (/ p1 p2 p3 p4 p5 p6 p7 p8 p9)
  (command "_.UNDO" "M")
  (setq p1 (list (+ (car pt2) (/ rongdam 2)) (+ (cadr pt1) lechsan)))
  (setq p2 (list (car p1) (+ (cadr pt1) nangdam)))
  (setq p3 (list (- (car p2) rongdam) (cadr p2)))
  (setq p4 (list (- (car pt2) (/ rongdam 2)) (cadr pdt)))
  (setq p5 (list (car p1) (- (cadr p1) daysan)))
  (setq p6 (list (car p2) (- (cadr p2) caodam)))
  (setq p7 (list (car p3) (- (cadr p3) caodam)))
  (setq p8 (list (car p4) (cadr pdd)))
  (command "_.PLINE" p1 p2 p3 p4 pdt "")
  (ssadd (entlast) l_sspl)
  (command "_.PLINE" p5 p6 p7 p8 pdd "")
  (setq l_kt (cons p3 l_kt))
  (setq l_kt (cons p2 l_kt))
  (ssadd (entlast) l_sspl)
  (setq l_pdt (cons pdt l_pdt))
  (setq pdt p1)
  (setq l_pdd (cons pdd l_pdd))
  (setq pdd p5)
  (setq l_pphu (cons pphu l_pphu))
  (setq pphu (list (- (car p1) (/ rongdam 2)) (cadr p1)))
)
;----------
(defun pundo ()
(if (car l_pphu)
  (progn
   (command "_.UNDO" "B")
   (setq pphu (car l_pphu))
   (setq l_pphu (cdr l_pphu))
   (setq pdt (car l_pdt))
   (setq l_pdt (cdr l_pdt))
   (setq pdd (car l_pdd))
   (setq l_pdd (cdr l_pdd))
   (setq l_kt (cddr l_kt))
  )
  (princ "\nKhong the Undo!")
)
)
;----------
(defun ketthuc (/ d_log la_san mau_san la_h mau_h ten_h dd_h goc_h ok)

    (defun ct1 (/ temp)
 (if (not ddlop) (load "ddlop"))
 (setq temp (ddlop))
 (if temp
     (progn (setq la_san temp)
	    (set_tile "tla_ns" la_san)
     )
 )
    )

    (defun ct2 (/ temp)
(setq temp (acad_colordlg 7 nil))
       (if temp
  (progn (setq mau_san temp)
	 (set_tile "tm_ns" (itoa mau_san))
	 (start_image "a_ns")
	    (fill_image 0 0 (dimx_tile "a_ns") (dimy_tile "a_ns") mau_san)
         (end_image)
  )
  (progn
	(setq mau_san "BYLAYER")
	 (set_tile "tm_ns" mau_san)
	 (start_image "a_ns")
	    (fill_image 0 0 (dimx_tile "a_ns") (dimy_tile "a_ns") -2)
         (end_image)
  )
)
    )

    (defun ct4 (/ temp)
 (if (not ddlop) (load "ddlop"))
 (setq temp (ddlop))
 (if temp
     (progn (setq la_h temp)
	    (set_tile "tla_ts" la_h)
     )
 )
    )

    (defun ct5 (/ temp)
(setq temp (acad_colordlg 7 nil))
       (if temp
  (progn (setq mau_h temp)
	 (set_tile "tm_ts" (itoa mau_h))
	 (start_image "a_ts")
	    (fill_image 0 0 (dimx_tile "a_ts") (dimy_tile "a_ts") mau_h)
         (end_image)
  )
  (progn
	(setq mau_h "BYLAYER")
	 (set_tile "tm_ts" mau_h)
	 (start_image "a_ts")
	    (fill_image 0 0 (dimx_tile "a_ts") (dimy_tile "a_ts") -2)
         (end_image)
  )
)
    )

    (defun ct3 (/ temp)
(if (not ddh) (load "ddht"))
       (setq temp (ddht))
(if temp 
         (progn
    (setq ten_h (car temp))
    (setq dd_h (cadr temp))
    (setq goc_h (caddr temp))
    (set_tile "th_ts" ten_h)
         )
)
    )


 (command "_.PLINE" pdt pdd ""
           "_.PEDIT" "L" "J" l_sspl "" "")

 (setq la_san (getvar "clayer"))
 (setq la_h (getvar "clayer"))
 (setq mau_san "BYLAYER")
 (setq mau_h "BYLAYER")
 (setq ten_h "ANSI31")
 (setq dd_h 200)
 (setq goc_h 0)

 (setq d_log (load_dialog "c:\\ACADTOOL\\dcls\\ddsan.dcl"))
 (if (not (new_dialog "ddsan" d_log)) (exit))
 (set_tile "tla_ns" la_san)
 (set_tile "tla_ts" la_h)
 (set_tile "tm_ns" mau_san)
 (set_tile "tm_ts" mau_h)
 (set_tile "th_ts" ten_h)
 (action_tile "cla_ns" "(ct1)")
 (action_tile "cm_ns" "(ct2)")
 (action_tile "ch_ts" "(ct3)")
 (action_tile "cla_ts" "(ct4)")
 (action_tile "cm_ts" "(ct5)")  
 (action_tile "accept" "(done_dialog 1)")
 (action_tile "cancel" "(done_dialog 0)")
 (setq ok (start_dialog))
 (unload_dialog d_log)
(if (= ok 1)
   (command "_.CHPROP" (entlast) "" "LA" la_san "C" mau_san ""
   "_.HATCH" ten_h dd_h goc_h (entlast) ""
	   "_.CHPROP" (entlast) "" "LA" la_h "C" mau_h ""
   )
)
(command "_.ERASE" l_dv "")
)

;----------

  (setvar "cmdecho" 0)
  (command "_.UNDO" "G" "_.UCS" "")
  (setvar "blipmode" 0)
  (setq olderr *error* *error* sanerr)


(doc_ff)
(setq l_sspl (ssadd))
(setq l_dv (ssadd))
(setq temp T) 
(while temp
 (setq chuoi (strcat "\n>Rongdam<" (rtos rongdam 2 0) 
	      ">/Caodam<" (rtos caodam 2 0)
                     ">/Daysan<" (rtos daysan 2 0)
	      ">/Lechsan<" (rtos lechsan 2 0)
	      ">/<Diem dau>:"
 ))

 (initget 1 "Rongdam Caodam Lechsan Daysan")
 (setq pt1 (getpoint chuoi))
 (cond ((= pt1 "Rongdam") (prongdam))
       ((= pt1 "Caodam") (pcaodam))
       ((= pt1 "Daysan") (pdaysan))
       ((= pt1 "Lechsan") (plechsan))
((and pt1 (listp pt1)) (vesan1) (setq temp nil))
 )
)


(setq temp T) 
(while temp
 (setq ls_cu lechsan ds_cu daysan)  
 (setq chuoi (strcat "\n>Rongdam<" (rtos rongdam 2 0) 
	      ">/Caodam<" (rtos caodam 2 0)
	      ">/Nangdam<" (rtos nangdam 2 0)
                     ">/Daysan<" (rtos daysan 2 0)
	      ">/Lechsan<" (rtos lechsan 2 0)
	      ">/<Diem tiep>:"
 ))

 (initget "Rongdam Caodam Daysan Nangdam Lechsan Undo") 
 (setq pt2 (getpoint pphu chuoi))
 (cond ((= pt2 "Rongdam") (prongdam))
       ((= pt2 "Caodam") (pcaodam))
       ((= pt2 "Daysan") (pdaysan))
       ((= pt2 "Nangdam") (pnd))
       ((= pt2 "Lechsan") (pls))
       ((= pt2 "Undo") (pundo))
((and pt2 (listp pt2))
    (if (> (car pt2) (car pdt))
       	(vesan2)
        (princ "\nSan phai ve tu trai sang phai!")
    )
       )
       (T (ketthuc) (setq temp nil))
 )
)
  (initget 0)
  (setq temp (getpoint "\n>Diem dat chan duong kich thuoc <Enter khong ghi>:"))
  (if temp
   (progn
     (setq kt1 (list (car kt1) (cadr temp)))
     (setq kt2 (list (car kt2) (cadr temp)))
     (initget 1)
     (setq temp (getpoint temp "\n>Diem dat duong kich thuoc:"))
 (command "_.DIM1" "_HOR" kt1 kt2 temp ""
	  "_.CHPROP" (entlast) "" "LA" "NCAD-dim" "")
 (if l_kt
     (progn
	(setq l_kt (reverse l_kt))
	(while (setq kt1 (car l_kt))
	   (setq kt1 (list (car kt1) (cadr kt2)))
	   (command "_DIM1" "_CON" kt1 ""
	            "_.CHPROP" (entlast) "" "LA" "NCAD-dim" "")
	   (setq l_kt (cdr l_kt))
	)
     )
 )
   )
  )

  (setvar "blipmode" 1)
  (initget 0)
  (setq temp (getpoint "\n>Diem dat cot cao do <Enter bo qua>:"))
  (if temp
     (progn	
(setq kt1 (getstring T "\n>Dong ghi cao do:"))
(setvar "attdia" 0)
       (command "_.INSERT" "cottren" temp "0.7" "" "0" kt1
	 "_.CHPROP" (entlast) "" "LA" "NCAD-dim" "")
(setvar "attdia" 1)
     )
  )
  (ghi_ff)
  (command "_.UNDO" "E")
  (setq *error* olderr)
  (setvar "cmdecho" 1)
  (princ)
)

Do không biết gì về autolisp nên em cứ cóp hết .Cái lisp mà em muốn sửa có tên là :Xt .Nó có tác dụng xoay text theo một đưòng chuẩn !Xin cảm ơn mọi ngưòi !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
nếu để xoay text theo một đường thẳng thì đã có lệnh TORIENT rồi.

Lạ nhỉ ?Sao em đánh cả chữ torient rồi mà cad vẫn báo là không có lệnh này nhỉ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lạ nhỉ ?Sao em đánh cả chữ torient rồi mà cad vẫn báo là không có lệnh này nhỉ?

Cad đời nào vậy? lệnh này dùng được bạn phải cài bộ Express có từ cad 04 trở lên.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cad đời nào vậy? lệnh này dùng được bạn phải cài bộ Express có từ cad 04 trở lên.

Thế thì bác hướng dẫn cho em với !Nhà em cài cad2007 !Ngoài ra không cài thêm gì vào đó nữa !(chỉ load một vài lisp down trên diễn đàn về ).

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thế thì bác hướng dẫn cho em với !Nhà em cài cad2007 !Ngoài ra không cài thêm gì vào đó nữa !(chỉ load một vài lisp down trên diễn đàn về ).

Trên thanh Toolbars có thẻ Express chưa.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thế thì cài vào thôi mà, trong bộ cài Cad có đấy thây

Em đã vào trong cái express ở bộ cài rồi !Nhưng giở chả biết cài thế nào cả ?Bác chỉ giúp với!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Em đã vào trong cái express ở bộ cài rồi !Nhưng giở chả biết cài thế nào cả ?Bác chỉ giúp với!

"Choài ơi"

Thế này nhé ông bạn khoá sau XD, ông chưa cài Express tool đúng không?

Ông cài lại Cad đi, rồi cài Express tool.Khởi động lại máy tức khắc Cad sẽ load menu Express nên!!!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
"Choài ơi"

Thế này nhé ông bạn khoá sau XD, ông chưa cài Express tool đúng không?

Ông cài lại Cad đi, rồi cài Express tool.Khởi động lại máy tức khắc Cad sẽ load menu Express nên!!!

bác ơi em đang làm đồ án thép !Cài lại máy bây giờ mất lắm thời gian lắm !Mà sao cứ phải cài lại mới đưọc ah !Bây giờ cái thêm express đưọc không?Bác xem có cách nào không phải cài lại cad không?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình đã xem code của đoạn lisp C:XT và đã chạy thử, dùng tốt, không có lỗi gì. Bạn chọn 1 text hoặc 1 line làm chuẩn, sau đó chọn hàng loạt text khác, chúng sẽ "bắt chước" và xoay theo chuẩn đã chọn. Bạn thử copy đoạn C:XT, saveas thành file lisp khác, sửa C:XT thành C:XT2 chẳng hạn rồi chạy thử xem.

Nếu XT2 dùng tốt, còn XT bất ổn nghĩa là cả đoạn lisp đài lê thê mà bạn post lên bị lỗi ở đâu đó, và chỉ có... trời biết, không ai kiểm nổi đâu!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
bác ơi em đang làm đồ án thép !Cài lại máy bây giờ mất lắm thời gian lắm !Mà sao cứ phải cài lại mới đưọc ah !Bây giờ cái thêm express đưọc không?Bác xem có cách nào không phải cài lại cad không?

Cái này thì chịu rồi, chỉ có cài lại cad thôi

Tôi đã thử remove express tool đi cài lại, nhưng mà chả thấy thằng Cad nó load lên gì cả

Chả biết có bác cao thủ nào làm được ko

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình đã xem code của đoạn lisp C:XT và đã chạy thử, dùng tốt, không có lỗi gì. Bạn chọn 1 text hoặc 1 line làm chuẩn, sau đó chọn hàng loạt text khác, chúng sẽ "bắt chước" và xoay theo chuẩn đã chọn. Bạn thử copy đoạn C:XT, saveas thành file lisp khác, sửa C:XT thành C:XT2 chẳng hạn rồi chạy thử xem.

Nếu XT2 dùng tốt, còn XT bất ổn nghĩa là cả đoạn lisp đài lê thê mà bạn post lên bị lỗi ở đâu đó, và chỉ có... trời biết, không ai kiểm nổi đâu!

Bác ơi sao em dùng lại lisp này khi gõ xt nó ra mỗi chọn đối tượng xong rồi chả làm gì nữa .Chả hiểu sao nữa !Xin bác bảo cho em với .Em đang làm đồ án nên rất cần !Lần trưóc thì nó còn ra chọn đuờng chuẩn rồi sau đó chọn đối tượng,nhưng enter xong thì chả thấy xuất hiện gì cả ,thế mới lạ!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác ơi sao em dùng lại lisp này ..................

Này chú em! Thời gian chú đánh vật với cái lisp trên thì chú cài lại cad cũng xong lâu rồi. Các cad cũ thì thàng express tool riêng biệt nên có thể cài thêm, nhưng với cad 7,8 thì phải cài lại. Còn nếu chú em sợ cài lại sẽ mất công đặt lại lệnh tắt cho cad thì chú làm như sau: Vào đường dẫn

C:\Documents and Settings\Tên account của chú)\Application Data\Autodesk, rồi copy cả folder "AutoCAD 2007(hoặc8)" ra ổ đĩa khác. Sau khi cài lại cad xong thì copy, paste lại vào vị trí trên của nó là xong.OK

Nếu chú chịu khó cài lại thì tiện anh bảo thêm cho 1 lệnh của express tool mà ngày xưa làm đồ án thép anh hay dùng để vẽ đường hàn rất tiện:

Lệnh copym

1. Vẽ nét đường hàn với độ dài bằng chiều cao đường hàn

2. Dùng lệnh copym, chọn đối tượng trên, pick điểm chọn điểm đầu của đường hàn

3. Dùng lựa chọn measure (ấn m)

4. Chọn điểm cuối cùng của đường hàn, rồi nhập khoảng cách.

Thế là chú có ngay 1 dường hàn như ý. Đối với đường hàn loại khác thì làm tương tự hay với đường hàn theo phương nghiêng thì chú sử dụng UCS để xoay toạ độ. OK

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Này chú em! Thời gian chú đánh vật với cái lisp trên thì chú cài lại cad cũng xong lâu rồi. Các cad cũ thì thàng express tool riêng biệt nên có thể cài thêm, nhưng với cad 7,8 thì phải cài lại. Còn nếu chú em sợ cài lại sẽ mất công đặt lại lệnh tắt cho cad thì chú làm như sau: Vào đường dẫn

C:\Documents and Settings\Tên account của chú)\Application Data\Autodesk, rồi copy cả folder "AutoCAD 2007(hoặc8)" ra ổ đĩa khác. Sau khi cài lại cad xong thì copy, paste lại vào vị trí trên của nó là xong.OK

Nếu chú chịu khó cài lại thì tiện anh bảo thêm cho 1 lệnh của express tool mà ngày xưa làm đồ án thép anh hay dùng để vẽ đường hàn rất tiện:

Lệnh copym

1. Vẽ nét đường hàn với độ dài bằng chiều cao đường hàn

2. Dùng lệnh copym, chọn đối tượng trên, pick điểm chọn điểm đầu của đường hàn

3. Dùng lựa chọn measure (ấn m)

4. Chọn điểm cuối cùng của đường hàn, rồi nhập khoảng cách.

Thế là chú có ngay 1 dường hàn như ý. Đối với đường hàn loại khác thì làm tương tự hay với đường hàn theo phương nghiêng thì chú sử dụng UCS để xoay toạ độ. OK

Cám ơn anh thóc lép!Giá mà biết anh học xây dựng thì em phải hỏi anh thật nhiều mới được !Bọn em thứ 7 này bảo vệ rồi nên em đang phải cố vẽ cho xong !Mục đích của em muốn có cái lệnh xoay text theo một đường chuẩn là để viết các text dọc theo thanh dàn anh ạ !Bọn bạn thì toàn dùng lệnh rotate nhưng em không thích là vì nó không thật sự làm cho text song song với đường chuẩn!Cám ơn anh nhìu

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bác ơi sao em dùng lại lisp này khi gõ xt nó ra mỗi chọn đối tượng xong rồi chả làm gì nữa .Chả hiểu sao nữa !Xin bác bảo cho em với .Em đang làm đồ án nên rất cần !Lần trưóc thì nó còn ra chọn đuờng chuẩn rồi sau đó chọn đối tượng,nhưng enter xong thì chả thấy xuất hiện gì cả ,thế mới lạ!

Đã dùng thử Lisp của bạn, rất 0k mà, đúng như Bác ji nói:lisp này cho phép quay nhiều text 1 lúc theo 1 đường thẳng đã chọn

Command: xt Chon duong thang hoac chu lam chuan:

Select object: Chon chu can phai xoay:

Select objects: Specify opposite corner: 12 found

Select objects:

Command:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Đã dùng thử Lisp của bạn, rất 0k mà, đúng như Bác ji nói:lisp này cho phép quay nhiều text 1 lúc theo 1 đường thẳng đã chọn

Command: xt Chon duong thang hoac chu lam chuan:

Select object: Chon chu can phai xoay:

Select objects: Specify opposite corner: 12 found

Select objects:

Command:

Sao lạ nhỉ ?Mọi người làm được sao em không làm đưọc nhỉ ?Hay máy nhà em có vấn đề ?Em ấn xt thì nó chỉ hiện ra mỗi select objects ,sau đó chọn đối tượng xong enter thì nó hiện ra dòng comand ,Sau đó thì chả có gì hết !Mà lúc chọn đối tượng nó cũng cứ trơ ra ,chả hiện lên là đã chọn đưọc bao nhiêu đối tượng nữa ?Không hiểu là bị làm sao các bác nhỉ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Sao lạ nhỉ ?Mọi người làm được sao em không làm đưọc nhỉ ?Hay máy nhà em có vấn đề ?Em ấn xt thì nó chỉ hiện ra mỗi select objects ,sau đó chọn đối tượng xong enter thì nó hiện ra dòng comand ,Sau đó thì chả có gì hết !Mà lúc chọn đối tượng nó cũng cứ trơ ra ,chả hiện lên là đã chọn đưọc bao nhiêu đối tượng nữa ?Không hiểu là bị làm sao các bác nhỉ?

Tôi thấy lisp của bạn giống y hệt lệnh Torient

Nhưng mà trình lisp còi quá, chả biết làm sao tư lúc load file lisp của bạn vào lệnh Torient của tôi cũng toi luôn:

Command: torient

Select TEXT, MTEXT, ATTDEF, or BLOCK inserts w/attributes...

Select objects: 1 found

Select objects:

bad function: <Selection set: 23c>

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tôi thấy lisp của bạn giống y hệt lệnh Torient

Nhưng mà trình lisp còi quá, chả biết làm sao tư lúc load file lisp của bạn vào lệnh Torient của tôi cũng toi luôn:

Command: torient

Select TEXT, MTEXT, ATTDEF, or BLOCK inserts w/attributes...

Select objects: 1 found

Select objects:

bad function: <Selection set: 23c>

Cái lisp này là em được bạn cho !Em có biết đâu nó là lệnh nào !Chả hiểu sao các lisp đường hàn dùng ngon mà sao cái lisp này lại ko dùng được!(xin lỗi bác vì cái lisp của em làm hại lệnh torient của bác ).Bây giờ em đang phải làm thủ công bằng cách quay text bằng lệnh rotate đây!Khổ lắm bác ạ !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cái lisp này là em được bạn cho !Em có biết đâu nó là lệnh nào !Chả hiểu sao các lisp đường hàn dùng ngon mà sao cái lisp này lại ko dùng được!(xin lỗi bác vì cái lisp của em làm hại lệnh torient của bác ).Bây giờ em đang phải làm thủ công bằng cách quay text bằng lệnh rotate đây!Khổ lắm bác ạ !

Thế thì thủ công quá :)

Cố gắng cài lại Cad +Express tools khoảng 5 phút thôi mà, mình còn sử dụng nhiều chứ có phải 1 lần đâu

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thế thì thủ công quá :)

Cố gắng cài lại Cad +Express tools khoảng 5 phút thôi mà, mình còn sử dụng nhiều chứ có phải 1 lần đâu

Cài cái express tools trong quá trình cài cad hả anh !Em chưa cài nó lần nào nên cũng hơi lo,sợ máy mà đơ lúc này là em đi đời luôn !Thường thì cài cad em chỉ ấn next thôi ,cuối cùng cóp key vào ổ C là chạy ngon .Cài cái express tools là cài ở chỗ nào trong lúc cài cad hả anh ?Anh chỉ rõ cho em với !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cài cái express tools trong quá trình cài cad hả anh !Em chưa cài nó lần nào nên cũng hơi lo,sợ máy mà đơ lúc này là em đi đời luôn !Thường thì cài cad em chỉ ấn next thôi ,cuối cùng cóp key vào ổ C là chạy ngon .Cài cái express tools là cài ở chỗ nào trong lúc cài cad hả anh ?Anh chỉ rõ cho em với !

Cái này ở phần trên tớ đã bảo rồi mà

Sau khi cài cad xong đừng bật Cad nên vội, vào cái bảng cài Cad ở gần dưới cùng có dòng chữ AutoCad Express tools ,bạn tick vào cài thôi, cứ next..next đến khi mỏi tay thì thôi.Copy bẻ khóa, khởi động Cad là ok

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình đã xem tổng thể chương trình lisp của bạn. Xin có vài nhận xét và đề nghị sau:

1) Trước mắt, để đối phó với đồ án, bạn đừng quan tâm đến lỗi của trình lisp trên nữa, dùng được cái gì thì dùng.

2) Về lâu dài, bạn nên cài lại Cad như gợi ý của các bạn ở trên

3) Lisp của bạn giống như một cái... lẩu thập cẩm! Nó được sưu tầm và chắp vá từ nhiều nguồn khác nhau, bản thân các hàm trong chương trình "đá nhau" và cũng "đá" luôn một số hàm của bộ Express Tools (Express Tools cũng được xây dựng bằng lisp).

4) Công bằng mà nói, lisp của bạn cũng có khá nhiều cái hay, hỗ trợ một số thao tác cho bản vẽ xây dựng. Đáng tiếc là tính tổ chức của chương trình hầu như không có, tự thân nó tiềm ẩn nhiều bất ổn. Nếu bạn hiểu chút ít về lisp, có thể tham khảo từ nó một số ý tưởng cũng như code. Bằng không, không nên dùng nó nữa.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cài cái express tools trong quá trình cài cad hả anh !Em chưa cài nó lần nào nên cũng hơi lo,sợ máy mà đơ lúc này là em đi đời luôn !Thường thì cài cad em chỉ ấn next thôi ,cuối cùng cóp key vào ổ C là chạy ngon .Cài cái express tools là cài ở chỗ nào trong lúc cài cad hả anh ?Anh chỉ rõ cho em với !

 

-Đối với cad2007 thì giữa quá trình cài cad sẽ có bảng hỏi trong đó bạn thấy express tools và cái gì đó nửa bạn bấm dấu chọn cả hai cái ồi tiếp tục next >>>>>>>>>

-Nếu bạn lười cài lại cad quá thì có cách thủ công này:

Bạn dòm dòm coi ai có cái cad cùng đời của bạn mà có express tools thì copy cả thư mục express (trong thư mục cad đã cài của họ) rồi ném vào cad của bạn là nó cũng chạy đó bạn.

-Còn về cái lisp của bạn thì tôi tán thành ý của bác ssg mình nên biên tập lại các ứng dụng mình haydùng theo phong cách riêng chỉ copy ý tường của họ thôi.

Chúc bạn thực hiện tốt đồ án và mau mau đi làm kiếm tiền!!! :)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×