prodromosm 发表于 2022-7-5 23:14:27

指定线型的路径

您好,我想从topo加载线型。lin文件。这是我的密码。
 

(DEFUN
C:fen (/ A1 KLIM PER S1 S2 SCL)
(COMMAND "_layer" "_m" "fen" "_c" "140" "" "_LT" "" "C:\\topocad\\topo.lin\\fen" "")
(SETQ SCL (GETVAR "useri1"))
(SETQ KLIM (* 0.005 SCL))
(SETQ PER "Fen")
(COMMAND "_linetype" "_s" "C:\\topocad\\topo.lin\\fen" "")
(PRINT "")
(SETQ S1 (GETPOINT "give the first point :"))
(PRINT "")
(WHILE (SETQ S2 (GETPOINT S1 " give the second point:"))
   (PRINT "")
   (COMMAND "_line" "non" S1 "non" S2 "")
   (COMMAND "_CHPROP" (ENTLAST) "" "_S" KLIM "")
   (SETQ S1 S2)
)
)

 
当我运行代码时,会得到以下结果
 
 
你能帮忙吗?
谢谢

MSasu 发表于 2022-7-5 23:19:42

我认为您没有指定要加载的线型:
(COMMAND "_linetype" "_L" "NameOfYourLIneType" "C:\\topocad\\topo.lin\\fen.lin" "")
要使其成为电流,可能还需要检查CELTYPE系统变量。

prodromosm 发表于 2022-7-5 23:28:08

lin文件是topo。林你为什么写芬。林?

marko_ribar 发表于 2022-7-5 23:29:44

试试这个:
 

(DEFUN C:fen ( / A1 KLIM S1 S2 SCL )
(COMMAND "_.-linetype" "_L" "fen" "C:\\topocad\\topo.lin")
(COMMAND "_.-layer" "_m" "fen" "_c" "140" "" "_LT" "fen" "" "")
(SETQ SCL (GETVAR "useri1"))
(SETQ KLIM (* 0.005 SCL))
(PRINT "")
(SETQ S1 (GETPOINT "give the first point :"))
(PRINT "")
(WHILE (SETQ S2 (GETPOINT S1 " give the second point:"))
   (PRINT "")
   (COMMAND "_.line" "non" S1 "non" S2 "")
   (COMMAND "_.change" (entlast) "" "_P" "_LT" "fen" "_S" KLIM "")
   (SETQ S1 S2)
)
(PRINC)
)

prodromosm 发表于 2022-7-5 23:37:42

marko_ribar现在给了我这个
 

hmsilva 发表于 2022-7-5 23:41:02

也许是这样。

(DEFUN C:fen (/ A1 KLIM OLD_CLT PER S1 S2 SCL)
(setq old_clt (getvar 'CELTYPE))
(if (and (not (tblsearch "ltype" "fen"))
   (findfile "C:\\topocad\\topo.lin")
   )
   (command "-linetype" "l" "fen" "C:\\topocad\\topo.lin" "")
)
(if (tblsearch "ltype" "fen")
   (progn
   (COMMAND "_layer" "_m" "fen" "_c" "140" "fen" "_lt" "fen" "fen" "")
   (SETQ SCL (GETVAR "useri1"))
   (SETQ KLIM (* 0.005 SCL))
   ;; (SETQ PER "Fen") ?????
   (COMMAND "_linetype" "_s" "fen" "")
   ;;(PRINT "")
   (SETQ S1 (GETPOINT "\nSpecify the first point :"))
   ;;(PRINT "")
   (WHILE (SETQ S2 (GETPOINT S1 "\nSpecify the second point:"))
;;(PRINT "")
(COMMAND "_line" "non" S1 "non" S2 "")
(COMMAND "_CHPROP" (ENTLAST) "" "_S" KLIM "")
(SETQ S1 S2)
   )
   (setvar 'CELTYPE old_clt)
   )
)
(princ)
)
 
HTH公司
亨里克

prodromosm 发表于 2022-7-5 23:46:02

嗯,席尔瓦,这是工作,谢谢

hmsilva 发表于 2022-7-5 23:50:55

 
不客气prodromosm
很高兴我能帮忙
 
亨里克

prodromosm 发表于 2022-7-5 23:56:23

任何人都可以在lisp的末尾添加选项吗
 
是否要将该直线转换为多段线
 

(DEFUN C:fen (/ A1 KLIM OLD_CLT PER S1 S2 SCL)
(setq old_clt (getvar 'CELTYPE))
(if (and (not (tblsearch "ltype" "fen"))
   (findfile "C:\\topocad\\topo.lin")
   )
   (command "-linetype" "l" "fen" "C:\\topocad\\topo.lin" "")
)
(if (tblsearch "ltype" "fen")
   (progn
   (COMMAND "_layer" "_m" "fen" "_c" "140" "fen" "_lt" "fen" "fen" "")
   (SETQ SCL (GETVAR "useri1"))
   (SETQ KLIM (* 0.005 SCL))
   ;; (SETQ PER "Fen") ?????
   (COMMAND "_linetype" "_s" "fen" "")
   ;;(PRINT "")
   (SETQ S1 (GETPOINT "\nSpecify the first point :"))
   ;;(PRINT "")
   (WHILE (SETQ S2 (GETPOINT S1 "\nSpecify the second point:"))
;;(PRINT "")
(COMMAND "_line" "non" S1 "non" S2 "")
(COMMAND "_CHPROP" (ENTLAST) "" "_S" KLIM "")
(SETQ S1 S2)
   )
   (setvar 'CELTYPE old_clt)
   )
)
(princ)
)
 
(initget "Yes No")
(setq convert (cond ( (getkword "\nConvert to polylines? <Y>: ") ) ( "Yes" )))
         (if ( "Yes" convert)
             (command "_.pedit" "_M"   "" "_J" "" ""))
         )
 
我不知道如何连接它们
谢谢

MSasu 发表于 2022-7-6 00:03:50

既然例程只绘制一条线段,为什么不直接将其创建为多段线?
(COMMAND "_Pline" "non" S1 "non" S2 "")
页: [1] 2
查看完整版本: 指定线型的路径