将日志打印到excel lisp
是否有人拥有或知道一个lisp,它将记录我创建的每个绘图,并将其记录在特定的excel电子表格中,以便我可以向客户计费?非常感谢。 我猜这可以通过反应堆来实现(显然是对“绘图”命令的反应),但您希望在excel工作表中存储何种数据?单是文件名?还是更多?
谢谢
李
文件名称主要是日期和地块大小。
谢谢你的回复李
到目前为止,我已经有了这个反应堆,问题是自从我们升级到新版本的office后,它就停止了工作。我收到一条错误消息说,
找不到excel类型库?
我的反应堆如下,
(vlr指令反应堆
无
“(:vlr命令willstart.CollectPlotInfo))
)
(vlr指令反应堆
无
“(:vlr commandend.ResetPlotInfo))
)
;;;(vlr全部删除)
;**************************************************************************************************************************
(defun CollectPlotInfo(调用reactor endcommandInfo
/nlist)
(设置命令(第n个0端命令信息))
(如果(=命令“绘图”)
(程序
(setq Reset nil)
(setq n 0)
(重复20
(setq n(1+n))
(setq nstring(rtos n 2 0))
(setq nlist(cons nstring nlist))
)
(setq nlist(反向nlist))
(setq ActiveDoc(vla get activedocument(vlax get acad object)))
(setq ActiveLayout(vla get ActiveLayout ActiveDoc))
(setq Configname(vla get Configname activelayout))
(setq CurrPrinter(vla get ConfigName activelayout))
(如果
(wcmatch CurrPrinter“*平面打印机*”)
(警报
“当前布局默认打印到PLAN-PRINTER。\n PLAN-PRINTER仅用于彩色打印。\n如果此打印为黑白打印,请将打印设备更改为OCE绘图仪。pc3”
)
)
(setq Printerlist(vlax safearray->list(vlax variant value(vla getplotdevicenames activelayout)))
(if(成员ConfigName PrinterList)
(setq Reset T)
)
(setq MediaSize(vla get CanonicalMediaName activelayout))
(setq CentrePlot(vla get Centerplot activelayout))
(setq Plothidden(vla get Plothidden activelayout))
(setq PlotOrigin(vla get PlotOrigin activelayout))
(setq PaperUnits(vla get PaperUnits activelayout))
(setq PlotRotation(vla get PlotRotation activelayout))
(setq PlotType(vla get PlotType activelayout))
(if(=绘图类型4)(vla getwindowtoplot activelayout“bl”tr))
(setq PlotViewportBorders(vla get PlotViewportBorders activelayout))
(setq PlotWithLineweights(vla get PlotWithLineweights Active Layout))
(setq PlotWithPlotStyles(vla get PlotWithPlotStyles ACTIVELLAYOUT))
(setq ScaleLineWeights(vla get ScaleLineWeights activelayout))
(setq PlotViewportBorders(vla get StandardScale activelayout))
(setq StandardScale(vla get StandardScale activelayout))
(setq样式表(vla get StyleSheet activelayout))
(setq UseStandardScale(vla get UseStandardScale activelayout))
(if(=UseStandardScale:vlax false)(setq CustomScale(vla getcustomscale activelayout“num”denom)))
(SaveChangeToLayout 1)
(setq dcl\U id(加载对话框“NumberOfPlots.dcl”))
(如果(不是)(新建对话框“NumberOfPlots”dcl\U id)
)
(退出)
)
(start_list“NumberOfPlots”)
(mapcar的添加列表)
(end_列表)
(action_tile)
“接受”
“(setq编号(get_tile \“NumberOfPlots\”)
(完成对话框)”
)
(action_tile)
“取消”
“(done_对话框)”
)
(start_对话框)
(unload\u对话框dcl\u id)
)
)
(普林斯)
)
(defun ResetPlotInfo(调用反应堆
endcommandInfo/thecommandend命令
文件打开行
DwgPath驱动器号余数
路径列表listpos listend
jobnumber logfilepath文件存在
收件人列表主题
身体
);绘图日志列表
(设置命令(第n个0端命令信息))
(如果(=命令“绘图”)
(程序
(setq acadplot(vla get plot activedoc))
(setq NumberofPlots(atoi编号))
(如果(
(程序
(vla put NUMBEROFCOPYES acadplot NumberofPlots)
(vla PlotToDevice(vla get plot activedoc))
(vla put NUMBEROFCOPYES acadplot 1)
)
)
;;;;原始打印日志文件
(setq LogFileName“L:\\PLOT LOGS\\PLOT LOG.LOG”)
(setq FileOpen(open LogFileName“r”))
(setq行(读取行文件打开))
(while行
(setq行(读取行文件打开))
(setq PlotLogList(cons(列表行)PlotLogList))
)
(setq PlotLogList1(vl remove(car PlotLogList)PlotLogList))
(setq PlotLogList(car PlotLogList1))
(关闭文件打开)
;;; (foreach PlotLog PlotLogList
;;;(setq DwgPath(car PlotLog))
(setq DwgPath(car PlotLogList))
(setq DRIVELETER(substr DwgPath 1 5))
(如果
(=(strcase DriveLetter)“G:\\P\”)
(程序
(setq余数(substr DwgPath 6))
(setq路径列表(vl字符串->列表余数))
(setq listpos 0)
(虽然
(/=92(第n个listpos路径列表))
(setq listpos(1+listpos))
)
(setq listend(1+listpos))
(setq listpos(+2 listpos))
(虽然
(/=92(第n个列表路径列表))
(setq listend(1+listend))
)
(setq listend(+listend 1))
(setq)
JobNumber(substr remains listpos(-listend listpos))
)
(setq LogFilePath
(strcat“L:\\绘图日志\\”JobNumber.log)
)
)
(setq LogFilePath“L:\\PLOT LOGS\\TRASH.log”)
)
(setq文件存在(findfile LogFilePath))
(如果(不存在文件)
(程序
(setq FileOpen(打开LogFilePath“a”))
(写入行
绘图编号,打印布局,日期和时间,打印人,打印目的,介质大小,打印比例
文件打开
)
(重复(+1 NumberofPlots)(写入行DwgPath FileOpen))
;;;(写入行DwgPath FileOpen)
(关闭文件打开)
(setq recipients_list(list“M。Link@TribalPS.co.uk"))
(setq主题“新建绘图日志文件夹”)
(setq主体
(strcat)
“以下作业编号需要创建excel打印日志文件”
工作编号
)
)
(创建电子邮件
收件人列表主题正文附件列表1)
)
(程序
(setq FileOpen(打开LogFilePath“a”))
(重复(+1 NumberofPlots)(写入行DwgPath FileOpen))
;;;(写入行DwgPath FileOpen)
(关闭文件打开)
)
)
(vl文件删除日志文件名)
(setq FileOpen(open LogFileName“a”))
(写入行
绘图编号,打印布局,日期和时间,打印人,打印目的,介质大小,打印比例
文件打开
)
(关闭文件打开)
;;; )
;;;;原始打印日志文件
(如果重置
(程序
(vla put Configname activelayout Configname)
(vla put CanonicalMediaName activelayout MediaSize)
(vla put Centerplot ACTIVELLAYOUT Centerplot)
(vla put Plothidden activelayout Plothidden)
;;; (vla get PlotOrigin activelayout PlotOrigin)
(vla put PaperUnits ACTIVELLAYOUT PaperUnits)
(vla put PlotRotation ACTIVELLAYOUT PlotRotation)
(vla put PlotType activelayout PlotType)
(vla put PlotViewportBorders ACTIVELLAYOUT PlotViewportBorders)
(vla put PLOTWITH LINEWIGhts ACTIVE LAYOUT PLOTWITH LINEWIGhts)
(vla put PlotWithPlotStyles ACTIVELLAYOUT PlotWithPlotStyles)
(vla put SCALELINEWIGhts ACTIVELLAYOUT SCALELINEWIGhts)
(vla put PlotViewportBorders ACTIVELLAYOUT PlotViewportBorders)
(vla put STANDARSCALE ACTIVELLAYOUT STANDARSCALE)
(vla put样式表activelayout样式表)
(vla put UseStandardScale活动布局UseStandardScale)
(vla sendcommand ActiveDoc“regen”)
;;;(vla sendcommand ActiveDoc(strcat“zoom”“p”))
)
)
)
)
(普林斯)
)
; 杰森·皮尔西
; -任何值
; 如果提供了非零值,则更改为
; 保存,否则不会保存更改。
; (SaveChangeToLayout无)
; 返回:T
(defun SaveChangeToLayout(arg)
(和
(vl注册表写入
(strcat“HKEY\U CURRENT\U USER\”(vlax产品密钥)
“\\Profiles\”(getvar“cprofile”)
“\\对话框\\绘图”)
“SaveChangeToLayout”
(如果arg“true”“false”)
)
)
)
页:
[1]