带有超链接提示的新变体,并将数据保存到*。csv文件。DWRITE-将数据添加到多段线,DCOLLECT-读取到*。csv文件(用MS Excel打开)。
- (defun c:dwrite(/ plObj stBl enBl datLst cAns hyObj)
- (if
- (and
- (setq plObj(entsel "\nSelect polyline to write > "))
- (setq stBl(entsel "\nSelect 'Begin' block > "))
- (setq enBl(entsel "\nSelect 'End' block > "))
- ); end and
- (progn
- (setq plObj(vlax-ename->vla-object(car plObj))
- stBl(cdr(assoc 2(entget(car stBl))))
- enBl(cdr(assoc 2(entget(car enBl))))
- datLst(list(cons 1 stBl)(cons 2 enBl))
- hyObj(vla-get-Hyperlinks plObj)
- ); end setq
- (if(vlax-ldata-get plObj "Pipe Data")
- (progn
- (initget "Yes No")
- (setq cAns(getkword "\nPipe data already exists. Overwrite? [Yes/No]: "))
- (if(= "Yes" cAns)
- (progn
- (vlax-ldata-delete plObj "Pipe Data")
- (vlax-ldata-put plObj "Pipe Data" datLst)
- (vla-Delete(vla-Item hyObj 0))
- (vla-Add hyObj "Has Pipe Data" (strcat "Pipe: " stBl " --> " enBl))
- (princ "\nData successfuly added ")
- );end progn
- ); end if
- ); end progn
- (progn
- (vlax-ldata-put plObj "Pipe Data" datLst)
- (vla-Add hyObj "Has Pipe Data" (strcat "Pipe: " stBl " --> " enBl))
- (princ "\nData successfuly added ")
- ); end progn
- ); end if
- ); end progn
- );end if
- (princ)
- ); c:dwrite
- (defun c:dcollect(/ plSet oLst cDat fName cAns exApp wbCol cDoc)
- (if(setq plSet(ssget "_X" '((0 . "LWPOLYLINE"))))
- (progn
- (foreach pl (mapcar 'vlax-ename->vla-object
- (vl-remove-if 'listp
- (mapcar 'cadr(ssnamex plSet))))
- (if(setq cDat(vlax-ldata-get pl "Pipe Data"))
- (progn
- (setq oLst(cons
- (list
- (vla-get-ConstantWidth pl)
- (vla-get-Layer pl)
- (cdr(assoc 1 cDat))
- (cdr(assoc 2 cDat))
- ); end list
- oLst); end cons
- ); end setq
- ); end progn
- ); end if
- ); end foreach
- (if oLst
- (progn
- (setq fDescr(open
- (setq fName(strcat(vl-filename-directory(getvar "SAVENAME"))
- "\"(vl-filename-base(getvar "DWGNAME")) ".csv")) "w"))
- (write-line "Diameter;Layer;From;To" fDescr)
- (foreach itm (reverse oLst)
- (write-line (strcat(rtos(car itm))
- ";" (cadr itm)
- ";" (nth 2 itm)
- ";" (last itm))
- fDescr)
- ); end foreach
- (close fDescr)
- (princ(strcat "\nCSV file location: " fName ))
- (initget "Yes No")
- (setq cAns(getkword "\nOpen file [Yes/No]: "))
- (if(= cAns "Yes")
- (if(setq exApp(vlax-get-or-create-object "Excel.Application"))
- (progn
- (vlax-put-property exApp 'Visible :vlax-true)
- (setq wbCol(vlax-get-property exApp 'Workbooks)
- cDoc(vlax-invoke-method wbCol 'Open fName))
- (vlax-release-object cDoc)
- (vlax-release-object wbCol)
- (vlax-release-object exApp)
- ); end progn
- ); end if
- ); end if
- ); end progn
- ); end if
- ); end progn
- ); end if
- (princ)
- ); end of c:dtable
- (vl-load-com)
Hiperlinks只是带有管道方向的提示,CTRL+单击不起作用。它显示了数据如何仅存在。 |