ktbjx 发表于 2022-7-5 15:31:56

每行新图层

场景i将绘制一条线,该线将位于新层上,并带有其计数
 
有没有可能制作一个lisp,我可以使用它制作一个层,并将其计为层名称???
所以我做的每一行都有不同的层数?有没有可能我可以设置从哪个数字开始?
 
我试着做。。。我想我做的每一行都有新的一层,但我想再进一步。
如果我想在一层上画多行呢?在不丢失行计数的情况下,它将生成的下一层应该是下一个计数。类似DWG文件的内容。。。
 
有人能帮我做吗?
 
以下是我目前获得的代码:

(defun c:TestLINE (/ numero contstring)
   (if (and (setq numero (getint "\nEnter HoleID: "))
   )               
   
(while T
   (if (not
         (tblsearch
             "LAYER"
         (setq contstring (strcat "" (itoa numero)))
   )
         )
   
       (command "_layer" "m" contstring "" "_.line" pause pause "")
   
   )
   (setq numero (+ numero 1))
   )

)
   (princ)
)

 
如果你看看这幅画,你就会明白我说的线数是什么意思。。。。
样本Cad合成。图纸

ktbjx 发表于 2022-7-5 15:36:33

我想我有点明白了???
我知道这很难看,但至少我试过。。。。
(defun testes ()
; (if (and (setq numero (getint "\nEnter HoleID: "))
;   )               
   
(while T
   (if (not
         (tblsearch
             "LAYER"
         (setq contstring (strcat "" (itoa numero)))
   )
         )
   
       (command "_layer" "m" contstring "" "_.line" pause pause "")
   
   )
   (setq numero (+ numero 1))
   )

; )
   (princ)
)


(defun c:testestes (/ numero chcut cntr contstring)
   (setq numero (getint "\nEnter HoleID: "))
   (while T
       (setq chcut (getint "\nEnter # of CHCUTS: "))
       (setq cntr 1)
      (if (= chcut 1)
      (testes)
      )
    (if (not
         (tblsearch
             "LAYER"
                     (setq contstring (strcat "" (itoa numero)))
                     )
         )
       (command "_layer" "m" contstring "")

   )
   
      (while (<= cntr chcut)
         (command "_.line" pause pause "")
            (setq cntr (+ cntr 1))
   (setq numero (+ numero 1))
   )
)

   (princ)
)
 
我相信我的尝试也会带来一些好处。

; create pline by picking points press enter when finished
(command "_pline")
(while (= (getvar "cmdactive") 1 ) (command pause)
)

BIGAL 发表于 2022-7-5 15:40:14

致相关人士。
 
睾丸
 
睾丸的功能是产生精子和雄激素,主要是睾酮。
 
更好的函数名之一。

ReMark 发表于 2022-7-5 15:42:56

信息性!:大声笑:

Tharwat 发表于 2022-7-5 15:46:30

我完全不明白OP在说什么:
就像绘制对象一样,图层会随着其计数而变化-
但是,如果手动更改当前层,会发生什么?
如果手动更改某些对象的图层,会发生什么情况?
 
以下是我玩过的游戏:

(defun laychk (lay/ )
(if (not (tblsearch"LAYER" (itoa lay)))
(command "_layer" "m" (itoa lay) "")
)
)
(defun c:testes ()
(if (/= numero nil)
(setvar 'clayer (itoa numero))
(progn
(setq numero (getint "Enter a number"))
(laychk numero)
)
)
(setq continue "Y")         
(while (=continue "Y")
(command "_pline")
(while (= (getvar "cmdactive") 1 ) (command pause)
)
(setq numero (+ numero 1))
(laychk numero)
(if (= (setq continue (Getstring "Press <Cr> to continue any key to exit")) "")
(setq continue "Y")(setq continue "N"))
)
(princ)
)
(c:testes)

 
 
因此,上面只创建了一个层,并不断更改其名称。
虽然我的代码不是完全防错的。

Grrr 发表于 2022-7-5 15:51:35

 
很抱歉,这本应该是测试,但我输入了一个错误,我很懒,所以我只是用它,并使用它。
 
这个想法是,我画一条线,层名称将是我一直在画的线的计数。
因此,如果我开始画一条线,这是计数1(这是我的layername 1),然后我继续画另一条线,这是计数2(这是layername 2),依此类推。。。
在每一层上画一条线很容易,正如你们在我丑陋的代码中看到的,我刚刚创建了一个层,我画了一条线,然后它循环。
 
我关心的是,在一个图层上,我想画两条或更多的线!但是仍然要跟踪计数,这样当我制作另一层时,它将是我计数的最后一个数字。
 
假设我在第五层,我会画两条线
我的下一个layername应该是7岁。
让我们继续,这次我在第7层,我将画4条线,
我的下一层应该是第10层。。。

ktbjx 发表于 2022-7-5 15:54:49

 
彼此彼此。当用户继续创建线/对象时,它是否会创建无限多的层?
 
编辑:oops没有从OP那里看到帖子

pBe 发表于 2022-7-5 15:55:29

这是一个什么样的常规?通过根据绘制到该点的线的总数命名图层,您实际上想要实现什么?

ReMark 发表于 2022-7-5 16:01:08

 
这样我就可以用所有的xyz坐标加上LAYERNAME来提取它们
因为它有数字,所以我在下一步更容易操作数据。
此外,因为它有计数。我将不再跟踪它,专注于其他数据,从而帮助我更快地工作

ktbjx 发表于 2022-7-5 16:03:13

我认为数据提取是基于实体创建的顺序。所以,对我来说,这种Lisp程序的需要是重言式的。
页: [1] 2
查看完整版本: 每行新图层