86023383 发表于 2013-7-13 22:00:14

求高手帮忙写个代码(高手在民间)

本帖最后由 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-13 22:00:15

本帖最后由 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)
)

86023383 发表于 2013-7-13 22:54:45

ZZXXQQ 发表于 2013-7-13 22:45 static/image/common/back.gif


大哥 为什么运行就退出了呢? 能帮我把后面那个例子也加上吗?

ZZXXQQ 发表于 2013-7-14 08:30:12

修正了错误。再试试

86023383 发表于 2013-7-14 10:34:55

本帖最后由 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” 有点问题。其它都是对的    还有就是 读取多个文本的时候只能输出一个

ZZXXQQ 发表于 2013-7-14 22:27:20

这回改好了,去沙发下载吧。

ZZXXQQ 发表于 2013-7-14 23:55:21

双改了。再试试

86023383 发表于 2013-7-15 00:19:39

谢谢版主大哥 耐心 细心调试无数次。千言万语 只能说谢谢 和敬佩!!!!!
页: [1]
查看完整版本: 求高手帮忙写个代码(高手在民间)