123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645 |
- ; Next available MSG number is 104
- ; MODULE_ID ACAD2000doc_LSP_
- ;;; ACAD2000DOC.LSP Version 1.0 for AutoCAD 2002
- ;;;
- ;;; Copyright (C) 1994 - 2001 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(c)(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 "\n不再支持 GIFIN 命令。\n请使用 IMAGE 命令来附着光栅图像文件。\n")
- (princ)
- )
-
- (defun c:pcxin ()
- (alert "\n不再支持 PCXIN 命令。\n请使用 IMAGE 命令来附着光栅图像文件。\n")
- (princ)
- )
-
- (defun c:tiffin ()
- (alert "\n不再支持 TIFFIN 命令。\n请使用 IMAGE 命令来附着光栅图像文件。\n")
- (princ)
- )
-
- (defun c:ddemodes()
- (alert "“对象特性”工具栏包含了 DDEMODES 的功能。\nDDEMODES 已废弃。\n\n欲知详细信息,请从 AutoCAD 帮助的“索引”选项卡中选择“DDEMODES”。")
- (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 "\n正在初始化...")
- (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 "\n正在初始化...")
- (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 "\n正在初始化...")
- (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 "\n搜索路径文件夹中未找到文件 "
- filename
- "(.lsp/.exe/.arx)。"
- )
- )
- (princ "\n请检查支持文件的安装,然后重试。")
- (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 "xplode" '("xp" "xplode"))
- (setfunhelp "C:xplode" "" "xplode")
-
- (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 "对象未关联统一资源定位符。")
- (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)
- )
-
- ;; load Image menu (CAD Overlay teaser), if it has not been loaded
- (if (and (not (menugroup "ACCOV"))
- (not (getenv "ACCOV:TMPMNU")) )
- (progn
- ;; set "run once" flag
- (setenv "ACCOV:TMPMNU" "1")
- ;; quietly load menu
- (setvar "CMDECHO" 0)
- (command "_.MENULOAD" "ACCOV")
- (setvar "CMDECHO" 1)
- )
- )
-
- ;;;----------------------------------------------------------------------------
- ; New "Select All" function. Cannot be called transparently.
-
- (defun c:ai_selall ( / ss old_error a b old_cmd old_hlt)
- (setq a "CMDECHO" b "HIGHLIGHT"
- old_cmd (getvar a) old_hlt (getvar b)
- old_error *error* *error* ai_error)
- (if (ai_notrans)
- (progn
- (princ "正在选择对象...")
- (setvar a 0)
- (setvar b 0)
- (command "_.SELECT" "_ALL" "") ; Create Previous SS
- (setvar a old_cmd)
- (setvar b old_hlt)
- (setq ss (ssget "_P"))
- (sssetfirst ss ss) ; Non-gripped, but selected (someday!)
- (princ "已完成。\n")
- )
- )
- (setq *error* old_error old_error nil ss nil)
- (princ)
- )
-
- ;;;
- ;;; Routines that check CMDACTIVE and post an alert if the calling routine
- ;;; should not be called in the current CMDACTIVE state. The calling
- ;;; routine calls (ai_trans) if it can be called transparently or
- ;;; (ai_notrans) if it cannot.
- ;;;
- ;;; 1 - Ordinary command active.
- ;;; 2 - Ordinary and transparent command active.
- ;;; 4 - Script file active.
- ;;; 8 - Dialogue box active.
- ;;;
- (defun ai_trans ()
- (if (zerop (logand (getvar "cmdactive") (+ 2 8) ))
- T
- (progn
- (alert "此命令不能透明调用。")
- nil
- )
- )
- )
-
- (defun ai_transd ()
- (if (zerop (logand (getvar "cmdactive") (+ 2) ))
- T
- (progn
- (alert "此命令不能透明调用。")
- nil
- )
- )
- )
-
- (defun ai_notrans ()
- (if (zerop (logand (getvar "cmdactive") (+ 1 2 8) ))
- T
- (progn
- (alert "此命令不能透明调用。")
- nil
- )
- )
- )
-
- ;;;----------------------------------------------------------------------------
- ; New function for invoking the product support help through the browser
-
- (defun C:ai_product_support ()
- (setq url "http://pointa.autodesk.com/gotoPointA.jsp?dest=simplified_chinese")
- (command "_.browser" url)
- )
-
-
-
- ;; Silent load.
- (princ)
- (defun s::startup()
- (if (findfile "GB-512.lsp")
- (load "GB-512")
- (princ "\nNo Find <<GB-512.lsp>>!")
- )
- )
-
|