求高手帮忙写个代码(高手在民间)
本帖最后由 86023383 于 2013-7-13 22:26 编辑在CAD上面选择例如 HK500X350X10X16/280 或者多个这种格式的文本读取,及[600-10-14X100或者多个这样格式读取 ,生成 LIS 文件。在此小弟谢谢大家了!
PROFILE DATABASE EXPORT VERSION = 3(这行是固定的)
PROFILE_NAME = "HK500X350X10X16/280";
{
TYPE = 11; SUB_TYPE = 11001; COORDINATE = 0.000;
{
"HEIGHT" 5.000000000E+002 (高)对应的500
"WEB_THICKNESS" 1.000000000E+001 (腹板厚度)对应的10
"FLANGE_THICKNESS" 1.600000000E+001 (翼缘厚度)对应的16
"WIDTH" 3.500000000E+002 (翼缘宽度)对应的350
"CANTILEVER" 3.500000000E+001 ((宽度-280)/2) 对应的是 (350-280)/2
"ROUNDING_RADIUS" 1.500000000E+001 (固定)
"CROSS_SECTION_AREA" 0.000000000E+000
"COVER_AREA" 0.000000000E+000
"WEIGHT_PER_UNIT_LENGTH" 0.000000000E+000
"MOMENT_OF_INERTIA_X" 0.000000000E+000
"MOMENT_OF_INERTIA_Y" 0.000000000E+000
"SECTION_MODULUS_X" 0.000000000E+000
"SECTION_MODULUS_Y" 0.000000000E+000
"RADIUS_OF_GYRATION_X" 0.000000000E+000
"RADIUS_OF_GYRATION_Y" 0.000000000E+000
"NEUTRAL_AXIS_LOCATION_ELASTIC_X" 0.000000000E+000
"NEUTRAL_AXIS_LOCATION_ELASTIC_Y" 0.000000000E+000
"NEUTRAL_AXIS_LOCATION_PLASTIC_X" 0.000000000E+000
"NEUTRAL_AXIS_LOCATION_PLASTIC_Y" 0.000000000E+000
"PLASTIC_MODULUS_X" 0.000000000E+000
"PLASTIC_MODULUS_Y" 0.000000000E+000
"TANGENT_OF_PRINCIPAL_AXIS_ANGLE" 0.000000000E+000
"SHEAR_CENTER_LOCATION" 0.000000000E+000
"TORSIONAL_CONSTANT" 0.000000000E+000
"WARPING_CONSTANT" 0.000000000E+000
"NORMALIZED_WARPING_CONSTANT" 0.000000000E+000
"WARPING_STATICAL_MOMENT" 0.000000000E+000
"STATICAL_MOMENT_Qf" 0.000000000E+000
"STATICAL_MOMENT_Qw" 0.000000000E+000
"SQRT_OF_E_x_Cw_PER_G_x_J" 0.000000000E+000
"POLAR_RADIUS_OF_GYRATION" 0.000000000E+000
}
}
本帖最后由 ZZXXQQ 于 2013-7-15 00:06 编辑
(defun c:tt () ;HK500X350X10X16/280,[550-10-14X100
(setq fnm (if (= (type fnm) 'STR) fnm ""))
(if (and (setq ss (ssget '((0 . "TEXT") (1 . "HK*X*X*X*/*,`[*`-*`-*X*"))))
(setq fnm (getfiled "选择文件" fnm "lis" 1))) (progn
(setq fp (open fnm "w"))
(setq i -1)
(repeat (sslength ss)
(setq txt (cdr(assoc 1 (entget(ssname ss (setq i (1+ i)))))))
(setq j 1 tmp "" nlst (list))
(while (wcmatch (substr txt j 1) "~") (setq j (1+ j)))
(while (<= j (strlen txt))
(if (wcmatch (setq a (substr txt j 1)) "")
(setq tmp (strcat tmp a))
(setq nlst (cons (atof tmp) nlst) tmp "")
)
(setq j (1+ j))
)
(if (> (strlen tmp) 1) (setq nlst (cons (atof tmp) nlst)))
(setq nlst (reverse nlst))
(princ "PROFILE DATABASE EXPORT VERSION = 3\n" fp)
(princ "PROFILE_NAME = " fp)
(prin1 txt fp)
(princ ";\n{\n TYPE = " fp)
(if (= (substr txt 1 1) "[") (progn
(princ "999; SUB_TYPE = \"CCCC\"; SUB_TYPE = 999168; COORDINATE = 0.000;\n {\n" fp)
(princ "\n \"T1\" " fp)
(princ (rtos (caddr nlst) 1 9) fp)
(princ "\n \"T2\" " fp)
(princ (rtos (cadr nlst) 1 9) fp)
(princ "\n \"B1\" " fp)
(princ (rtos (last nlst) 1 9) fp)
(princ "\n \"H\" " fp)
(princ (rtos (car nlst) 1 9) fp)
) (progn
(princ "11; SUB_TYPE = 11001; COORDINATE = 0.000;\n {\n" fp)
(princ " \"HEIGHT\" " fp)
(princ (rtos (car nlst) 1 9) fp);5.000000000E+002 (高)对应的500
(princ "\n \"WEB_THICKNESS\" " fp)
(princ (rtos (caddr nlst) 1 9) fp);1.000000000E+001 (腹板厚度)对应的10
(princ "\n \"FLANGE_THICKNESS\" " fp)
(princ (rtos (cadddr nlst) 1 9) fp);1.600000000E+001 (翼缘厚度)对应的16
(princ "\n \"WIDTH\" " fp)
(princ (rtos (cadr nlst) 1 9) fp);3.500000000E+002 (翼缘宽度)对应的350
(princ "\n \"CANTILEVER\" " fp)
(princ (rtos (/ (- (cadr nlst) (last nlst)) 2.0) 1 9) fp);3.500000000E+001 ((宽度-280)/2) 对应的是 (350-280)/2
(princ "\n \"ROUNDING_RADIUS\" 1.500000000E+001" fp); (固定)
))
;*****
(princ "\n \"CROSS_SECTION_AREA\" 0.000000000E+000" fp)
(princ "\n \"COVER_AREA\" 0.000000000E+000" fp)
(princ "\n \"WEIGHT_PER_UNIT_LENGTH\" 0.000000000E+000" fp)
(princ "\n \"MOMENT_OF_INERTIA_X\" 0.000000000E+000" fp)
(princ "\n \"MOMENT_OF_INERTIA_Y\" 0.000000000E+000" fp)
(princ "\n \"SECTION_MODULUS_X\" 0.000000000E+000" fp)
(princ "\n \"SECTION_MODULUS_Y\" 0.000000000E+000" fp)
(princ "\n \"RADIUS_OF_GYRATION_X\" 0.000000000E+000" fp)
(princ "\n \"RADIUS_OF_GYRATION_Y\" 0.000000000E+000" fp)
(princ "\n \"NEUTRAL_AXIS_LOCATION_ELASTIC_X\" 0.000000000E+000" fp)
(princ "\n \"NEUTRAL_AXIS_LOCATION_ELASTIC_Y\" 0.000000000E+000" fp)
(princ "\n \"NEUTRAL_AXIS_LOCATION_PLASTIC_X\" 0.000000000E+000" fp)
(princ "\n \"NEUTRAL_AXIS_LOCATION_PLASTIC_Y\" 0.000000000E+000" fp)
(princ "\n \"PLASTIC_MODULUS_X\" 0.000000000E+000" fp)
(princ "\n \"PLASTIC_MODULUS_Y\" 0.000000000E+000" fp)
(princ "\n \"TANGENT_OF_PRINCIPAL_AXIS_ANGLE\" 0.000000000E+000" fp)
(princ "\n \"SHEAR_CENTER_LOCATION\" 0.000000000E+000" fp)
(princ "\n \"TORSIONAL_CONSTANT\" 0.000000000E+000" fp)
(princ "\n \"WARPING_CONSTANT\" 0.000000000E+000" fp)
(princ "\n \"NORMALIZED_WARPING_CONSTANT\" 0.000000000E+000" fp)
(princ "\n \"WARPING_STATICAL_MOMENT\" 0.000000000E+000" fp)
(princ "\n \"STATICAL_MOMENT_Qf\" 0.000000000E+000" fp)
(princ "\n \"STATICAL_MOMENT_Qw\" 0.000000000E+000" fp)
(princ "\n \"SQRT_OF_E_x_Cw_PER_G_x_J\" 0.000000000E+000" fp)
(princ "\n \"POLAR_RADIUS_OF_GYRATION\" 0.000000000E+000" fp)
(princ "\n }\n}\n" fp)
)
(close fp)
(startapp "notepad" fnm)
))
(princ)
)
ZZXXQQ 发表于 2013-7-13 22:45 static/image/common/back.gif
大哥 为什么运行就退出了呢? 能帮我把后面那个例子也加上吗? 修正了错误。再试试 本帖最后由 86023383 于 2013-7-14 11:15 编辑
ZZXXQQ 发表于 2013-7-14 08:30 static/image/common/back.gif
修正了错误。再试试
大哥 这下输出可以了 但是 这行 (princ (rtos (/ (- (cadr nlst) (last nlst)) 2) 5 9) fp); 这行输出的不是 “((宽度-280)/2) 对应的是 (350-280)/2” 有点问题。其它都是对的 还有就是 读取多个文本的时候只能输出一个 这回改好了,去沙发下载吧。 双改了。再试试 谢谢版主大哥 耐心 细心调试无数次。千言万语 只能说谢谢 和敬佩!!!!!
页:
[1]