Tharwat 发表于 2022-7-6 00:00:49

 
当您添加一个字符串而不是表示颜色数的数字时,您没有理解代码,您可能知道数字应该是0到256,因此我的代码在尝试创建所需的层名称之前进行检查,以确保参数正确,然后将其提供给entmake函数。
 
 
当然
 
 
如果你的价值评估,你不应该使用报价,否则将不会被评估。
 
最后,让我的代码运行,这里是一个示例。
 
(layermake 1 "Mechanical") ; This should create a layer named Mechanical with color 1 which represent red .

Tharwat 发表于 2022-7-6 00:02:34

我猜你在寻找这样的东西。
 

(defun LayerMake (clr name / e o)
(if (and (< -1 clr 257)
          (snvalid name)
   )
   (progn
   (setq e (list '(0 . "LAYER")
                   '(100 . "AcDbSymbolTableRecord")
                   '(100 . "AcDbLayerTableRecord")
                   '(70 . 0)
                   (cons 2 name)
                   (cons 62 clr)
             )
   )
   (if (setq o (tblobjname "LAYER" name))
       (entmod (cons (cons -1 o) e))
       (entmake e)
   )
   )
)
)

Snownut 发表于 2022-7-6 00:04:30

塔尔瓦特,
 
使用两者的目的是什么;
“(非(tblsearch“LAYER”name))”
“(SN有效名称)”
 
在一个和一个陈述中,似乎他们都做了相同的事情。
 
布鲁斯

Tharwat 发表于 2022-7-6 00:10:37

 
你好,布鲁斯,
 
这两个语句不同,第一行是检查图形中是否存在图层名称,第二行不应接受任何无效的图层名称,如此处的帮助文档所示

Snownut 发表于 2022-7-6 00:11:21

我的错误是,我没有意识到“snvalid”检查有效的命名字符。如果该函数允许用户输入层名称,这将是一个重要的检查。
 
布鲁斯

Tharwat 发表于 2022-7-6 00:15:44

 
对的

samifox 发表于 2022-7-6 00:17:47

塔尔瓦特,
实际上,我在寻找一种更新符号表条目的方法,
就像entmod对实体所做的那样

Tharwat 发表于 2022-7-6 00:22:56

 
我无法得到你想要的。

samifox 发表于 2022-7-6 00:25:01

很抱歉
有了实体,你可以得到实体定义列表,然后使用entmod更新数据库。据我所知,使用符号表时,如果条目存在,则无法写入数据库。因此,我问如何向符号表写入现有表实体的新定义

Tharwat 发表于 2022-7-6 00:29:30

 
在这个帖子里,你已经改变主意很多次了,那么不管怎样,你在说什么桌子?图层表?你们想把什么定义写到表中?
如果你不清楚地描述你想做什么,我想这个论坛的任何用户都很难帮到你。
页: 1 [2]
查看完整版本: 向数据库添加数据?