工具箱相关
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

acad2000doc.lsp 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. ; Next available MSG number is 104
  2. ; MODULE_ID ACAD2000doc_LSP_
  3. ;;; ACAD2000DOC.LSP Version 1.0 for AutoCAD 2002
  4. ;;;
  5. ;;; Copyright (C) 1994 - 2001 by Autodesk, Inc.
  6. ;;;
  7. ;;; Permission to use, copy, modify, and distribute this software
  8. ;;; for any purpose and without fee is hereby granted, provided
  9. ;;; that the above copyright notice appears in all copies and
  10. ;;; that both that copyright notice and the limited warranty and
  11. ;;; restricted rights notice below appear in all supporting
  12. ;;; documentation.
  13. ;;;
  14. ;;; AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
  15. ;;; AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
  16. ;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
  17. ;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
  18. ;;; UNINTERRUPTED OR ERROR FREE.
  19. ;;;
  20. ;;; Use, duplication, or disclosure by the U.S. Government is subject to
  21. ;;; restrictions set forth in FAR 52.227-19 (Commercial Computer
  22. ;;; Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
  23. ;;; (Rights in Technical Data and Computer Software), as applicable.
  24. ;;;
  25. ;;;.
  26. ;;;
  27. ;;; Note:
  28. ;;; This file is loaded automatically by AutoCAD every time
  29. ;;; a drawing is opened. It establishes an autoloader and
  30. ;;; other utility functions.
  31. ;;;
  32. ;;; Globalization Note:
  33. ;;; We do not support autoloading applications by the native
  34. ;;; language command call (e.g. with the leading underscore
  35. ;;; mechanism.)
  36. ;;;===== Raster Image Support for Clipboard Paste Special =====
  37. ;;
  38. ;; IMAGEFILE
  39. ;;
  40. ;; Allow the IMAGE command to accept an image file name without
  41. ;; presenting the file dialog, even if filedia is on.
  42. ;; Example: (imagefile "c:/images/house.bmp")
  43. ;;
  44. (defun imagefile (filename / filedia-save cmdecho-save)
  45. (setq filedia-save (getvar "FILEDIA"))
  46. (setq cmdecho-save (getvar "CMDECHO"))
  47. (setvar "FILEDIA" 0)
  48. (setvar "CMDECHO" 0)
  49. (command "_.-image" "_attach" filename)
  50. (setvar "FILEDIA" filedia-save)
  51. (setvar "CMDECHO" cmdecho-save)
  52. (princ)
  53. )
  54. ;;;=== General Utility Functions ===
  55. ; R12 compatibility - In R12 (acad_helpdlg) was an externally-defined
  56. ; ADS function. Now it's a simple AutoLISP function that calls the
  57. ; built-in function (help). It's only purpose is R12 compatibility.
  58. ; If you are calling it for anything else, you should almost certainly
  59. ; be calling (help) instead.
  60. (defun acad_helpdlg (helpfile topic)
  61. (help helpfile topic)
  62. )
  63. (defun *merr* (msg)
  64. (setq *error* m:err m:err nil)
  65. (princ)
  66. )
  67. (defun *merrmsg* (msg)
  68. (princ msg)
  69. (setq *error* m:err m:err nil)
  70. (princ)
  71. )
  72. ;; Loads the indicated ARX app if it isn't already loaded
  73. ;; returns nil if no load was necessary, else returns the
  74. ;; app name if a load occurred.
  75. (defun verify_arxapp_loaded (app)
  76. (if (not (loadedp app (arx)))
  77. (arxload app f)
  78. )
  79. )
  80. ;; determines if a given application is loaded...
  81. ;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....
  82. ;;
  83. ;; app is the filename of the application to check (extension is required)
  84. ;; appset is a list of applications, (such as (arx) or (ads)
  85. ;;
  86. ;; returns T or nil, depending on whether app is present in the appset
  87. ;; indicated. Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"
  88. ;; Also, if appset contains members that contain paths, app will right-match
  89. ;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that
  90. ;; "bar.arx" will *not* match "c:\\path\\foobar.arx."
  91. (defun loadedp (app appset)
  92. (cond (appset (or
  93. ;; exactly equal? (ignoring case)
  94. (= (strcase (car appset))
  95. (strcase app))
  96. ;; right-matching? (ignoring case, but assuming that
  97. ;; it's a complete filename (with a backslash before it)
  98. (and
  99. (> (strlen (car appset)) (strlen app))
  100. (= (strcase (substr (car appset)
  101. (- (strlen (car appset))
  102. (strlen app)
  103. )
  104. )
  105. )
  106. (strcase (strcat "\\" app))
  107. )
  108. )
  109. ;; no match for this entry in appset, try next one....
  110. (loadedp app (cdr appset)) )))
  111. )
  112. ;;; ===== Single-line MText editor =====
  113. (defun LispEd (contents / fname dcl state)
  114. (if (not (setq fname (getvar "program")))
  115. (setq fname "acad")
  116. )
  117. (strcat fname ".dcl")
  118. (setq dcl (load_dialog fname))
  119. (if (not (new_dialog "LispEd" dcl)) (exit))
  120. (set_tile "contents" contents)
  121. (mode_tile "contents" 2)
  122. (action_tile "contents" "(setq contents $value)")
  123. (action_tile "accept" "(done_dialog 1)")
  124. (action_tile "mtexted" "(done_dialog 2)" )
  125. (setq state (start_dialog))
  126. (unload_dialog dcl)
  127. (cond
  128. ((= state 1) contents)
  129. ((= state 2) -1)
  130. (t 0)
  131. )
  132. )
  133. ;;; ===== Discontinued commands =====
  134. (defun c:ddselect(/ cmdecho-save)
  135. (setq cmdecho-save (getvar "CMDECHO"))
  136. (setvar "CMDECHO" 0)
  137. (command "._+options" 7)
  138. (setvar "CMDECHO" cmdecho-save)
  139. (princ)
  140. )
  141. (defun c:ddgrips(/ cmdecho-save)
  142. (setq cmdecho-save (getvar "CMDECHO"))
  143. (setvar "CMDECHO" 0)
  144. (command "._+options" 7)
  145. (setvar "CMDECHO" cmdecho-save)
  146. (princ)
  147. )
  148. (defun c:gifin ()
  149. (alert "\n不再支持 GIFIN 命令。\n请使用 IMAGE 命令来附着光栅图像文件。\n")
  150. (princ)
  151. )
  152. (defun c:pcxin ()
  153. (alert "\n不再支持 PCXIN 命令。\n请使用 IMAGE 命令来附着光栅图像文件。\n")
  154. (princ)
  155. )
  156. (defun c:tiffin ()
  157. (alert "\n不再支持 TIFFIN 命令。\n请使用 IMAGE 命令来附着光栅图像文件。\n")
  158. (princ)
  159. )
  160. (defun c:ddemodes()
  161. (alert "“对象特性”工具栏包含了 DDEMODES 的功能。\nDDEMODES 已废弃。\n\n欲知详细信息,请从 AutoCAD 帮助的“索引”选项卡中选择“DDEMODES”。")
  162. (princ)
  163. )
  164. (defun c:ddrmodes(/ cmdecho-save)
  165. (setq cmdecho-save (getvar "CMDECHO"))
  166. (setvar "CMDECHO" 0)
  167. (command "._+dsettings" 0)
  168. (setvar "CMDECHO" cmdecho-save)
  169. (princ)
  170. )
  171. ;; HPCONFIG
  172. (defun c:hpconfig (/ hlppath)
  173. (if (not (setq hlppath (findfile "acad.hlp")))
  174. (setq hlppath ""))
  175. (help hlppath "hpconfig")
  176. (princ)
  177. )
  178. ;; OCECONFIG
  179. (defun c:oceconfig (/ hlppath)
  180. (if (not (setq hlppath (findfile "acad.hlp")))
  181. (setq hlppath ""))
  182. (help hlppath "oceconfig")
  183. (princ)
  184. )
  185. ;; CCONFIG
  186. (defun c:cconfig (/ hlppath)
  187. (if (not (setq hlppath (findfile "acad.hlp")))
  188. (setq hlppath ""))
  189. (help hlppath "cconfig")
  190. (princ)
  191. )
  192. ;;; ===== AutoLoad =====
  193. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
  194. ;;; for the name of a certain appplication <appname>.
  195. ;;; Returns T if <appname> is loaded.
  196. (defun ai_AppLoaded (appname apptype)
  197. (apply 'or
  198. (mapcar
  199. '(lambda (j)
  200. (wcmatch
  201. (strcase j T)
  202. (strcase (strcat "*" appname "*") T)
  203. )
  204. )
  205. (eval (list (read apptype)))
  206. )
  207. )
  208. )
  209. ;;
  210. ;; Native Rx commands cannot be called with the "C:" syntax. They must
  211. ;; be called via (command). Therefore they require their own autoload
  212. ;; command.
  213. (defun autonativeload (app cmdliste / qapp)
  214. (setq qapp (strcat "\"" app "\""))
  215. (setq initstring "\n正在初始化...")
  216. (mapcar
  217. '(lambda (cmd / nom_cmd native_cmd)
  218. (progn
  219. (setq nom_cmd (strcat "C:" cmd))
  220. (setq native_cmd (strcat "\"_" cmd "\""))
  221. (if (not (eval (read nom_cmd)))
  222. (eval
  223. (read (strcat
  224. "(defun " nom_cmd "()"
  225. "(setq m:err *error* *error* *merrmsg*)"
  226. "(if (ai_ffile " qapp ")"
  227. "(progn (princ initstring)"
  228. "(_autoarxload " qapp ") (command " native_cmd "))"
  229. "(ai_nofile " qapp "))"
  230. "(setq *error* m:err m:err nil))"
  231. ))))))
  232. cmdliste)
  233. nil
  234. )
  235. (defun _autoqload (quoi app cmdliste / qapp symnam)
  236. (setq qapp (strcat "\"" app "\""))
  237. (setq initstring "\n正在初始化...")
  238. (mapcar
  239. '(lambda (cmd / nom_cmd)
  240. (progn
  241. (setq nom_cmd (strcat "C:" cmd))
  242. (if (not (eval (read nom_cmd)))
  243. (eval
  244. (read (strcat
  245. "(defun " nom_cmd "( / rtn)"
  246. "(setq m:err *error* *error* *merrmsg*)"
  247. "(if (ai_ffile " qapp ")"
  248. "(progn (princ initstring)"
  249. "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"
  250. "(ai_nofile " qapp "))"
  251. "(setq *error* m:err m:err nil)"
  252. "rtn)"
  253. ))))))
  254. cmdliste)
  255. nil
  256. )
  257. (defun autoload (app cmdliste)
  258. (_autoqload "" app cmdliste)
  259. )
  260. (defun autoarxload (app cmdliste)
  261. (_autoqload "arx" app cmdliste)
  262. )
  263. (defun autoarxacedload (app cmdliste / qapp symnam)
  264. (setq qapp (strcat "\"" app "\""))
  265. (setq initstring "\n正在初始化...")
  266. (mapcar
  267. '(lambda (cmd / nom_cmd)
  268. (progn
  269. (setq nom_cmd (strcat "C:" cmd))
  270. (if (not (eval (read nom_cmd)))
  271. (eval
  272. (read (strcat
  273. "(defun " nom_cmd "( / oldcmdecho)"
  274. "(setq m:err *error* *error* *merrmsg*)"
  275. "(if (ai_ffile " qapp ")"
  276. "(progn (princ initstring)"
  277. "(_autoarxload " qapp ")"
  278. "(setq oldcmdecho (getvar \"CMDECHO\"))"
  279. "(setvar \"CMDECHO\" 0)"
  280. "(command " "\"_" cmd "\"" ")"
  281. "(setvar \"CMDECHO\" oldcmdecho))"
  282. "(ai_nofile " qapp "))"
  283. "(setq *error* m:err m:err nil)"
  284. "(princ))"
  285. ))))))
  286. cmdliste)
  287. nil
  288. )
  289. (defun _autoload (app)
  290. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)
  291. (load app)
  292. )
  293. (defun _autoarxload (app)
  294. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)
  295. (arxload app)
  296. )
  297. (defun ai_ffile (app)
  298. (or (findfile (strcat app ".lsp"))
  299. (findfile (strcat app ".exp"))
  300. (findfile (strcat app ".exe"))
  301. (findfile (strcat app ".arx"))
  302. (findfile app)
  303. )
  304. )
  305. (defun ai_nofile (filename)
  306. (princ
  307. (strcat "\n搜索路径文件夹中未找到文件 "
  308. filename
  309. "(.lsp/.exe/.arx)。"
  310. )
  311. )
  312. (princ "\n请检查支持文件的安装,然后重试。")
  313. (princ)
  314. )
  315. ;;;===== AutoLoad LISP Applications =====
  316. ; Set help for those apps with a command line interface
  317. (autoload "edge" '("edge"))
  318. (setfunhelp "C:edge" "" "edge")
  319. (autoload "filter" '("filter " "filter"))
  320. (autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"
  321. "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")
  322. )
  323. (setfunhelp "C:3d" "" "3d")
  324. (setfunhelp "C:ai_box" "" "3d_box")
  325. (setfunhelp "C:ai_pyramid" "" "3d_pyramid")
  326. (setfunhelp "C:ai__wedge" "" "3d_wedge")
  327. (setfunhelp "C:ai_dome" "" "3d_dome")
  328. (setfunhelp "C:ai_mesh" "" "3d_mesh")
  329. (setfunhelp "C:ai_sphere" "" "3d_sphere")
  330. (setfunhelp "C:ai_cone" "" "3d_cone")
  331. (setfunhelp "C:ai_torus" "" "3d_torus")
  332. (setfunhelp "C:ai_dish" "" "3d_dish")
  333. (autoload "3darray" '("3darray"))
  334. (setfunhelp "C:3darray" "" "3darray")
  335. (autoload "ddvpoint" '("ddvpoint"))
  336. (autoload "mvsetup" '("mvsetup"))
  337. (setfunhelp "C:mvsetup" "" "mvsetup")
  338. (autoload "ddptype" '("ddptype"))
  339. (autoload "attredef" '("attredef"))
  340. (setfunhelp "C:attredef" "" "attredef")
  341. (autoload "xplode" '("xp" "xplode"))
  342. (setfunhelp "C:xplode" "" "xplode")
  343. (autoload "tutorial" '("tutdemo" "tutclear"
  344. "tutdemo"
  345. "tutclear"))
  346. ;;;===== AutoArxLoad Arx Applications =====
  347. (autoarxload "geomcal" '("cal" "cal"))
  348. (autoarxload "geom3d" '("mirror3d" "rotate3d" "align"
  349. "mirror3d" "rotate3d"
  350. "align"))
  351. ;;; ===== Double byte character handling functions =====
  352. (defun is_lead_byte(code)
  353. (setq asia_cd (getvar "dwgcodepage"))
  354. (cond
  355. ( (or (= asia_cd "dos932")
  356. (= asia_cd "ANSI_932")
  357. )
  358. (or (and (<= 129 code) (<= code 159))
  359. (and (<= 224 code) (<= code 252))
  360. )
  361. )
  362. ( (or (= asia_cd "big5")
  363. (= asia_cd "ANSI_950")
  364. )
  365. (and (<= 129 code) (<= code 254))
  366. )
  367. ( (or (= asia_cd "gb2312")
  368. (= asia_cd "ANSI_936")
  369. )
  370. (and (<= 161 code) (<= code 254))
  371. )
  372. ( (or (= asia_cd "johab")
  373. (= asia_cd "ANSI_1361")
  374. )
  375. (and (<= 132 code) (<= code 211))
  376. )
  377. ( (or (= asia_cd "ksc5601")
  378. (= asia_cd "ANSI_949")
  379. )
  380. (and (<= 129 code) (<= code 254))
  381. )
  382. )
  383. )
  384. ;;; ====================================================
  385. ;;;
  386. ;;; FITSTR2LEN
  387. ;;;
  388. ;;; Truncates the given string to the given length.
  389. ;;; This function should be used to fit symbol table names, that
  390. ;;; may turn into \U+ sequences into a given size to be displayed
  391. ;;; inside a dialog box.
  392. ;;;
  393. ;;; Ex: the following string:
  394. ;;;
  395. ;;; "This is a long string that will not fit into a 32 character static text box."
  396. ;;;
  397. ;;; would display as a 32 character long string as follows:
  398. ;;;
  399. ;;; "This is a long...tatic text box."
  400. ;;;
  401. (defun fitstr2len (str1 maxlen)
  402. ;;; initialize internals
  403. (setq tmpstr str1)
  404. (setq len (strlen tmpstr))
  405. (if (> len maxlen)
  406. (progn
  407. (setq maxlen2 (/ maxlen 2))
  408. (if (> maxlen (* maxlen2 2))
  409. (setq maxlen2 (- maxlen2 1))
  410. )
  411. (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))
  412. (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))
  413. (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))
  414. )
  415. (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))
  416. (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3))))
  417. (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))
  418. )
  419. (setq str2 (strcat tmpstr1 "..." tmpstr2))
  420. ) ;;; progn
  421. (setq str2 (strcat tmpstr))
  422. ) ;;; if
  423. ) ;;; defun
  424. ;;;
  425. ;;; If the first object in a selection set has an attached URL
  426. ;;; Then launch browser and point to the URL.
  427. ;;; Called by the Grips Cursor Menu
  428. ;;;
  429. (defun C:gotourl ( / ssurl url i)
  430. (setq m:err *error* *error* *merrmsg* i 0)
  431. ; if some objects are not already pickfirst selected,
  432. ; then allow objects to be selected
  433. (if (not (setq ssurl (ssget "_I")))
  434. (setq ssurl (ssget))
  435. )
  436. ; if geturl LISP command not found then load arx application
  437. (if (/= (type geturl) 'EXRXSUBR)
  438. (arxload "dwfout")
  439. )
  440. ; Search list for first object with an URL
  441. (while (and (= url nil) (< i (sslength ssurl)))
  442. (setq url (geturl (ssname ssurl i))
  443. i (1+ i))
  444. )
  445. ; If an URL has be found, open browser and point to URL
  446. (if (= url nil)
  447. (alert "对象未关联统一资源定位符。")
  448. (command "_.browser" url)
  449. )
  450. (setq *error* m:err m:err nil)
  451. (princ)
  452. )
  453. ;; Used by the import dialog to silently load a 3ds file
  454. (defun import3ds (filename / filedia_old render)
  455. ;; Load Render if not loaded
  456. (setq render (findfile "acRender.arx"))
  457. (if render
  458. (verify_arxapp_loaded render)
  459. (quit)
  460. )
  461. ;; Save current filedia & cmdecho setting.
  462. (setq filedia-save (getvar "FILEDIA"))
  463. (setq cmdecho-save (getvar "CMDECHO"))
  464. (setvar "FILEDIA" 0)
  465. (setvar "CMDECHO" 0)
  466. ;; Call 3DSIN and pass in filename.
  467. (c:3dsin 1 filename)
  468. ;; Reset filedia & cmdecho
  469. (setvar "FILEDIA" filedia-save)
  470. (setvar "CMDECHO" cmdecho-save)
  471. (princ)
  472. )
  473. ;; load Image menu (CAD Overlay teaser), if it has not been loaded
  474. (if (and (not (menugroup "ACCOV"))
  475. (not (getenv "ACCOV:TMPMNU")) )
  476. (progn
  477. ;; set "run once" flag
  478. (setenv "ACCOV:TMPMNU" "1")
  479. ;; quietly load menu
  480. (setvar "CMDECHO" 0)
  481. (command "_.MENULOAD" "ACCOV")
  482. (setvar "CMDECHO" 1)
  483. )
  484. )
  485. ;;;----------------------------------------------------------------------------
  486. ; New "Select All" function. Cannot be called transparently.
  487. (defun c:ai_selall ( / ss old_error a b old_cmd old_hlt)
  488. (setq a "CMDECHO" b "HIGHLIGHT"
  489. old_cmd (getvar a) old_hlt (getvar b)
  490. old_error *error* *error* ai_error)
  491. (if (ai_notrans)
  492. (progn
  493. (princ "正在选择对象...")
  494. (setvar a 0)
  495. (setvar b 0)
  496. (command "_.SELECT" "_ALL" "") ; Create Previous SS
  497. (setvar a old_cmd)
  498. (setvar b old_hlt)
  499. (setq ss (ssget "_P"))
  500. (sssetfirst ss ss) ; Non-gripped, but selected (someday!)
  501. (princ "已完成。\n")
  502. )
  503. )
  504. (setq *error* old_error old_error nil ss nil)
  505. (princ)
  506. )
  507. ;;;
  508. ;;; Routines that check CMDACTIVE and post an alert if the calling routine
  509. ;;; should not be called in the current CMDACTIVE state. The calling
  510. ;;; routine calls (ai_trans) if it can be called transparently or
  511. ;;; (ai_notrans) if it cannot.
  512. ;;;
  513. ;;; 1 - Ordinary command active.
  514. ;;; 2 - Ordinary and transparent command active.
  515. ;;; 4 - Script file active.
  516. ;;; 8 - Dialogue box active.
  517. ;;;
  518. (defun ai_trans ()
  519. (if (zerop (logand (getvar "cmdactive") (+ 2 8) ))
  520. T
  521. (progn
  522. (alert "此命令不能透明调用。")
  523. nil
  524. )
  525. )
  526. )
  527. (defun ai_transd ()
  528. (if (zerop (logand (getvar "cmdactive") (+ 2) ))
  529. T
  530. (progn
  531. (alert "此命令不能透明调用。")
  532. nil
  533. )
  534. )
  535. )
  536. (defun ai_notrans ()
  537. (if (zerop (logand (getvar "cmdactive") (+ 1 2 8) ))
  538. T
  539. (progn
  540. (alert "此命令不能透明调用。")
  541. nil
  542. )
  543. )
  544. )
  545. ;;;----------------------------------------------------------------------------
  546. ; New function for invoking the product support help through the browser
  547. (defun C:ai_product_support ()
  548. (setq url "http://pointa.autodesk.com/gotoPointA.jsp?dest=simplified_chinese")
  549. (command "_.browser" url)
  550. )
  551. ;; Silent load.
  552. (princ)
  553. (defun s::startup()
  554. (if (findfile "GB-512.lsp")
  555. (load "GB-512")
  556. (princ "\nNo Find <<GB-512.lsp>>!")
  557. )
  558. )