aicr317 发表于 2010-7-12 11:00:00

[转帖]完美统计图块数量及图块图例的显示(非伪源码)

<p>是在看不下去,特地抽了点时间整理了一下,申明:次源码来源于“小小工具集”,要感谢的去找该作者,我只是把部分源码提出来了,呵呵,看不惯某些人的“伪源码”!!!</p>
<p>&nbsp;</p>
<p><font face="Verdana">;;==============================块统计</font></p><font face="Verdana">
<p><br/>;;;----------------------------------------------------------------------------------------------<br/>;;;检查输入的原始参数表是否使用了组件的别名,如果使用了,便把别名改成组件全名。无论是否已使用组件的别名,都返回可供后续程序使用的参数表。<br/>(defun listFormatInputList (listInput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listComponentAlias&nbsp;&nbsp;&nbsp; listFormatedInput&nbsp;&nbsp;&nbsp;&nbsp; listMemberOfInput<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolIsAlias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intDefinedAliasNumber k&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strInputComponentName strAlias<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;定义组件别名表,形式为&nbsp; ( (&nbsp; 组件别名 组件原名) )<br/>&nbsp;(setq listComponentAlias '(("bt" "button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("edit" "edit_box")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("edit12" "edit12_box")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("edit32" "edit32_box")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("listbox" "list_box")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("ComboBox" "popup_list")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btRadio" "radio_button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("tg" "toggle")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btOK" "ok_only")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btCancel" "cancel_button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btErrer" "errtile")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btHelp" "help_button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btInfo" "info_button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btOC" "ok_cancel")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btOCH" "ok_cancel_help")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btOCHE" "ok_cancel_help_errtile")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btOCHI" "ok_cancel_help_info")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("color17" "color_palette_1_7")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("color19" "color_palette_1_9")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("color09" "color_palette_0_9")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("color250255" "color_palette_250_255")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("stdColor" "std_rq_color")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>;;;----------------------------------------------------------------------------------------------<br/>&nbsp;(setq listFormatedInput nil)<br/>&nbsp;(foreach listMemberOfInput listInput<br/>&nbsp; (setq k 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolIsAlias "No"<br/>&nbsp; )<br/>&nbsp; (setq strInputComponentName (strcase (car listMemberOfInput) T))<br/>&nbsp; (setq intDefinedAliasNumber (length listComponentAlias))<br/>&nbsp; (while (and (&lt; k intDefinedAliasNumber) (= boolIsAlias "No"))<br/>&nbsp;&nbsp; (setq strAlias (strcase (car (nth k listComponentAlias)) T))<br/>&nbsp;&nbsp; (if (= strInputComponentName strAlias)<br/>&nbsp;&nbsp;&nbsp; (progn (setq boolIsAlias "Yes")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listFormatedInput (append listFormatedInput<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list (cons (cadr (nth k listComponentAlias))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr listMemberOfInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (setq k (1+ k))<br/>&nbsp; )<br/>&nbsp; (if (= boolIsAlias "No")<br/>&nbsp;&nbsp; (setq listFormatedInput (append listFormatedInput<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list (cons (strcase (car listMemberOfInput) T)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr listMemberOfInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;listFormatedInput<br/>)<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;把输入的参数表转换为字符串表<br/>(defun listInputToString (listInput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listMemberOfInput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listCdrMemberOfInput<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listMemberOfComponentParameters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listComponentParameters&nbsp; listCadrMemberOfComponentParameters<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listResult&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolDefinementFound<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;组件定义参数表,形式为 ( ( 组件名列表) ( 对应参数名列表) )<br/>;;; 无属性控件,生成dcl文件时,在组件名后添加" ; “即可;如为“end”,在dcl文件里加上"}"字符即可<br/>;;; 容器控件及带属性控件,需要在名前添加” : ",名后加 "{"<br/>&nbsp;(setq listComponentParameters '((("容器控件" "dialog")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "initial_focus"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "children_alignment"&nbsp; "children_fixed_height"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "children_fixed_width"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("容器控件"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "boxed_column"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "boxed_row"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "boxed_radio_column"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "boxed_radio_row"&nbsp;&nbsp; "column"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "row"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "radio_row"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "radio_column"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "concatenation"&nbsp;&nbsp;&nbsp;&nbsp; "paragraph"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_width"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "children_alignment"&nbsp; "children_fixed_height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "children_fixed_width"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp; "height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width" "horizontal_margin"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "vertical_margin" "fixed_height"&nbsp; "fixed_width"&nbsp;&nbsp; "is_cancel"&nbsp;&nbsp;&nbsp;&nbsp; "is_default"&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp; "is_tab_stop"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "mnemonic"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "edit_box" "edit12_box" "edit32_box" "fcf_ebox" "fcf_ebox1")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "height"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp;&nbsp; "fixed_width"&nbsp;&nbsp;&nbsp; "allow_accept"&nbsp;&nbsp; "edit_limit"&nbsp;&nbsp;&nbsp;&nbsp; "edit_width"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp;&nbsp; "is_tab_stop"&nbsp;&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "password_char"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "image" "image_block" "icon_image")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp; "height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp; "fixed_width"&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp; "is_tab_stop"&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "aspect_ratio"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "color"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "image_button" "swatch" "fcf_ibut" "fcf_ibut1")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_width"&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp;&nbsp; "is_tab_stop"&nbsp;&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "allow_accept"&nbsp;&nbsp; "aspect_ratio"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "color"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "list_box")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "height"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp;&nbsp; "fixed_width"&nbsp;&nbsp;&nbsp; "allow_accept"&nbsp;&nbsp; "fixed_width_font"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp;&nbsp; "is_tab_stop"&nbsp;&nbsp;&nbsp; "list"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "multiple_select"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "tabs"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "tab_truncate"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "popup_list")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp; "height"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp; "fixed_width"&nbsp;&nbsp; "edit_width"&nbsp;&nbsp;&nbsp; "fixed_width_font"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp; "is_tab_stop"&nbsp;&nbsp; "list"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "tabs"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "tab_truncate"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "radio_button")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "is_enabled"&nbsp;&nbsp;&nbsp; "is_tab_stop"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp; "height"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp; "fixed_width"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "slider")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "key"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "value"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "action"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "alignment"&nbsp;&nbsp;&nbsp;&nbsp; "height"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "width"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fixed_height"&nbsp; "fixed_width"&nbsp;&nbsp; "big_increment" "layout"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "max_value"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "min_value"&nbsp;&nbsp;&nbsp;&nbsp; "mnemonic"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "small_increment"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "spacer")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("value" "height" "width" "fixed_height" "fixed_width")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "text" "text_part" "text_25")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label" "key" "value" "alignment" "height" "width" "fixed_height" "fixed_width" "is_bold")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("带属性控件" "toggle")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("label" "key" "value" "action" "alignment" "height" "width" "fixed_height" "fixed_width" "is_enabled"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "is_tab_stop")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("无属性控件"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "cancel_button"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "errtile"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "help_button"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "info_button"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ok_cancel"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ok_cancel_help"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ok_cancel_help_errtile"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ok_cancel_help_info"&nbsp; "ok_only"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "spacer"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "spacer_0"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "spacer_1"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "color_palette_1_7"&nbsp;&nbsp;&nbsp; "color_palette_1_9"&nbsp;&nbsp;&nbsp; "color_palette_0_9"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "color_palette_250_255"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "std_rq_color"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (("无属性控件" "end")) ;以"end"作为单个组件定义的结束,生成dcl文件时,以“}“代替<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>;;;----------------------------------------------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;(setq listResult nil)<br/>&nbsp;(setvar "dimzin" 8)<br/>&nbsp;(foreach listMemberOfInput listInput<br/>&nbsp; (setq k 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolDefinementFound "NotYet"<br/>&nbsp; )<br/>&nbsp; (while (and (= boolDefinementFound "NotYet")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&lt; k (length listComponentParameters))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;未找到组件参数名列表且未搜索完组件预定义列表时循环<br/>&nbsp;&nbsp; (setq listMemberOfComponentParameters (nth k listComponentParameters))<br/>&nbsp;&nbsp; (if (and (member (car listMemberOfInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (car listMemberOfComponentParameters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= "spacer" (car listMemberOfInput))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&gt;= (length listMemberOfInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (length listMemberOfComponentParameters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;因spacer既可为无属性控件也可为带属性控件,故特别处理<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn (setq boolDefinementFound&nbsp; "Found"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listCdrMemberOfInput (cdr listMemberOfInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond ((or (= "容器控件" (car (car listMemberOfComponentParameters)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= "带属性控件" (car (car listMemberOfComponentParameters)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listCdrMemberOfInput ;组件参数值有数据时<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listResult (append listResult<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list (strcat ":" (car listMemberOfInput) "{\n"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listCadrMemberOfComponentParameters (cadr listMemberOfComponentParameters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (&lt; j (length listCdrMemberOfInput))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (not (= "" (nth j listCdrMemberOfInput)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn ;参数值非空时<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (numberp (nth j listCdrMemberOfInput))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq strTMP (strcat (nth j listCadrMemberOfComponentParameters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "="<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rtos (nth j listCdrMemberOfInput) 2 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ";\n"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;参数为数值时<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq strTMP (strcat (nth j listCadrMemberOfComponentParameters)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "=\""<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (nth j listCdrMemberOfInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\";\n"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;参数非数值时<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listResult (append listResult (list strTMP)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq j (1+ j))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= "带属性控件" (car (car listMemberOfComponentParameters)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listResult (append listResult (list "}\n")))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;带属性控件时,在字符串末尾加上组件结束标志 "}"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= (car listMemberOfInput) "end")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listResult (append listResult (list "}\n")))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (T ;(= "无属性控件" (car (car listMemberOfComponentParameters))) ,默认为无属性控件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listResult (append listResult<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list (strcat (car listMemberOfInput) ";\n"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq k (1+ k))<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;listResult<br/>)<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;生成并显示输入对话框<br/>;;;调用形式 ( listGenerateDCL&nbsp; DCL文件名(无路径及后缀)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表( ( ( "组件名或别名")&nbsp; ( 参数值表 )&nbsp; )&nbsp;&nbsp; ...)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表( (&nbsp; "组件编号"&nbsp; "组件初始值"&nbsp; )&nbsp;&nbsp; ...)&nbsp;&nbsp;&nbsp; ;组件显示值初始化<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表( (&nbsp; "组件编号"&nbsp; "动作代码"&nbsp; )&nbsp;&nbsp; ...)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;需设置动作的组件及对应的动作<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表("组件编号"&nbsp; ...)&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp; ;用户点“确定”键时,需获取输入值的组件名<br/>;;;注意,调用参数均为字符串形式<br/>;;;返回值为表,形式为 ( 关闭对话框的整数代码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定组件返回值列表)<br/>(defun listGenerateDCL (strDCLFileName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listInputDefinements&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listKeysAndValues&nbsp;&nbsp; listKeysAndActions<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listKeysToGetValue&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listFormatedInput&nbsp;&nbsp; intDialogCloseType&nbsp; listKeysValue<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listResult&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strFileFullName&nbsp;&nbsp;&nbsp;&nbsp; objectFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileStream<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; templist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dclid<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;按 ( ( “组件名”&nbsp; “值"&nbsp; ) ) 表,设置各组件的值<br/>&nbsp;(defun SetDCLValues (listKeysAndValues / listEachKeyAndValue)<br/>&nbsp; (foreach listEachKeyAndValue listKeysAndValues<br/>&nbsp;&nbsp; (set_tile (car listEachKeyAndValue)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cadr listEachKeyAndValue)<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;按 ( ( “组件名”&nbsp; “动作"&nbsp; ) ) 表,把组件与动作关联<br/>&nbsp;(defun SetDCLActions (listKeysAndActions / listEachKeyAndAction)<br/>&nbsp; (foreach listEachKeyAndAction listKeysAndActions<br/>&nbsp;&nbsp; (action_tile (car listEachKeyAndAction)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cadr listEachKeyAndAction)<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;按 ( “组件名” ) 表,查询各组件值并返回值表<br/>&nbsp;(defun listGetDCLValues (listKeys / listEachKey listValues)<br/>&nbsp; (setq listValues nil)<br/>&nbsp; (foreach listEachKey listKeys<br/>&nbsp;&nbsp; (setq listValues (append listValues (list (get_tile listEachKey))))<br/>&nbsp; )<br/>&nbsp; listValues<br/>&nbsp;)<br/>;;;----------------------------------------------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;(setq strFileFullName (vl-filename-mktemp (strcat strDCLFileName ".dcl")))<br/>&nbsp;(setq objectFile (open strFileFullName "w"))<br/>&nbsp;(setq listFormatedInput (listFormatInputList listInputDefinements))<br/>&nbsp;(setq fileStream (append (list strDCLFileName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (listInputToString listFormatedInput)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(foreach fStream fileStream (princ fStream objectFile))<br/>&nbsp;(close objectFile)<br/>&nbsp;;;以上生成dcl文件,以下调用DCL,设置组件值、关联动作,获取返回值<br/>&nbsp;(setq listResult nil)<br/>&nbsp;(setq dclid (load_dialog strFileFullName))<br/>&nbsp;(if (not (new_dialog strDCLFileName dclid ""))<br/>&nbsp; (progn (alert "对话框加载失败!") (exit))<br/>&nbsp;)<br/>&nbsp;(if listKeysAndValues<br/>&nbsp; (SetDCLValues listKeysAndValues)<br/>&nbsp;)<br/>&nbsp;(if listKeysAndActions<br/>&nbsp; (SetDCLActions listKeysAndActions)<br/>&nbsp;)</p>
<p>&nbsp;(if listKeysToGetValue<br/>&nbsp; (action_tile "accept"&nbsp; "(setq listKeysValue (listGetDCLValues listKeysToGetValue)) (done_dialog 1)" )<br/>&nbsp;)<br/>&nbsp;(setq intDialogCloseType (start_dialog))<br/>&nbsp;(unload_dialog dclid)<br/>&nbsp;(vl-file-delete strFileFullName)<br/>&nbsp;(setq listResult (append (list intDialogCloseType) listKeysValue))<br/>&nbsp;listResult<br/>)<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;----------------------------------------------------------------------------------------------<br/>;;;----------------------------------------------------------------------------------------------</p>
<p>;;;;funlib.lsp<br/>;;; -------------------------------------------------------------------------<br/>;;;计算以当前设置书写的文本占用长度<br/>;;;调用参数形式 (&nbsp; 字符串 )<br/>(defun strLength (str / sLength x1 x2 lst)<br/>&nbsp;(setq lst (textbox (list (cons 1 str))))<br/>&nbsp;(setq x1 (car (nth 0 lst))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x2 (car (nth 1 lst))<br/>&nbsp;)<br/>&nbsp;(setq sLength (abs (- x2 x1)))<br/>&nbsp;sLength<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;;以当前设置初始化文本高、宽<br/>(defun initText (/ pt str eTextN)<br/>&nbsp;(setq pt (list 0 0))<br/>&nbsp;(setq str "初始化")<br/>&nbsp;(command "text" pt #ZiGao# 0 str)<br/>&nbsp;(setq eTextN (entlast))<br/>&nbsp;(entdel eTextN)<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;; 返回polyline的点表<br/>;;;调用参数形式 (&nbsp; 多义线图元名 )<br/>(defun getplpts (pl / mark pts ver1 i ee pt)<br/>&nbsp;(if (= "POLYLINE" (cdr (assoc 0 (entget pl))))<br/>&nbsp; (progn&nbsp; ; read points of ployline<br/>&nbsp;&nbsp; (setq mark "VERTEX"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ver1 (entnext pl)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (while (= "VERTEX" mark)<br/>&nbsp;&nbsp;&nbsp; (setq pts (append pts (list (cdr (assoc 10 (entget ver1))))))<br/>&nbsp;&nbsp;&nbsp; (setq ver1 (entnext ver1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i&nbsp;&nbsp;&nbsp; (1+ i)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq mark (cdr (assoc 0 (entget ver1))))<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (progn&nbsp; ; read points of lwployline<br/>&nbsp;&nbsp; (setq ee (entget pl))<br/>&nbsp;&nbsp; (foreach pt ee<br/>&nbsp;&nbsp;&nbsp; (if (= 10 (car pt))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pts (append<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pts<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list (append (cdr pt) (list (cdr (assoc 38 ee)))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;pts<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;;实数转换为桩号,并返回转换后的结果<br/>;;;调用参数形式 (&nbsp; 里程的数值 里程的前缀 )<br/>(defun rtoZhuanHao (rZhuanHao QianZhui / sZhuanHao QianMi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; rZhuanHao为需要转换为桩号的实数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; bzZhuanHao为桩号的前缀<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; SZhuanHao为转换后的桩号字串<br/>&nbsp;(if (&lt; rZhuanHao 0)<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (setq QianZhui (strcat "-" QianZhui))<br/>&nbsp;&nbsp; (setq rZhuanHao (abs rZhuanHao))<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq rZhuanHao (fixreal rZhuanHao 2))<br/>&nbsp;(setq QianMi (fix (/ rZhuanHao 1000)))<br/>&nbsp;(setq rZhuanHao (- rZhuanHao (* QianMi 1000)))<br/>&nbsp;(setq sZhuanHao (strcat QianZhui (rtos QianMi 2 0) "+"))<br/>&nbsp;(if (&lt; rZhuanHao 10)<br/>&nbsp; (setq sZhuanHao (strcat sZhuanHao "00"))<br/>&nbsp; (if (&lt; rZhuanHao 100)<br/>&nbsp;&nbsp; (setq sZhuanHao (strcat sZhuanHao "0"))<br/>&nbsp; )<br/>&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;不足位数桩号在前缀补位<br/>&nbsp;(setq sZhuanHao (strcat sZhuanHao (rtos rZhuanHao 2 2)))<br/>&nbsp;sZhuanHao<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;;将ag调整到-pi/2~pi/2,并返回调整后的结果<br/>(defun AngInHalfPi (ag)<br/>&nbsp;(setq ag (if (and (&gt; ag (/ pi 2)) (&lt; ag (* pi 1.5)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- ag pi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ag<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;ag<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;;将ag调整到0~pi,并返回调整后的结果<br/>(defun AngInPi (ag / twoPi)<br/>&nbsp;(setq twoPi (* 2 pi))</p>
<p>&nbsp;(if (&lt; ag 0)<br/>&nbsp; (while (&lt; ag 0)<br/>&nbsp;&nbsp; (setq ag (+ ag twoPi))<br/>&nbsp; )</p>
<p>&nbsp; (while (&gt;= ag twoPi)<br/>&nbsp;&nbsp; (setq ag (- ag twoPi))<br/>&nbsp; )<br/>&nbsp;)</p>
<p>&nbsp;ag<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;; 读取纬地道路软件格式的纵断面文件,并返回数据表,失败时返回nil<br/>;|<br/>(defun GetDateFromZDMFile<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (/ FileName File1 LST STR zdmList nt n ZH GaoCheng R ch zdmDateFormat)<br/>&nbsp;(setq zdmList nil)</p>
<p>&nbsp;(if (setq FileName (getfiled "选择纬地纵断面文件" "" "zdm" 4))<br/>&nbsp; (progn<br/>&nbsp;&nbsp; ;;读模式打开纵断面数据文件<br/>&nbsp;&nbsp; (setq File1 (open FileName "r"))</p>
<p>&nbsp;&nbsp; ;;逐行读入<br/>&nbsp;&nbsp; (setq n 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zdmDateFormat<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "正确格式"<br/>&nbsp;&nbsp; )<br/>;;;n用于记录当前行序号为第一行或非第一行<br/>&nbsp;&nbsp; (while (and (setq STR (read-line File1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= zdmDateFormat "正确格式")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if (= n 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq nt (read str))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (numberp nt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList (list (list nt)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmDateFormat "错误格式")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n纵断面数据文件第1行数格式有误:不是整数!"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ZH nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GaoCheng nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ZH (read str))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (and (/= (setq ch (substr str 1 1)) " ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&gt;= (strlen str) 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq str (substr str 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (and (= (setq ch (substr str 1 1)) " ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&gt;= (strlen str) 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq str (substr str 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq GaoCheng (read str))<br/>;;;取得高程</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (and (/= (setq ch (substr str 1 1)) " ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&gt;= (strlen str) 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq str (substr str 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (and (= (setq ch (substr str 1 1)) " ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&gt;= (strlen str) 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq str (substr str 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq R (read str))<br/>;;;取得高程</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (numberp ZH)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (numberp GaoCheng)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (numberp R)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList (append zdmList (list (list ZH GaoCheng R))))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmDateFormat "错误格式")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat "\n纵断面数据文件第" (rtos n 2 0) "行数据格式有误!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; (setq n (1+ n))<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; ;;关闭文件<br/>&nbsp;&nbsp; (close File1)<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;(if (/= nt (- n 2))<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (setq zdmList nil)<br/>&nbsp;&nbsp; (princ<br/>&nbsp;&nbsp;&nbsp; "\n纵断面数据文件格式有误:数据文件中指定的变坡点总数与实际的变坡点总数不符!"<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)</p>
<p>&nbsp;zdmList<br/>) ;_ 结束defun<br/>|;<br/>(defun GetDateFromZDMFile (/ strFileName objectFile LineN listN zdmList )<br/>&nbsp;(setq zdmList nil)</p>
<p>&nbsp;(if (setq strFileName (getfiled "选择纬地道路软件或鸿业市政道路软件的纵断面设计数据文件(*.zdm或*.bgs)" "" "" 4))<br/>&nbsp; (progn<br/>&nbsp;&nbsp; ;;读模式打开纵断面数据文件<br/>&nbsp;&nbsp; (setq objectFile (open strFileName "r"))</p>
<p>&nbsp;&nbsp; ;;逐行读入<br/>&nbsp;&nbsp; (while (setq LineN (read-line objectFile))&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (setq listN (read&nbsp; LineN)) ;单行字符串以"("开始,以")"结尾时,如鸿业市政道路软件数据文件格式<br/>&nbsp;&nbsp;&nbsp; (if (not (listp listN))&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq listN (read (strcat "(" LineN ")" ))) ;单行字符串无小括号时,如纬地道路软件数据文件格式<br/>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp;&nbsp; (if (and (&gt; (length listN) 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (numberp (car listN))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (numberp (cadr listN))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (numberp (caddr listN))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList (append zdmList (list listN)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (close objectFile)</p>
<p>&nbsp;&nbsp; (if (&gt; (length zdmList) 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList (append&nbsp; (list (list (length zdmList))) zdmList))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zdmList nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n纵断面数据文件格式有误,有效变坡点可能不足两个!" )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;zdmList<br/>)<br/>;;;------------------------------------------------------------------------<br/>;;;计算指定里程点的高程,成功则返回计算结果,否则返回提示出错原因的字符串<br/>;;;调用参数形式 (&nbsp; 纵断面设计数据表( 由GetDateFromZDMFile计算得到 ) 需查询高程的里程 )<br/>(defun ZDMBiaoGao (zdmList&nbsp;&nbsp;&nbsp;&nbsp; ZhuanHao&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp; zhQ&nbsp;&nbsp; bgQ&nbsp;&nbsp; zhA&nbsp;&nbsp; bgA&nbsp;&nbsp; rA&nbsp;&nbsp;&nbsp; TA&nbsp;&nbsp;&nbsp; zhTA&nbsp; TB&nbsp;&nbsp;&nbsp; zhTB&nbsp; zhB&nbsp;&nbsp; bgB<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rB&nbsp;&nbsp;&nbsp; zhH&nbsp;&nbsp; bgH&nbsp;&nbsp; iQA&nbsp;&nbsp; iAB&nbsp;&nbsp; iBH&nbsp;&nbsp; diA&nbsp;&nbsp; diB<br/>;;;zh开头表示桩号;bg开头表示标高;r开头表示竖曲线;<br/>;;;A,B当前里程所在区间前后点<br/>;;;Q,A点之前变坡点;Ta,A处竖曲线,A点后切线点;TB,B处竖曲线,B点前切线点;H,B点后变坡点<br/>;;;iQA iAB iB&nbsp; di,分别为前坡段坡度,AB坡度,后坡段坡度,坡度差<br/>;;;T表示切点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h0<br/>;;;未计竖曲线时高程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hc<br/>;;;竖曲线高程修正高程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h<br/>;;;设计高程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AoTuR<br/>;;;竖曲线凹凸,ao,凹;tu,凸<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp; nt&nbsp;&nbsp;&nbsp; x&nbsp;&nbsp;&nbsp;&nbsp; rStr&nbsp; OK&nbsp;&nbsp;&nbsp; RorS<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;(setq nt (car (nth 0 zdmList)))<br/>&nbsp;(setq RorS "str")</p>
<p>&nbsp;(if (&gt;= nt 2)<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (setq zhA (car (nth 1 zdmList)))<br/>&nbsp;&nbsp; (setq zhB (car (nth nt zdmList)))</p>
<p>&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp; ((&lt; ZhuanHao zhA) (setq rStr "桩号过小"))<br/>&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp; ((&gt; ZhuanHao zhB) (setq rStr "桩号过大"))<br/>&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp; ((&lt;= zhA ZhuanHao zhB)<br/>&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq OK 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (= OK 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhB (car (nth n zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&lt;= ZhuanHao zhB)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>;;;开始数据准备<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bgA (cadr (nth (1- n) zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bgB (cadr (nth n zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iAB (/ (- bgB bgA) (- zhB zhA)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= n 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq diA 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rA 1)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&gt; nt 2)<br/>;;;纵断面不只有一个坡段时<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rB (caddr (nth 2 zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhH (car (nth 3 zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bgH (cadr (nth 3 zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iBH (/ (- bgH bgB) (- zhH zhB)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq diB (- iBH iAB))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;点在第一段纵坡上时</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= n nt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq diB 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rB 1)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&gt; nt 2)<br/>;;;纵断面不只有一个坡段时<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rA (caddr (nth (1- n) zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhQ (car (nth (- n 2) zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bgQ (cadr (nth (- n 2) zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iQA (/ (- bgA bgQ) (- zhA zhQ)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq diA (- iAB iQA))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;点在最后一段纵坡上时</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (/= n 2) (/= n nt))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rA (caddr (nth (1- n) zdmList)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhQ (car (nth (- n 2) zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bgQ (cadr (nth (- n 2) zdmList)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rB (caddr (nth n zdmList)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhH (car (nth (1+ n) zdmList)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq bgH (cadr (nth (1+ n) zdmList)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iQA (/ (- bgA bgQ) (- zhA zhQ)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iBH (/ (- bgH bgB) (- zhH zhB)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq diA (- iAB iQA))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq diB (- iBH iAB))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;点不在第一段也不在最后一段纵坡上时</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq TA (abs (* diA (* 0.5 rA))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq TB (abs (* diB (* 0.5 rB))))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhTA (+ zhA TA))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhTB (- zhB TB))<br/>;;;结束数据准备</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((&lt; ZhuanHao zhTA)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x (- zhTA ZhuanHao))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq hc (* 0.5 (/ (* x x) rA)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&lt; diA 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq AoTuR "tu")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq AoTuR "ao")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;里程点在A点竖曲线上时</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((&lt;= zhTA ZhuanHao zhTB)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq hc 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;竖曲线修正值为0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq AoTuR "ao")<br/>;;;里程点不在竖曲线上,采用凹曲线的计算公式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;里程点不在竖曲线上时</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((&gt; ZhuanHao zhTB)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x (- ZhuanHao zhTB))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq hc (* 0.5 (/ (* x x) rB)))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (&lt; diB 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq AoTuR "tu")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq AoTuR "ao")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;里程点在B点竖曲线上时</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;计算竖曲线高程修正值,并判断曲线的凹凸</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq h (+ bgA (* iAB (- ZhuanHao zhA))))<br/>;;;计算未含竖曲线修正值时的设计高程</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= AoTuR "ao")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq h (+ h hc))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq h (- h hc))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;计算最终设计高程<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq OK 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq RorS "real")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zhA zhB)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;  <br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp; )</p>
<p>&nbsp; (setq rStr "数据文件有误")<br/>&nbsp;)<br/>&nbsp;(if (= RorS "real")<br/>&nbsp; h<br/>&nbsp; rStr<br/>&nbsp;)<br/>;;;输出返回值<br/>) ;_ 结束defun<br/>;;;------------------------------------------------------------------------<br/>;;;判断点位位曲线的左侧、右侧、还是在曲线上<br/>;;;返回结果为字符串,有三种:"右侧" "左侧" "在中线上"<br/>;;;调用参数形式 ( 曲线图元名 需判断左右的点 点与曲线的垂足 垂足到曲线起点的曲线长度 里程增加方向 )<br/>(defun strZhuoYou (oblname PJ PjP LPjP FS / ZhuoYou PP agPJ agPP agD)<br/>&nbsp;(if (/= (distance PJ PjP) 0)<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (if (= FS "同向")<br/>&nbsp;&nbsp;&nbsp; (setq PP (vlax-curve-getPointAtDist oblname (- LPjP 0.001)))<br/>&nbsp;&nbsp;&nbsp; (setq PP (vlax-curve-getPointAtDist oblname (+ LPjP 0.001)))<br/>&nbsp;&nbsp; )<br/>;;;取得里程比井里程小0.001的点坐标</p>
<p>&nbsp;&nbsp; (setq agPP (angle PjP PP))<br/>;;;PjP-&gt;PP方位角(0~2 Pi)<br/>&nbsp;&nbsp; (setq agPJ (angle PjP PJ))<br/>;;;PjP-&gt;PJ方位角(0~2 Pi)</p>
<p>&nbsp;&nbsp; (setq agD (- agPJ agPP))<br/>;;;方位角差</p>
<p>&nbsp;&nbsp; (if (or (&lt; (abs (- agD (* pi 0.5))) 0.5)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&lt; (abs (+ agD (* pi 1.5))) 0.5)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;方位角差为pi/2或1.5pi,最大误差为0.5<br/>&nbsp;&nbsp;&nbsp; (setq ZhuoYou "右侧")<br/>&nbsp;&nbsp;&nbsp; (setq ZhuoYou "左侧")<br/>&nbsp;&nbsp; )<br/>;;;点位于道路左侧或右侧<br/>&nbsp; )</p>
<p>&nbsp; (setq ZhuoYou "在中线上")<br/>&nbsp;)<br/>&nbsp;ZhuoYou<br/>)<br/>;;;------------------------------------------------------------------------<br/>;;;回四舍五入函数,返四舍五入后的实数<br/>;;;调用参数形式 (&nbsp; 数值 小数位数 )<br/>(defun fixReal (数值 小数位数 / N2 n10 NReturn)<br/>&nbsp;(setq n10 (expt 10 小数位数))<br/>&nbsp;(setq N2 (fix (* 数值 2 n10)))</p>
<p>&nbsp;(setq NReturn (+ (/ N2 2) (rem N2 2)))<br/>&nbsp;(setq NReturn (/ (float NReturn) (float N10)))<br/>&nbsp;NReturn<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;; 选择圆,允许按直径条件过滤,并返回选择集表<br/>;;;调用参数形式 (&nbsp; “提示需要进行的操作”+“圆及其修饰” 的文本 )<br/>(defun SelectCircles (OperationStr / obcName nob obc obcK i KeyW KeyR cR cList nList obType)<br/>&nbsp;(if (ssgetfirst)&nbsp;  <br/>&nbsp; (setq obc (ssget "_P" '((0 . "circle"))))<br/>&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;有预选择时,从预选择集中找出被选择的圆选择集</p>
<p>&nbsp;(if (not obc)<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (princ (strcat "\n选择需要" OperationStr ":"))<br/>&nbsp;&nbsp; (setq obc (ssget '((0 . "circle")))) ; 创建选择集 obc<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;无预选择或预选择中无圆图元时<br/>&nbsp;)</p>
<p>&nbsp;(if obc<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (setq nob (sslength obc))</p>
<p>&nbsp;&nbsp; (initget "Y N R _Yes No ReSelect")<br/>&nbsp;&nbsp; (setq KeyW<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (getkword<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat "\n是否选择了不需要"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OperationStr<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "[是(Y)/否(N)/重新选择(R)]&lt;N&gt;:"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;(cond<br/>&nbsp;&nbsp; ((= KeyW "Yes")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (initget 6)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KeyR (getreal<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\n指定需要"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OperationStr<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "的直径(右键或回车表示所有选择的圆均需要进行操作):"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (numberp KeyR)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cList nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat nob<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq obcK (ssname obc i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq cR (cdr (assoc 40 (entget obcK))))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (/= cR (/ KeyR 2.0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq cList (append cList (list obcK)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp; ;计算需要从选择集中去除的图元的名称表</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (length cList)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ssdel (nth i cList) obc)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   ;从选择集中去除不符合条件的图元<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; ((= KeyW "ReSelect")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n重新选择需要" OperationStr ":"))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq obc (ssget '((0 . "circle")))) ; 创建选择集 obc<br/>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (T nil)<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;obc<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;;根据里程计算井点的坐标,成功则返回表 ( 坐标,点所在里程处中线在里程增加方向的切线角) , 否则返回nil<br/>;;;为减少程序的计算量,调用参数多设置了两个<br/>;;;调用参数形式 (&nbsp; 中线对象 中线长度 起点里程 里程方向 终点里程 里程 左右 距离&nbsp; )<br/>(defun getPointByLiChengZhuoYouJuLi (中线对象 中线长度 起点里程 里程方向 终点里程 里程 左右 距离 / ag Dst obPoint lst)<br/>&nbsp;(setq obPoint nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ag 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lst nil<br/>&nbsp;)</p>
<p>&nbsp;(if (or (and (= 里程方向 "同向") (&lt;= 起点里程 里程 终点里程))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (and (/= 里程方向 "同向") (&gt;= 起点里程 里程 终点里程))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (setq Dst (abs (- 里程 起点里程)))<br/>&nbsp;&nbsp; (setq ZhongDian (vlax-curve-getPointAtDist 中线对象 Dst))<br/>&nbsp;&nbsp; ;;根据里程计算中点坐标</p>
<p>&nbsp;&nbsp; (if (= 距离 0) ;判断井是否在路中线上<br/>&nbsp;&nbsp;&nbsp; (setq obPoint ZhongDian)</p>
<p>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ag (AngleQieXiang 中线对象 ZhongDian))<br/>&nbsp;&nbsp;&nbsp;&nbsp; ;;计算切线角</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (if (or (and (= 里程方向 "同向") (= 左右 "左侧"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (and (/= 里程方向 "同向") (/= 左右 "左侧"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq obPoint (polar ZhongDian (+ ag (* pi 0.5)) 距离))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq obPoint (polar ZhongDian (+ ag (* pi 1.5)) 距离))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp; ;计算要求点不在路中线上时的坐标<br/>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (if (and (/= 距离 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (/= 里程方向 "同向")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq ag (+ ag pi))<br/>&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;点所在里程处中线在里程增加方向的切线角</p>
<p>&nbsp;&nbsp; (setq lst (list obPoint ag)) ;计算成功时,生成结果表<br/>&nbsp; )<br/>&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;里程有效时,计算坐标及切线角度<br/>&nbsp;lst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;返回结果表<br/>)<br/>;;; -------------------------------------------------------------------------<br/>;;;如果成功,返回表: ( 中线&nbsp; 中线起点里程&nbsp; 里程增加与曲线正向的关系&nbsp; 终点里程&nbsp; 中线长 ) ;否则返回nil<br/>;;;调用形式(&nbsp; GetZhongXiang nil或任意值)&nbsp; 如果参数不为nil时,将强制重新设置路中线扩展数据<br/>;;;生成的扩展数据格式为:(&nbsp; "PS_DLZX" (1040 起点里程) (1040 终点里程)&nbsp; )&nbsp; 注:此处的起终点为cad线图的起终点,非道路真实起终点<br/>(defun GetZhongXiang (strResetXData&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intSelectedSetNumber&nbsp;&nbsp; ssSelected<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strZhongXiangEntityName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listZhongXiangXData&nbsp;&nbsp;&nbsp; LZhongXiang<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QiDianLiCheng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZhongDianLiCheng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LiChengFangXiang&nbsp;&nbsp; strLiChengQianZhui&nbsp; listResult&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keyW<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;-------------------------------------------------------------<br/>;;;获取中线的xdata数据,并计算道路资料<br/>&nbsp;(defun GetFromXData (/ keyword tmpList )<br/>&nbsp; (setq strLiChengQianZhui (cdr (cadr listZhongXiangXData)))</p>
<p>&nbsp; (setq tmpList (caddr listZhongXiangXData))<br/>&nbsp; (setq QiDianLiCheng (cadr tmpList))<br/>&nbsp; (setq ZhongDianLiCheng (caddr tmpList))</p>
<p>&nbsp; (if (&lt;= QiDianLiCheng ZhongDianLiCheng)<br/>&nbsp;&nbsp; (setq LiChengFangXiang "同向")<br/>&nbsp;&nbsp; (setq LiChengFangXiang "反向")<br/>&nbsp; )<br/>&nbsp; (setq LZhongXiang<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-curve-getDistAtParam<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strZhongXiangEntityName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (vlax-curve-getEndParam strZhongXiangEntityName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-curve-getStartParam strZhongXiangEntityName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;中线长度<br/>&nbsp; (if (&lt; -1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (abs (- ZhongDianLiCheng QiDianLiCheng)) LZhongXiang)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp; ;判断定义路中线后,中线对象是否被改变<br/>&nbsp;&nbsp; (if (&lt;= QiDianLiCheng ZhongDianLiCheng) ;中线对象未被修改或仅被微调时<br/>&nbsp;&nbsp;&nbsp; (setq ZhongDianLiCheng (+ QiDianLiCheng LZhongXiang))<br/>&nbsp;&nbsp;&nbsp; (setq QiDianLiCheng (+ ZhongDianLiCheng LZhongXiang))<br/>&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;根据实际的道路起点里程及 道路长度重新计算路终里程,以免若路中线被微调,所计得到的设置不正确</p>
<p>&nbsp;&nbsp; (progn ;中线对象已被修改时<br/>&nbsp;&nbsp;&nbsp; (initget "A R _AutoSet Reset")<br/>&nbsp;&nbsp;&nbsp; (setq keyword (getkword<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "路中线在定义后已被改变[按原定义的起点及方向自动调整(A)/重新定义(R)]&lt;A&gt;:"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if (= keyword "Reset")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (InterSet)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (if (&lt;= QiDianLiCheng ZhongDianLiCheng)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ZhongDianLiCheng (+ QiDianLiCheng LZhongXiang))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq QiDianLiCheng (+ ZhongDianLiCheng LZhongXiang))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp; ;根据实际的道路起点里程及 道路长度重新计算路终里程<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>;;;-------------------------------------------------------------<br/>;;;以交互形式设置中线信息<br/>&nbsp;(defun InterSet (/ ckPointA KCKPA ckPointB kw zhFangShang LCKPA LCKPB LinShiPoint)<br/>&nbsp;&nbsp; ;;zhFangShang为用于判断里程增加方向,为正时,曲线开始点为里程起点,反之为终点<br/>&nbsp; (setvar "osmode" 431)<br/>&nbsp; (setq ckPointA nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ckPointB nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LinShiPoint nil<br/>&nbsp; )</p>
<p>&nbsp; (while (not ckPointA)<br/>&nbsp;&nbsp; (setq ckPointA (getpoint "\n指定中线上一点:"))<br/>&nbsp;&nbsp; (setq LinShiPoint (vlax-curve-getClosestPointTo strZhongXiangEntityName&nbsp;&nbsp; ckPointA&nbsp; T ) )<br/>&nbsp;&nbsp; (if (&lt;= (distance ckPointA LinShiPoint) 0.5) ;两点的距离在0~0.5之间时<br/>&nbsp;&nbsp;&nbsp; (setq ckPointA LinShiPoint)</p>
<p>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ckPointA nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n所指定的点不在指定的道路中心线上,请重新指定!")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp; )</p>
<p>&nbsp; (if (not (setq KCKPA (getreal "\n输入参考点的里程数值&lt;0&gt;:")))<br/>&nbsp;&nbsp; (setq KCKPA 0)<br/>&nbsp; )</p>
<p>&nbsp; (while (not ckPointB)<br/>&nbsp;&nbsp; (setq ckPointB (getpoint "\n指定路中线上的另一点:"))<br/>&nbsp;&nbsp; (setq LinShiPoint (vlax-curve-getClosestPointTo strZhongXiangEntityName&nbsp;&nbsp; ckPointB&nbsp;&nbsp; T&nbsp; ) )<br/>&nbsp;&nbsp; (if (&lt;= (distance ckPointB LinShiPoint) 5.0) ;两点的距离在0~5.0之间时<br/>&nbsp;&nbsp;&nbsp; (setq ckPointB LinShiPoint)</p>
<p>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ckPointB nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n所指定的点不在指定的道路中心线上,请重新指定!")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (if (and ckPointB<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&lt;= (distance ckPointB ckPointA) 0.1) ;如果两点的距离在0~0.1之间时,两点看做为同一点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ckPointB nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\n第二次指定的点与第一次指定的点相同,请重新指定与第一点不同的点!"<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp; )</p>
<p>&nbsp; (setvar "osmode" 0)</p>
<p>&nbsp; (initget "A S _Add Sub")<br/>&nbsp; (setq kw (getkword<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "\n第二点里程相对第一点的里程是[增加(A)/减少(S)]&lt;A&gt;:"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (if (= kw "Sub")<br/>&nbsp;&nbsp; (setq zhFangShang -1)<br/>&nbsp;&nbsp; (setq zhFangShang 1)<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 默认相对里程为增加</p>
<p>&nbsp; (setq LCKPA (vlax-curve-getDistAtPoint strZhongXiangEntityName ckPointA)) ; 第一点到曲线起点的长度<br/>&nbsp; (setq LCKPB (vlax-curve-getDistAtPoint strZhongXiangEntityName ckPointB)) ; 第二点到曲线起点的长度</p>
<p>&nbsp; (setq LZhongXiang<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-curve-getDistAtParam<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strZhongXiangEntityName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (vlax-curve-getEndParam strZhongXiangEntityName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-curve-getStartParam strZhongXiangEntityName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;中线长度</p>
<p>&nbsp; (if (&gt; (* zhFangShang (- LCKPB LCKPA)) 0)<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp; (setq QiDianLiCheng (- KCKPA LCKPA)) ; 中线起点(曲线起点)里程<br/>&nbsp;&nbsp;&nbsp; (setq ZhongDianLiCheng (+ QiDianLiCheng LZhongXiang))<br/>&nbsp;&nbsp;&nbsp; ;;终点里程<br/>&nbsp;&nbsp;&nbsp; (setq LiChengFangXiang "同向") ; 里程增加方向与中线起点到终点方向相同<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp; (setq QiDianLiCheng (+ KCKPA LCKPA)) ; 中线起点(曲线起点)里程<br/>&nbsp;&nbsp;&nbsp; (setq ZhongDianLiCheng (- QiDianLiCheng LZhongXiang)) ;终点里程<br/>&nbsp;&nbsp;&nbsp; (setq LiChengFangXiang "反向") ; 里程增加方向与中线起点到终点方向不同<br/>&nbsp;&nbsp; )<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;判断里程方向与曲线方向的关系,并确定曲线起终点的里程</p>
<p>&nbsp; (if (= "" (setq strLiChengQianZhui (getstring "\n输入里程的前缀&lt;K&gt;:")))<br/>&nbsp;&nbsp;&nbsp; (setq strLiChengQianZhui "K")<br/>&nbsp;&nbsp; )</p>
<p>&nbsp; (SetXdata strZhongXiangEntityName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list "PS_DLZX"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 1000 strLiChengQianZhui)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list 1010 QiDianLiCheng ZhongDianLiCheng 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; ;;把起点里程及 终点里程定义添加到中线对象的标记为"PS_DLZX" 的扩展数据中<br/>&nbsp;)<br/>;;;-------------------------------------------------------------<br/>&nbsp;(setq listResult nil)<br/>&nbsp;(vl-cmdf "ucs" "w")</p>
<p>&nbsp;(setq intSelectedSetNumber 2)<br/>&nbsp;(while (&gt; intSelectedSetNumber 1)<br/>&nbsp; (princ "\n选择路中线(只能选择一条线):")<br/>&nbsp; (setq ssSelected (ssget '((0 . "*line,arc")))) ; 创建选择集 ssSelected<br/>&nbsp; (if ssSelected<br/>&nbsp;&nbsp; (setq intSelectedSetNumber (sslength ssSelected))<br/>&nbsp;&nbsp; (setq intSelectedSetNumber 2)<br/>&nbsp; )<br/>&nbsp;)</p>
<p>&nbsp;(setq strZhongXiangEntityName (ssname ssSelected 0)) ; oblname,取得中线对象名</p>
<p>&nbsp;(setq listZhongXiangXData (cadr (assoc -3&nbsp;&nbsp; (entget strZhongXiangEntityName&nbsp; '("PS_DLZX")) )))</p>
<p>&nbsp;(if listZhongXiangXData<br/>&nbsp; (if (= strResetXData "是")<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (initget "S R _Set Remain")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq keyW (getkword "该路中线已经被定义![重新定义(S)/保留原定义(R)]&lt;R&gt;:"&nbsp; ) )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= keyW "Set")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (InterSet) ;如果指定重新设置,设置路中线信息<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (GetFromXData) ;不指定重新设置时,从扩展数据计算路中线信息<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;存在已定义的路中线扩展数据时</p>
<p>&nbsp; (InterSet) ;未设置有扩展的路中线数据时,重头设置路中线信息<br/>&nbsp;)</p>
<p>&nbsp;(setq listResult (list strZhongXiangEntityName QiDianLiCheng LiChengFangXiang ZhongDianLiCheng LZhongXiang strLiChengQianZhui) )<br/>&nbsp;listResult<br/>)<br/>;;;-------------------------------------------------------------<br/>;| (SetXdata strEntityName listApp) = entmod方式,给实体添加或更新或删除扩展数据.-----梁雄啸.2004.10.1<br/>参数: strEntityName = 实体名.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listApp = '("注册名" 项1 项2 ...) ;用于添加或更新. 如(list "test" '(1070 . 1234)'(1003 . "0"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '("注册名") ; 用于删除相关注册项的xdata.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nil ; 用于删除实体全部的xdata.<br/>说明: 支持所有实体.非图形实体不支持viewport(必须用 vlax-ldata-put.或setxdata方法).<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参考 entmod 帮助.<br/>相关: 参照 ()函数=vla方式,支持所有的扩展数据修改.<br/>实例: 1.增加(如已经有,则为更新)指定注册名的xdata:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SetXdata (car(entsel)) (list "test" (cons 1070 1234)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.删除指定注册名的xdata:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SetXdata (car(entsel)) '("test"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.删除所有的扩展数据:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SetXdata (setq strEntityName(car(entsel))) nil)<br/>|;<br/>(defun SetXdata (strEntityName listApp / listApps)<br/>&nbsp;(if listApp<br/>&nbsp; (regapp (car listApp))<br/>&nbsp;)<br/>&nbsp;;;无论是否已经有,均注册.有重复的话无不利影响.<br/>&nbsp;(if listApp<br/>&nbsp; (entmod (list (cons -1 strEntityName) (list -3 listApp)))<br/>&nbsp; ;;新建,更新,或删除指定app,{用 '("注册名") }.<br/>&nbsp; (progn ;;删除所有的扩展数据.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq listApps (mapcar 'car (cdr (assoc -3 (entget strEntityName '("*"))))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod (list (cons -1 strEntityName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons -3 (mapcar 'list listApps))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>)<br/>;;;-------------------------------------------------------------<br/>;;;计算曲线上一点处的正向切线角0~2 pi<br/>;;;调用形式 (曲线对象名 曲线上一点的坐标) :未处理坐标不在曲线上的情况<br/>(defun AngleQieXiang (曲线 pt / para Pt1 ag)<br/>&nbsp;(setq para (vlax-curve-getParamAtPoint 曲线 pt))<br/>&nbsp;(setq Pt1 (vlax-curve-getFirstDeriv 曲线 para))<br/>&nbsp;(setq ag (angle '(0 0) Pt1))<br/>&nbsp;;;计算切线角<br/>&nbsp;ag<br/>)<br/>;;;-------------------------------------------------------------<br/>;;;在当前图层、当前空间画直线<br/>;;;调用形式 (&nbsp; AddLine 起点坐标&nbsp; 终点坐标 ),如果成功,返回定义数据的图元表,否则返回 nil。<br/>(defun AddLine (listStartPoint listEndPoint)<br/>&nbsp;(entmake (list '(0 . "LINE")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 10 listStartPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 11 listEndPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>)<br/>;;;-------------------------------------------------------------<br/>;;;计算从角1到角2逆时针的角度差<br/>;;;返回0~2 pi的正值<br/>(defun AngleDelta ( fStartAngle fTargetAngle / fDelta)<br/>&nbsp;(setq fDelta (-&nbsp; fTargetAngle fStartAngle ))<br/>&nbsp;(if (&lt; fDelta 0)<br/>&nbsp;&nbsp; (setq fDelta (+ fDelta (* 2 pi)))<br/>&nbsp; )<br/>&nbsp; fDelta<br/>)<br/>;;;-------------------------------------------------------------<br/>;;;在当前图层、当前空间画圆<br/>;;;调用形式 (&nbsp; AddCircle 圆心坐标&nbsp; 半径 ),如果成功,返回定义数据的图元表,否则返回 nil。<br/>(defun AddCircle (listCenterPoint floatRadius)<br/>&nbsp;(entmake (list '(0 . "CIRCLE")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 10 listCenterPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 40 floatRadius)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>)<br/>;;;------------------------------------------------------------------------<br/>;;;在当前图层、当前空间、按文本居中方式,写单行文本<br/>;;;调用形式 (&nbsp; AddText_AlignmentMiddle&nbsp; 插入点坐标 字高 文本旋转角度(rad)&nbsp; 文本内容&nbsp; 宽高比例 字体样式名),如果成功,返回定义数据的图元表,否则返回 nil。<br/>(defun AddText_AlignmentMiddle&nbsp; (listInsertPoint floatTextHigh floatRotateAngle strText floatScaleFactor&nbsp; strStyleName)<br/>&nbsp;(entmake (list '(0 . "TEXT")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(10 0 0 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 11 listInsertPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 40 floatTextHigh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 1 strText)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 50 floatRotateAngle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 41 floatScaleFactor)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 7 strStyleName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(72 . 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(100 . "AcDbText")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>)<br/>;;;------------------------------------------------------------------------<br/>;;;在当前图层、当前空间、按文本左对齐方式,写单行文本<br/>;;;调用形式 (&nbsp; AddText_AlignmentLeft&nbsp; 插入点坐标 字高 文本旋转角度(rad)&nbsp; 文本内容&nbsp; 宽高比例 字体样式名),如果成功,返回定义数据的图元表,否则返回 nil。<br/>(defun AddText_AlignmentLeft&nbsp; (listInsertPoint floatTextHigh floatRotateAngle strText floatScaleFactor&nbsp; strStyleName)<br/>&nbsp;(entmake (list '(0 . "TEXT")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 10 listInsertPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 40 floatTextHigh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 1 strText)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 50 floatRotateAngle)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 41 floatScaleFactor)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 7 strStyleName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(100 . "AcDbText")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>)<br/>;;;------------------------------------------------------------------------<br/>;;;在当前图层、当前空间插入块<br/>;;;调用形式 ( InsertBlock&nbsp; 块名&nbsp; 插入点&nbsp; 旋转角度 )<br/>;;;成功时,返回dxf组码,否则返回nil<br/>(defun InsertBlock ( strBlockName listInsertPoint floatRotateAngle )<br/>(entmake (list '(0 . "INSERT")<br/>'(100 . "AcDbEntity")<br/>'(100 . "AcDbBlockReference")<br/>(cons 2 strBlockName)<br/>(cons 10 listInsertPoint)<br/>(cons 50 floatRotateAngle)))<br/>&nbsp;)<br/>;;;-------------------------------------------------------------<br/>;;;标记undo编组开始点<br/>(defun BeginUndoGroup()<br/>&nbsp;(command "undo" "be")<br/>&nbsp;)<br/>;;; -------------------------------------------------------------------------<br/>;;;标记undo编组结束点<br/>(defun EndUndoGroup()<br/>&nbsp;(command "undo" "e")<br/>&nbsp;)<br/>;;; -------------------------------------------------------------------------<br/>;;; -------------------------------------------------------------------------<br/>;;; -------------------------------------------------------------------------<br/>;;; -------------------------------------------------------------------------<br/>;;; -------------------------------------------------------------------------<br/>;;块统计.LSP</p>
<p>&nbsp;</p>
<p><br/>;;;--------------------------------------------------------------------------------<br/>;;;从块选择集中选择指定块名的对象,并返回结果选择集<br/>(defun intCountSingleBlock (ssOriginal strTargetBlockName /<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strEntityName listEntityDXF strBlockName intSingleBlockCount k)<br/>&nbsp;(setq intSingleBlockCount 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k -1 )<br/>&nbsp;(repeat (sslength ssOriginal) ; 循环与所选择的对象数量相等的次数<br/>&nbsp; (setq strEntityName (ssname ssOriginal (setq k (1+ k)))) ; strEntityName,取得第k个对象名<br/>&nbsp; (setq listEntityDXF (entget strEntityName))<br/>&nbsp; (setq strBlockName (cdr (assoc 2 listEntityDXF)))<br/>&nbsp; (if (= strBlockName strTargetBlockName)<br/>&nbsp;&nbsp; (setq intSingleBlockCount (1+ intSingleBlockCount))<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;intSingleBlockCount<br/>)<br/>;;;--------------------------------------------------------------------------------<br/>;;;从块选择集中删除指定块名的对象,并返回结果选择集<br/>(defun ssDelEntitysFromBlockSelectionSet (ssOriginal strTargetBlockName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / strEntityName listEntityDXF strBlockName ssResult k)<br/>&nbsp;(setq ssResult (ssadd)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k -1 )<br/>&nbsp;(repeat (sslength ssOriginal) ; 循环与所选择的对象数量相等的次数<br/>&nbsp; (setq strEntityName (ssname ssOriginal (setq k (1+ k)))) ; strEntityName,取得第k个对象名<br/>&nbsp; (setq listEntityDXF (entget strEntityName))<br/>&nbsp; (setq strBlockName (cdr (assoc 2 listEntityDXF)))<br/>&nbsp; (if (/= strBlockName strTargetBlockName)<br/>&nbsp;&nbsp; (setq ssResult (ssadd strEntityName ssResult))<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;ssResult<br/>)<br/>;;;--------------------------------------------------------------------------------<br/>;;;插入块缩略图<br/>(defun PrintBlockMiniature (floatBasicPointX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBasicPointY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strBlockName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatMaxBlockWidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatMaxBlockHigh<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockOriginalWidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockOriginalHigh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockWidthScale<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockHighScale&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockBoundingBoxTargetMinPointX<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockBoundingBoxTargetMinPointY&nbsp;&nbsp; floatBlockBoundingBoxTargetMaxPointX<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockBoundingBoxTargetMaxPointY&nbsp;&nbsp; listTargetBlockCenterPoint<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listBlockBoundingBoxMinPoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listBlockBoundingBoxMaxPoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objectBlockEntity<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strEntityName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listInsertPoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockScale<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listBlockEntityDXF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listBlockCenterPoint<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;;; floatBasicPointX floatBasicPointY 缩略图所在表格单元左下角点坐标<br/>&nbsp;;;计算图块缩略图在图中允许放置范围的左下及右上角点坐标的X、Y数值<br/>&nbsp;(setq floatMaxBlockWidth 21<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatMaxBlockHigh 8<br/>&nbsp;)<br/>&nbsp;(setq floatBlockBoundingBoxTargetMinPointX (+ floatBasicPointX 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockBoundingBoxTargetMinPointY (+ floatBasicPointY 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockBoundingBoxTargetMaxPointX (+ floatBasicPointX floatMaxBlockWidth 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockBoundingBoxTargetMaxPointY (+ floatBasicPointY floatMaxBlockHigh 1)<br/>&nbsp;)<br/>&nbsp;(setq listTargetBlockCenterPoint (list (/ (+ floatBlockBoundingBoxTargetMinPointX&nbsp; floatBlockBoundingBoxTargetMaxPointX ) 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (/ (+ floatBlockBoundingBoxTargetMinPointY floatBlockBoundingBoxTargetMaxPointY )&nbsp; 2 )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)</p>
<p>&nbsp;(setq listInsertPoint (list floatBlockBoundingBoxTargetMinPointX&nbsp; floatBlockBoundingBoxTargetMinPointY&nbsp; ) )<br/>&nbsp;(InsertBlock strBlockName listInsertPoint 0)<br/>&nbsp;;;以块缩略图允许放置范围的左下角点为块缩略图的基点插入图块</p>
<p>&nbsp;(setq strEntityName (entlast))<br/>&nbsp;(setq objectBlockEntity (vlax-ename-&gt;vla-object strEntityName))<br/>&nbsp;(if&nbsp; (vl-catch-all-error-p (vl-catch-all-apply 'vla-GetBoundingBox <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list objectBlockEntity&nbsp; 'listBlockBoundingBoxMinPoint 'listBlockBoundingBoxMaxPoint ))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) ;判断块是否存在边框,若块含无限长直线等时,则不存在边框<br/>&nbsp;&nbsp;&nbsp; (AddText_AlignmentMiddle listBlockCenterPoint 3 0 "本块无缩略图" 0.8 "hztxt")<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(setq listBlockBoundingBoxMinPoint (vlax-safearray-&gt;list listBlockBoundingBoxMinPoint) )<br/>&nbsp;(setq listBlockBoundingBoxMaxPoint (vlax-safearray-&gt;list listBlockBoundingBoxMaxPoint) )<br/>&nbsp; <br/>&nbsp;(if (&gt; (car listBlockBoundingBoxMaxPoint)&nbsp; (car listBlockBoundingBoxMinPoint) )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq floatBlockWidthScale (/ floatMaxBlockWidth<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (car listBlockBoundingBoxMaxPoint) (car listBlockBoundingBoxMinPoint) ) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq&nbsp; floatBlockWidthScale 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;<br/>&nbsp;(if (&gt; (cadr listBlockBoundingBoxMaxPoint) (cadr listBlockBoundingBoxMinPoint)&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq&nbsp;&nbsp; floatBlockHighScale&nbsp; (/ floatMaxBlockHigh<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (cadr listBlockBoundingBoxMaxPoint) (cadr listBlockBoundingBoxMinPoint) )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq&nbsp;&nbsp; floatBlockHighScale 0)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;;计算块缩略图允许放置范围的边框长宽与块外框长宽的比值<br/>&nbsp; <br/>&nbsp;(cond <br/>&nbsp; ((= (+ floatBlockWidthScale floatBlockHighScale) 0)&nbsp; (setq floatBlockScale 1)) ;块为单点时,缩放比例取为1<br/>&nbsp; ((=&nbsp; floatBlockWidthScale 0)&nbsp; (setq floatBlockScale floatBlockHighScale) ) ;块为竖直短线时<br/>&nbsp; ((=&nbsp; floatBlockHighScale 0)&nbsp; (setq floatBlockScale floatBlockWidthScale) ) ;块为水平短线时<br/>&nbsp; ((&gt; floatBlockWidthScale floatBlockHighScale )&nbsp; (setq floatBlockScale floatBlockHighScale) ) ;数值较小者为块的控制缩放比例<br/>&nbsp; (T&nbsp; (setq floatBlockScale floatBlockWidthScale) )&nbsp; <br/>&nbsp; ) </p>
<p>&nbsp;(setq listBlockEntityDXF (entget strEntityName))<br/>&nbsp;(entmod (subst (cons 41 floatBlockScale) (assoc 41 listBlockEntityDXF) listBlockEntityDXF ) )<br/>&nbsp;(entupd strEntityName)</p>
<p>&nbsp;(setq listBlockEntityDXF (entget strEntityName))<br/>&nbsp;(entmod (subst (cons 42 floatBlockScale) (assoc 42 listBlockEntityDXF) listBlockEntityDXF ) )<br/>&nbsp;(entupd strEntityName)</p>
<p>&nbsp;(setq listBlockEntityDXF (entget strEntityName))<br/>&nbsp;(entmod (subst (cons 43 floatBlockScale) (assoc 43 listBlockEntityDXF) listBlockEntityDXF ) )<br/>&nbsp;(entupd strEntityName)<br/>&nbsp;;;缩放块</p>
<p>&nbsp;(vla-GetBoundingBox objectBlockEntity 'listBlockBoundingBoxMinPoint 'listBlockBoundingBoxMaxPoint)<br/>&nbsp;(setq listBlockBoundingBoxMinPoint (vlax-safearray-&gt;list listBlockBoundingBoxMinPoint) )<br/>&nbsp;(setq listBlockBoundingBoxMaxPoint (vlax-safearray-&gt;list listBlockBoundingBoxMaxPoint) )<br/>&nbsp;(setq listBlockCenterPoint (list (* 0.5 (+ (car listBlockBoundingBoxMaxPoint) (car listBlockBoundingBoxMinPoint) ) )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (* 0.5 (+ (cadr listBlockBoundingBoxMaxPoint) (cadr listBlockBoundingBoxMinPoint) ) )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(vla-move objectBlockEntity (vlax-3d-point listBlockCenterPoint) (vlax-3d-point listTargetBlockCenterPoint))<br/>&nbsp;)<br/>&nbsp;)</p>
<p>)<br/>;;;--------------------------------------------------------------------------------<br/>;;;打印统计结果表<br/>(defun PrintCountResultList (listResult&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ListLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strBlockName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intNumberOfSSSingleBlockName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNumberOfSSSingleBlockName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatTextHigh<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;(setq pt (getpoint "\n点取要标注块统计结果信息的位置:"))<br/>&nbsp;(setq x (car pt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y (cadr pt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatTextHigh 4<br/>&nbsp;)</p>
<p>&nbsp;(setq ListLength (length listResult))</p>
<p>&nbsp;(setq y1 (- y (* (1+ ListLength) 10))) ;行高取10<br/>&nbsp;(while (&lt;= i 3)<br/>&nbsp; (setq x1 (+ x (* i 25))) ;列宽取25</p>
<p>&nbsp; (setq pt1 (list x1 y 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt2 (list x1 y1 0)<br/>&nbsp; )</p>
<p>&nbsp; (AddLine pt1 pt2)<br/>&nbsp; (setq i (1+ i))<br/>&nbsp;)<br/>;;;画竖向表格线</p>
<p>&nbsp;(setq i 0)<br/>&nbsp;(setq x1 (+ x (* 3 25)))<br/>&nbsp;(while (&lt;= i (1+ ListLength))<br/>&nbsp; (setq y1 (- y (* i 10)))</p>
<p>&nbsp; (setq pt1 (list x y1 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt2 (list x1 y1 0)<br/>&nbsp; )</p>
<p>&nbsp; (AddLine pt1 pt2)<br/>&nbsp; (setq i (1+ i))<br/>&nbsp;)<br/>;;;画横向表格线</p>
<p>;;;------------------------------------------------------------------------<br/>&nbsp;(setq x1 (+ x (* 0.5 25))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x2 (+ x (* 1.5 25))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x3 (+ x (* 2.5 25))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y1 (- y 7)<br/>&nbsp;)</p>
<p>&nbsp;(setq pt1 (list x1 y1 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt2 (list x2 y1 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt3 (list x3 y1 0)<br/>&nbsp;)</p>
<p>&nbsp;(AddText_AlignmentMiddle pt1 floatTextHigh 0 "块缩略图" 0.8 "hztxt")<br/>&nbsp;(AddText_AlignmentMiddle pt2 floatTextHigh 0 "块名称" 0.8 "hztxt")<br/>&nbsp;(AddText_AlignmentMiddle pt3 floatTextHigh 0 "块数量" 0.8 "hztxt")<br/>&nbsp;;;输出表头<br/>;;;------------------------------------------------------------------------<br/>&nbsp;(setq i 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatTextHigh 3 )<br/>&nbsp;(while (&lt; i ListLength)<br/>&nbsp; (setq y1 (+ y (* -10 (+ i 2))))</p>
<p>&nbsp; (setq ;pt1 (list x1 y1 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt2 (list x2 (+ y1 3) 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pt3 (list x3 (+ y1 3) 0)<br/>&nbsp; )</p>
<p>&nbsp; (setq strBlockName (car (nth i listResult))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; intNumberOfSSSingleBlockName (cadr (nth i listResult))<br/>&nbsp; )<br/>&nbsp; (setq strNumberOfSSSingleBlockName (itoa intNumberOfSSSingleBlockName))</p>
<p>&nbsp; (AddText_AlignmentMiddle pt2 floatTextHigh 0 strBlockName 0.8 "hztxt")<br/>&nbsp; (AddText_AlignmentMiddle pt3 floatTextHigh 0 strNumberOfSSSingleBlockName 0.8 "hztxt")<br/>&nbsp; <br/>&nbsp; (if (vl-catch-all-error-p (vl-catch-all-apply 'PrintBlockMiniature (list x y1 strBlockName)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (AddText_AlignmentLeft (list (+ x 1) (+ y1 2)) 3 0 "生成块缩略图时出错" 0.8 "hztxt")<br/>&nbsp;&nbsp; )</p>
<p>&nbsp; (setq i (1+ i))<br/>&nbsp;)<br/>;;;打印表内容<br/>)<br/>;;;--------------------------------------------------------------------------------<br/>(defun GetBlocksSelectionRange (/ strDCLFileName listInputDefinements listKeysAndValues listKeysAndActions listKeysToGetValue<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listDCLReturn intButtonClick strSelectRange)</p>
<p>&nbsp;(setq strSelectRange&nbsp; "UserSelection" )<br/>&nbsp;(setq strDCLFileName "BlocksSelectionRange")<br/>&nbsp;(setq listInputDefinements '(("dialog" "指定统计范围" "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("spacer")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("radio_column" "进行块统计的范围:")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btRadio" "手工选择" "brUserSelection")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btRadio" "整个图形" "brDrawingFile")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("end")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("text" "注:不统计含无限长直线的块!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("spacer")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("btOK")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("end")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq listKeysAndValues '(("brUserSelection" "1")))<br/>&nbsp;(setq listKeysAndActions '(("brUserSelection" "(setq strSelectRange \"UserSelection\")")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ("brDrawingFile" "(setq strSelectRange \"DrawingFile\")")) )<br/>&nbsp;(setq listKeysToGetValue nil)</p>
<p>&nbsp;(setq listDCLReturn (listGenerateDCL strDCLFileName listInputDefinements listKeysAndValues listKeysAndActions listKeysToGetValue) )<br/>&nbsp;(setq intButtonClick (car listDCLReturn )&nbsp; )<br/>&nbsp;strSelectRange<br/>)<br/>;;;--------------------------------------------------------------------------------<br/>;;;块数量统计<br/>(defun tktj (/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssObjects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strEntityName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listEntityDXF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strBlockName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listResult&nbsp; intSingleBlockCount&nbsp; listMinPoint listInsertPoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; floatBlockRotateAngle<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;listResult 用于记录统计结果,形式为((&nbsp; 块名&nbsp; 块数量&nbsp; 同名块中一个实体的对象名 )...)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>; (initget "D S _DrawingFile UserSelection")<br/>; (setq strSelectRange (getkword "\n统计块的范围[全图(D)/选择(S)]&lt;S&gt;:"))<br/>&nbsp;(setq strSelectRange (GetBlocksSelectionRange))</p>
<p>&nbsp;(if (= strSelectRange "DrawingFile")<br/>&nbsp; (setq ssObjects&nbsp; (ssget "X" '((0 . "insert")(100 . "AcDbBlockReference")))) ; 创建选择集 ssObjects</p>
<p>&nbsp; (progn<br/>&nbsp;&nbsp; (princ "\n请选择需要统计的块:\n")<br/>&nbsp;&nbsp; (setq ssObjects (ssget '((0 . "INSERT")(100 . "AcDbBlockReference")))) ; 创建选择集 ssObjects<br/>&nbsp; )<br/>&nbsp;)</p>
<p>&nbsp;(if ssObjects<br/>&nbsp; (progn<br/>&nbsp;&nbsp; (setq listResult nil)<br/>&nbsp;&nbsp; (while (&gt; (sslength ssObjects) 0)<br/>&nbsp;&nbsp;&nbsp; (setq strEntityName (ssname ssObjects 0)) ; strEntityName,取得第1个对象名<br/>&nbsp;&nbsp;&nbsp; (setq listEntityDXF (entget strEntityName))<br/>&nbsp;&nbsp;&nbsp; (setq strBlockName (cdr (assoc 2 listEntityDXF)))<br/>&nbsp;&nbsp;&nbsp; (setq intSingleBlockCount (intCountSingleBlock ssObjects strBlockName ) )<br/>&nbsp;&nbsp;&nbsp; (setq ssObjects (ssDelEntitysFromBlockSelectionSet ssObjects strBlockName))</p>
<p>&nbsp;&nbsp;&nbsp; (setq listResult (append listResult<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list (list strBlockName intSingleBlockCount))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (setvar "dimzin" 8)<br/>&nbsp;&nbsp; (setvar "osmode" 0)<br/>&nbsp; (if&nbsp; (tblsearch "style" "hztxt")<br/>&nbsp;&nbsp;&nbsp; ;;判断是否存在"hztxt"字体,有则设为当前,无则创建。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setvar "textstyle" "hztxt")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "_style" "hztxt" "sceie.shx,sceic.shx" 0 0.8 0 "N" "N" "N")<br/>&nbsp;&nbsp; )</p>
<p>&nbsp;&nbsp; (PrintCountResultList listResult)<br/>&nbsp;&nbsp; (setvar "osmode" 16383)<br/>&nbsp; )<br/>&nbsp;)</p>
<p>&nbsp;(princ)<br/>)</p>
<p><br/>(defun c:ktj()(dim_scei_tktj))<br/>;;;--------------------------------------------------------------------------------</font></p>

Maxwell 发表于 2024-7-16 11:52:28

感谢分享真正的源码。
打击“伪货、伪人、伪**。。。人人有责”!
不提示需要另外的函数的伪代码就是耍流氓,骗币!
花了钱下载下来之后缺这个少那个,又不明说,真的是耍流氓!
分享还有什么意义!
估计坛友们用过会来上那么一句吧,嘎嘎....

xxyyzzlg 发表于 2024-7-25 22:30:39

感谢分享,收藏了,这些函数说不定哪天就能用上

taiwanfox 发表于 2024-7-24 14:45:10

好東西,謝謝分享,感謝!!!

hpy 发表于 2010-7-12 13:20:00

感谢分享真正的源码。

aicr317 发表于 2010-7-12 16:49:00

打击“伪货、伪人、伪**。。。人人有责”!

xyz2009xyz 发表于 2010-7-13 16:49:00

<p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div id="textstyle_2" style="FONT-SIZE: 12pt; OVERFLOW: hidden; WORD-BREAK: break-all; TEXT-INDENT: 0px; WORD-WRAP: break-word">感谢分享真正的源码。 </div></td></tr></tbody></table>可惜刚开始学,不知道怎么调用,:-)希望大虾们稍微讲解一下!解惑。。</p>

duotu007 发表于 2010-7-13 18:18:00

<p>最后一行改成</p>
<p>(defun c:ktj() (tktj))<br/></p>

hzh2000 发表于 2010-7-14 09:57:00

不是很好用

az98hxq 发表于 2010-7-15 13:28:00

非常不错,支持源码,下下来学学

zzt21963 发表于 2010-7-15 15:38:00

狂好的软件!喜欢

dkj0322 发表于 2010-9-9 17:23:00

<p>谢谢分享</p>
<p>&nbsp;</p>

pizg 发表于 2010-9-9 17:27:00

感謝樓主無私分享
页: [1] 2 3
查看完整版本: [转帖]完美统计图块数量及图块图例的显示(非伪源码)