乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 50|回复: 8

[编程交流] 问题

[复制链接]

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:01:21 | 显示全部楼层 |阅读模式
我只是在看firsrate_caduser(例行Lisp)的线程,我也喜欢在excel中提取属性信息并粘贴的想法。因为我使用excel作为数据库,记录我们的图纸编号和编号的来源。我想知道:
 
我喜欢贴在线程中的attexp2xl lisp。这并不完全是我所需要的。执行命令时,它只打开一个新的excel文件并将其粘贴到顶部单元格中。由于我有一个为一家公司指定的文件,我想打开该excel文件执行命令,并将其粘贴到下一个可用的单元格。
 
对不起,如果我没有做。我希望我能自己写lisp,但我没有那么先进。也许有一天。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:13:18 | 显示全部楼层
是的,我想可以修改一下以满足你的需要
 
*看看我能做什么*
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:23:37 | 显示全部楼层
这将适用于CSV文件。。。(Excel文件的另一种格式)-它是另一个线程中代码的较短版本。
 
试一试,看看你的想法。
 
  1. (if (and (setq file (getfiled "Select Excel File" "C:\" "csv" 9)
  2.         ss (ssget "X" (list (cons 0 "INSERT") (cons 66 1)
  3.    (if (getvar "CTAB") (cons 410 (getvar "CTAB"))
  4.           (cons 67 (- 1 (getvar "TILEMODE"))))))))
  5.    (progn
  6.      (setq file (open file "a") ss (mapcar 'entnext (mapcar 'cadr (ssnamex ss))))
  7.      (foreach e ss
  8.    (while (not (eq "SEQEND" (cdadr (entget e))))
  9.      (setq att (strcat (cdr (assoc 2 (entget e))) (chr 44) (cdr (assoc 1 (entget e))))
  10.        attLst (cons att attLst) e (entnext e))))
  11.      (alert (vl-princ-to-string attLst))
  12.      (mapcar '(lambda (x) (write-line x file)) attLst)
  13.      (close file))
  14.    (princ "\n<!> No File Selected or No Attributed Blocks Found <!>"))
  15. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:24:12 | 显示全部楼层
我想如果推到了紧要关头,你可以将文件保存为csv文件,然后运行LISP,然后将其保存为xls文件。。。唯一的缺点是csv不支持多张工作表。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:38:09 | 显示全部楼层
对不起,你看到这个问题了吗
 
只是一个想法
 
~'J'~
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:45:10 | 显示全部楼层
谢谢你的提醒,但是是的,我确实看到了。
 
在LISP中,我打开文件进行“附加”,然后将信息插入到下一个可用的单元格中。
 
但我使用逗号将标记与属性字符串分开,这只适用于csv文件。
 
如何将信息写入xls文件的相邻单元格?
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:48:41 | 显示全部楼层
也许是这样的
我是从我的旧代码中重写的
所以我不能广泛测试
如果可以的话,请拼写所有提示
代码内部
 
[code];;通过测试表达式(defun subtrack(test lst)(应用“append(mapcar)”(lambda(x)(if(eq(car x)test)(list x)))lst))对子列表中的元素进行分组;;统计列表中的等效项(defun countsub(lst sub)(cond((null lst)0)((and(equal(caar lst)(car sub)0.00001)(equal(cadar lst)(cadr sub)0.00001))(1+(countsub(cdr lst)sub))(T(countsub(cdr lst)sub)));;从块中获取信息,包括以下形式的常量属性:;;((“TAG1”.“VALUE1”)(“TAG2”.“VALUE2”)。。。(“*常数*:TAGN”。“VALUEN”)(defun get all atts(obj/atts att\u list const\u atts const\u list ent)(and(if(and obj(vlax-property-available-p obj'Hasattributes)(eq:vlax true(vla get Hasattributes obj))(progn(setq atts(vlax invoke obj'Getattributes))(foreach att atts(setq att\u list)(cons(cons(vla get tagstring att)(vla get textstring att)))att_list))))(cond((vlax-method-applicable-p obj'Getconstantattributes)(setq const_atts(vlax invoke obj'Getconstantattributes))(foreach att const_atts(setq const_list(cons(vla get tagstring att)(vla get textstring att))const_list))(setq att_list(反向(append const_list att_list)))(T(反向att_列表))(vl load com);;主要部分;;(defun C:ATOUT(/adoc aexc awb axss cll colm com\u data csht data exc\u data fcol fcopy fn fname info itm lastcell lastrow nwb row sht ss str1 str2 sublot tmp\u data tmp\u get tmp\u snip tot)(警报“耐心点…\n工作缓慢…”)(setq adoc(vla get activedocument(vlax get acad object))(vl cmdf“zoom”“a”)(vl cmdf“zoom”“.9x”);;选择的一些变体;;具有属性的所有块:(setq ss(ssget“_X”(list(cons 0“INSERT”)(cons 66 1));;块在屏幕上选择属性的块:;;;(setq ss(ssget(列表(cons 0“插入”)(cons 66 1)));;按块名称选择属性的所有块:;;;(setq bname(getstring“\n***块名:\ n”);;;(setq ss(ssget“_X”(list(cons 0“INSERT”)(cons 66 1)(cons 2 bname)))(setq axss(vla get activeselectionset adoc))(setq com\u data nil);仅用于调试(用于axss的vlax(setq tmp\u get(get all atts a))(setq tmp\u data(append(list(vla get name a)(vla get handle a))tmp\u get))(setq com\u data(cons tmp\u data com\u data))(setq tmp\u data nil))(setq tot(length com\u data))(setq exc\u data nil);仅用于调试(而com_数据(setq tmp_snip(子轨(caar com_数据)com_数据))(setq str1(strcat“小计块”“\”“(caar com_数据)”\”“:“”)str2(itoa(长度tmp_snip)))(setq exc_数据(附加exc_数据(列表(附加tmp_snip(列表str2 str1))))com_数据(vl remove if(函数not)(mapcar(function(lambda(x)(if(not(member x tmp\u snip))x))com\u data)tmp\u snip nil)(setq exc\u data(mapcar(function(lambda(x)(mapcar(function(lambda(y)(append(list(cadr y)(car y))(cddr y)))x)))exc_数据);;Eof计数部分;;***Excel部分***;;;Excel部分基于ALEJANDRO LEGUIZAMON编写的代码;;;http://arquingen.tripod.com.co(setq fname(getfield“选择您的工作Excel电子表格文件:”“XLS”)(setq fname(findfile fname));;如果不需要,请删除以下代码块;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;;在运行程序之前保留Excel文件副本:(setq fcopy(strcat(getvar“dwgprefix”)(vl filename base fname)“-copy-”(menucmd“M=$(edtime,$(getvar,date),HH-MM)“.xls”)(vl catch all apply(function(lambda()(vl file copy fname fcopy))))(警报(strcat“Excel file copy另存为:\n“\”fcopy“\”);;
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:54:41 | 显示全部楼层
谢谢你,做得很好。希望我能阅读lisp,了解更多关于编写它们的知识。
 
再次感谢李,你曾经帮助过我,再次感谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:07:59 | 显示全部楼层
没问题,Bradb,我想我也可以从Fixo的代码中学到很多东西
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 21:31 , Processed in 0.460913 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表