florinsemerean Posted June 17, 2010 Posted June 17, 2010 if someone could help please, i have to set out 250 builders work holes on the slab.i did try to use coordstotable,tabord2,ordi to make a tabe on my drawing... 3cord was working but selects just polylines and i need to pick x&y points... please help 17.06.10 flo Quote
eldon Posted June 17, 2010 Posted June 17, 2010 if someone could help please,i have to set out 250 builders work holes on the slab.i did try to use coordstotable,tabord2,ordi to make a tabe on my drawing... 3cord was working but selects just polylines and i need to pick x&y points... please help This seems to be an ongoing problem, as site engineers discover that AutoCAD can do all the calculations, that previously were onerous. Two ways forward. 1.Adapt your working to suit what is available (i.e. draw a polyline between all your points). 2. Be prepared to spend money on getting a programme written for your needs. Quote
florinsemerean Posted June 17, 2010 Posted June 17, 2010 thank you for your help 1 choice will suit me better flo Quote
eldon Posted June 17, 2010 Posted June 17, 2010 Of course there is a third option - write your own lisp. All the lisps posted can be read, so learn from them, and soon you will be writing lisps to suit your method of work. Quote
mustaf Posted July 15, 2010 Posted July 15, 2010 exellent,Thank for this good one lisp, but please help me finding lisp for X-acese Logarthmic scale, and Y-acess Linear scale I would appreciate this for you Quote
mustaf Posted July 15, 2010 Posted July 15, 2010 exellent,Thank for this good one lisp, but please help me finding lisp for X-acese Logarthmic scale, and Y-acess Linear scale I would appreciate this for you Quote
wrmurphy81 Posted August 19, 2010 Posted August 19, 2010 I am using Civil3D 2010. Do any of you know hot to create a point table with Description, Northing, Easting only? i can make one with Point#, Description, Northing, Easting but I cant figure out how to remove the Point Numbers from a table. Quote
mustaf Posted August 20, 2010 Posted August 20, 2010 Thank you please I need Lisp to give me info by clicking on the points on autocad screen and the data linked with Autocad by MSACCESS.mdb Quote
DLC89 Posted November 29, 2010 Posted November 29, 2010 Hi, I'm wondering how I can go about changing this code that ASMI did up to start from the top most point on a polyline and then go in a clockwise direction rather than anti-clockwise? At the moment the starting location of setout seems to be quite random. ;; ================================================== ================== ;; ;; ;; ;; TABCORD.LSP - Fills the table in co-ordinates of LwPolyline ;; ;; vertexes, and also the centres and radiuses ;; ;; of arc segments. Marks vertexes of LwPolyline ;; ;; accordingly data in the table by digits or ;; ;; letters. Look section 'ADJUSTMENT' for ;; ;; acquaintance with options. ;; ;; ;; ;; ================================================== ================== ;; ;; ;; ;; Command(s) to call: TABCORD ;; ;; ;; ;; Select LwPolyline and after the table will be generated ;; ;; insert it into the necessary place. After that vertexes of ;; ;; polylines will be marked by figures or letters. ;; ;; ;; ;; ================================================== ================== ;; ;; ;; ;; THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY ;; ;; MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR ;; ;; PARTS OF IT ABSOLUTELY FREE. ;; ;; ;; ;; THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY ;; ;; DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS ;; ;; FOR A PARTICULAR USE. ;; ;; ;; ;; ================================================== ================== ;; ;; ;; ;; V1.3, 14th Aug 2008, Riga, Latvia ;; ;; © Aleksandr Smirnov (ASMI) ;; ;; For AutoCAD 2005 - 2008 (isn't tested in a next versions) ;; ;; ;; ;; ;; ;; ;; ;; ================================================== ================== ;; (defun c:tabcord(/ aCen cAng cCen cPl cRad cReg fDr it lCnt lLst mSp pCen pT1 pT2 ptLst R tHt tLst vlaPl vlaTab vLst cTxt oldCol nPl clFlg actDoc tPt1 tPt2 cAng tiPt oSnp *error* mType mHt oZin cAcu dHead hStr hHt w1 w2 w3 isPer isAre pMul aMul lWrt aVal xVal yVal) ;;; ************************************************** ************** ;;; *************************** ADJUSTMENT ************************* ;;; ************************************************** ************** (setq mType nil) ; Markups mode. T - digits, NIL - letters (setq tHt -2.0) ; Table text size. Positive - absolute, ; negative multiplayer to TEXTSIZE variable (setq mHt -2.0) ; Markups text size. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq cAcu 3) ; Precision of coordinates (from 0 to (setq dHead nil) ; If T delete table header, if NIL not delete (setq hStr "#ENTITY# SETOUT") ; Standard header (if dHead not equal T) (setq hHt -3.0) ; Header text size. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq w1 -10.0) ; 'Point' column width. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq w2 -20.0) ; 'EASTING' and 'NORTHING' colums width. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq w3 -12.0) ; 'Radius' column width. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq isPer T) ; if T adds perimeter row (setq isAre T) ; if T adds area row (setq isGCen T) ; if T adds center of gravity row (setq pMul 0.001) ; perimeter multiplayer (setq aMul 0.0001) ; area multiplayer ;;; ************************************************** ************** ;;; ************************* END ADJUSTMENT *********************** ;;; ************************************************** ************** (if(minusp tHt) (setq tHt(getvar "TEXTSIZE")) ); end if (if(minusp mHt) (setq mHt(*(abs mHt)(getvar "TEXTSIZE"))) ); end if (if(minusp hHt) (setq hHt(*(abs hHt)(getvar "TEXTSIZE"))) ); end if (if(minusp w1) (setq w1(*(abs w1)(getvar "TEXTSIZE"))) ); end if (if(minusp w2) (setq w2(*(abs w2)(getvar "TEXTSIZE"))) ); end if (if(minusp w3) (setq w3(*(abs w3)(getvar "TEXTSIZE"))) ); end if (vl-load-com) (defun Get_Acad_Ver(Gen_Only) (if Gen_Only (substr(getvar "ACADVER") 1 2) (substr(getvar "ACADVER") 1 4) ); end if ); and of Get_Acad_Ver (defun Extract_DXF_Values(Ent Code) (mapcar 'cdr (vl-remove-if-not '(lambda(a)(=(car a)Code)) (entget Ent))) ); end of (defun *error*(msg) (setvar "CMDECHO" 1) (if oSnp(setvar "OSMODE" oSnp)) (if oZin(setvar "DIMZIN" oZin)) (if mSp(vla-EndUndoMark actDoc)) (princ) ); end of *error* (defun Alph_Num(Counter / lLst cRes) (setq lLst '("A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10" "A11" "A12" "A13" "A14" "A15" "A16" "A17" "A18" "A19" "A20" "A21" "A22" "A23" "A24" "A25" "A26")) (if(<= 1.0(setq cRes(/ Counter 26.0))) (strcat(itoa(fix cRes)) (nth(- Counter(* 26(fix cRes)))lLst)) (nth Counter lLst) ); end if ); end of Alph_Num (if(<= 16.1(atof(Get_Acad_Ver nil))) (progn (if (and (setq cPl(entsel "\nSelect LwPoliline > ")) (= "LWPOLYLINE"(car(Extract_DXF_Values(car cPl)0))) ); end and (progn (princ "\nPlease Wait... \n") (setq vlaPl(vlax-ename->vla-object(car cPl)) ptLst(mapcar 'append (setq vLst(Extract_DXF_Values(car cPl)10)) (mapcar 'list(Extract_DXF_Values(car cPl)42))) r 2 lCnt 0 tLst '((1 0 "POINT")(1 1 "EASTING")(1 2 "NORTHING")(1 3 "RADIUS")) actDoc(vla-get-ActiveDocument (vlax-get-acad-object)) mSp(vla-get-ModelSpace actDoc) ); end setq (setvar "CMDECHO" 0) (setq oSnp(getvar "OSMODE")) (setq oZin(getvar "DIMZIN")) (setvar "DIMZIN" 0) (vla-StartUndoMark actDoc) (foreach vert ptLst (setq vert(trans vert 0 1) tLst(append tLst (list(list r 0(if mType (itoa(1+ lCnt)) (Alph_Num lCnt))) (list r 1(rtos(car vert)2 cAcu)) (list r 2(rtos(cadr vert)2 cAcu)) (list r 3 "")))) (if(and (/= 0.0(last vert)) (setq pt1(vlax-curve-GetPointAtParam vlaPl lCnt)) (setq pt2(vlax-curve-GetPointAtParam vlaPl(1+ lCnt))) ); end and (setq r(1+ r) cRad(abs(/(distance pt1 pt2) 2(sin(/(* 4(atan(abs(last vert))))2)))) aCen(vlax-curve-GetPointAtParam vlaPl(+ 0.5 lCnt)) fDr(vlax-curve-getFirstDeriv vlaPl (vlax-curve-getParamAtPoint vlaPl aCen)) pCen(trans (polar aCen(-(if(minusp(last vert)) pi(* 2 pi)) (atan(/(car fDr)(cadr fDr))))cRad)0 1) tLst(append tLst(list (list r 0 "center") (list r 1(rtos(car pCen)2 cAcu)) (list r 2(rtos(cadr pCen)2 cAcu)) (list r 3(rtos cRad 2 cAcu)))) ); end setq ); end if (setq r(1+ r) lCnt(1+ lCnt)) ); end foreach (setq vlaTab(vla-AddTable mSp (vlax-3D-point '(0 0 0)) (+ 1(/(length tLst)4)) 4 (* 3 tHt)w2)) (foreach i tLst (vl-catch-all-apply 'vla-SetText(cons vlaTab i)) (vla-SetCellTextHeight vlaTab(car i)(cadr i)tHt) (vla-SetCellAlignment vlaTab(car i)(cadr i)acMiddleCenter) ); end foreach (if(or isPer isAre) (progn (vla-InsertRows vlaTab r(* 0.05 tHt)1) (vla-SetCellTextHeight vlaTab r 0(* 0.05 tHt)) (setq r(1+ r)) ); end progn ); end if (if isPer (progn (if(= :vlax-true(vla-get-Closed vlaPl)) (setq lWrt "Perimeter") (setq lWrt "Length") ); end if (vla-InsertRows vlaTab r tHt 1) (vla-SetText vlaTab r 0 lWrt) (vla-SetText vlaTab r 1 (rtos(*(vla-get-Length vlaPl)pMul)2 cAcu)) (vla-SetCellTextHeight vlaTab r 0 tHt) (vla-SetCellTextHeight vlaTab r 1 tHt) (setq r(1+ r)) ); end progn ); end if (if isAre (progn (if(= :vlax-true(vla-get-Closed vlaPl)) (setq aVal (rtos(*(vla-get-Area vlaPl)aMul)2 cAcu)) (setq aVal "Not closed contour") ); end if (vla-InsertRows vlaTab r tHt 1) (vla-SetText vlaTab r 0 "Area") (vla-SetText vlaTab r 1 aVal) (vla-SetCellTextHeight vlaTab r 0 tHt) (vla-SetCellTextHeight vlaTab r 1 tHt) (setq r(1+ r)) ); end progn ); end if (if(= :vlax-true(vla-get-Closed vlaPl)) (progn (setq nPl(vla-Copy vlaPl)) (command "_.region" (entlast) "") (setq cCen(vlax-get(setq cReg (vlax-ename->vla-object(entlast)))'Centroid)) (vla-Delete cReg) (setq clFlg T) ); end progn ); end if (if isAre (progn (if cCen (setq xVal(rtos(car cCen)2 cAcu) yVal (rtos(cadr cCen)2 cAcu)) (setq xVal "-" yVal "-") ); end if (vla-InsertRows vlaTab r tHt 1) (vla-SetText vlaTab r 0 "Gravity Center") (vla-SetText vlaTab r 1 xVal) (vla-SetText vlaTab r 2 yVal) (vla-SetCellTextHeight vlaTab r 0 tHt) (vla-SetCellTextHeight vlaTab r 1 tHt) (vla-SetCellTextHeight vlaTab r 2 tHt) (setq r(1+ r)) ); end progn ); end if (vla-put-VertCellMargin vlaTab (* 0.75 tHt)) (vla-SetColumnWidth vlaTab 0 w1) (vla-SetColumnWidth vlaTab 3 w3) (if(vlax-property-available-p vlaTab 'RepeatTopLabels) (vla-put-RepeatTopLabels vlaTab :vlax-true) ); end if (if(vlax-property-available-p vlaTab 'BreakSpacing) (vla-put-BreakSpacing vlaTab (* 3 tHt)) ); end if (if dHead (vla-DeleteRows vlaTab 0 1) (progn (vla-SetText vlaTab 0 0 hStr) (vla-SetCellTextHeight vlaTab 0 0 hHt) ); end progn ); end if (vla-put-Height vlaTab(* 1.75(/(length tLst)4))) (princ "\n<<< Place Table >>> ") (command "_.copybase" (trans '(0 0 0)0 1)(entlast) "") (command "_.erase" (entlast) "") (command "_.pasteclip" pause) (setq lCnt 0) (foreach v vLst (if clFlg (setq cAng(angle cCen(trans v 0 1)) iPt(polar v cAng (* 2 mHt))) (setq tPt1(vlax-curve-GetPointAtParam vlaPl (- lCnt 0.0000001)) tPt2(vlax-curve-GetPointAtParam vlaPl (+ lCnt 0.0000001)) iPt(polar v(+(* pi 0.5)(if(minusp (setq cAng(angle tPt1(if tPt2 tPt2 (polar tPt1(* 0.5 pi)0.0000001))))) cAng(- cAng)))(* 2 mHt)) ); end setq ); end if (setvar "OSMODE" 0) (setq cTxt(vla-AddText mSp (if mType(itoa(1+ lCnt))(Alph_Num lCnt)) (vlax-3d-point iPt) mHt) tiPt(vla-get-InsertionPoint cTxt) lCnt(1+ lCnt) ); end setq (vla-put-Alignment cTxt 10) (vla-put-TextAlignmentPoint cTxt tiPt) (setq oldCol(getvar "CECOLOR")) (setvar "CECOLOR" "1") (command "_.circle"(trans v 0 1) (/ mHt 4)) (setvar "CECOLOR" oldCol) ); end foreach (setvar "DIMZIN" oZin) (setvar "OSMODE" oSnp) (setvar "CMDECHO" 1) (vla-EndUndoMark actDoc) ); end progn (princ "\n<!> It isn't LwPolyline! Quit. <!> ") ); end if ); end progn (princ "\n<!> This program works in AutoCAD 2005+ only! <!> " ) );end if (gc) (princ) ); end of c:tabcord (princ "\n[info] [info]") (princ "\n[info] Type TABCORD to fill table of LwPolyline coordinates [info]") Thanks Quote
mustaf Posted December 2, 2010 Posted December 2, 2010 tHANK YOU VERY MUCH FOR YOUR HELP REGARDS MUSTAFA Quote
shoaib Posted January 3, 2011 Posted January 3, 2011 my friends i cant access these all how to arrange mean to say i have a friend, he use aliaseditor to make shorcut of that command which i want know like in any coordinated drawing he click & there is coordinates near the point how i dont know,please advice me, Quote
ReMark Posted January 3, 2011 Posted January 3, 2011 shoaib: What do you mean you can't access? Access what? The codes posted here are lisp routines. Do you know how to load a lisp routine? If your friend has a lisp routine that identifies the coordinates of a picked point activated by a command alias you should be asking him, not us, for the code. Quote
ReMark Posted January 3, 2011 Posted January 3, 2011 shoaib: Try this lisp routine. It will give you the X, Y, Z coordinates of a picked point. Output to the command line. How you get it to work with a command alias is up to you. Note: I did not write the routine. It was posted to the AutoDesk Discussion Groups on 07-15-2009 by a person calling themselves Some Body. The credit is entirely his not mine. Coords.txt After downloading the routine change the file extension from TXT to LSP. Use the APPLOAD command to load the routine. To run the command type txtcoords at the command line then press Enter. Pick a point. The coords will be displayed. Quote
bogdancic26 Posted January 18, 2011 Posted January 18, 2011 Hello, Regarding the lisp routine "Tabcord.lsp" is there anyone who know how to modify this to have the possibility to change the starting number of the table. For example i have several polylines let's say 3; first have 7 vertex, second have 5 vertex and third have 13 vertex. i Want to draw 3 tables first wil have numbers from 1 to 7, second from 8 to 13 and third from 14 to 26. Now the tabcord is starting from 1 everytime. Regards. Quote
bogdancic26 Posted January 19, 2011 Posted January 19, 2011 It would be nice if i could set the number with which to start numbering vertex. Maybe is someone here who can modify this routine. Quote
VVA Posted January 19, 2011 Posted January 19, 2011 (edited) Try it ;; Mod by Vladimir Azarko VVA for ( http://www.cadtutor.net/forum/showthread.php?25192-generate-X-amp-Y-coordinates-into-table/page10 ) ;; Add the starting number on the table. ;; ==================================================================== ;; ;; ;; ;; TABCORD.LSP - Fills the table in co-ordinates of LwPolyline ;; ;; vertexes, and also the centres and radiuses ;; ;; of arc segments. Marks vertexes of LwPolyline ;; ;; accordingly data in the table by digits or ;; ;; letters. Look section 'ADJUSTMENT' for ;; ;; acquaintance with options. ;; ;; ;; ;; ==================================================================== ;; ;; ;; ;; Command(s) to call: TABCORD ;; ;; ;; ;; Select LwPolyline and after the table will be generated ;; ;; insert it into the necessary place. After that vertexes of ;; ;; polylines will be marked by figures or letters. ;; ;; ;; ;; ==================================================================== ;; ;; ;; ;; THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY ;; ;; MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR ;; ;; PARTS OF IT ABSOLUTELY FREE. ;; ;; ;; ;; THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY ;; ;; DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS ;; ;; FOR A PARTICULAR USE. ;; ;; ;; ;; ==================================================================== ;; ;; ;; ;; V1.3, 14th Aug 2008, Riga, Latvia ;; ;; © Aleksandr Smirnov (ASMI) ;; ;; For AutoCAD 2005 - 2008 (isn't tested in a next versions) ;; ;; ;; ;; http://www.asmitools.com ;; ;; ;; ;; ==================================================================== ;; (defun c:tabcord(/ aCen cAng cCen cPl cRad cReg fDr it lCnt lLst mSp pCen pT1 pT2 ptLst R tHt tLst vlaPl vlaTab vLst cTxt oldCol nPl clFlg actDoc tPt1 tPt2 cAng tiPt oSnp *error* mType mHt oZin cAcu dHead hStr hHt w1 w2 w3 isPer isAre pMul aMul lWrt aVal xVal yVal LCntMax) ;;; **************************************************************** ;;; *************************** ADJUSTMENT ************************* ;;; **************************************************************** (setq mType t) ; Markups mode. T - digits, NIL - letters (setq tHt -1.0) ; Table text size. Positive - absolute, ; negative multiplayer to TEXTSIZE variable (setq mHt -2.0) ; Markups text size. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq cAcu 4) ; Precision of coordinates (from 0 to (setq dHead nil) ; If T delete table header, if NIL not delete (setq hStr "Land # ") ; Standard header (if dHead not equal T) (setq hHt -1.25) ; Header text size. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq w1 -10.0) ; 'Point' column width. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq w2 -20.0) ; 'X' and 'Y' colums width. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq w3 -12.0) ; 'Radius' column width. Positive - absolute, ; negative - multiplayer to TEXTSIZE variable (setq isPer T) ; if T adds perimeter row (setq isAre T) ; if T adds area row (setq isGCen T) ; if T adds center of gravity row (setq pMul 0.001) ; perimeter multiplayer (setq aMul 0.000001) ; area multiplayer ;;; **************************************************************** ;;; ************************* END ADJUSTMENT *********************** ;;; **************************************************************** (if(minusp tHt) (setq tHt(getvar "TEXTSIZE")) ); end if (if(minusp mHt) (setq mHt(*(abs mHt)(getvar "TEXTSIZE"))) ); end if (if(minusp hHt) (setq hHt(*(abs hHt)(getvar "TEXTSIZE"))) ); end if (if(minusp w1) (setq w1(*(abs w1)(getvar "TEXTSIZE"))) ); end if (if(minusp w2) (setq w2(*(abs w2)(getvar "TEXTSIZE"))) ); end if (if(minusp w3) (setq w3(*(abs w3)(getvar "TEXTSIZE"))) ); end if (vl-load-com) (defun Get_Acad_Ver(Gen_Only) (if Gen_Only (substr(getvar "ACADVER") 1 2) (substr(getvar "ACADVER") 1 4) ); end if ); and of Get_Acad_Ver (defun Extract_DXF_Values(Ent Code) (mapcar 'cdr (vl-remove-if-not '(lambda(a)(=(car a)Code)) (entget Ent))) ); end of (defun *error*(msg) (setvar "CMDECHO" 1) (if oSnp(setvar "OSMODE" oSnp)) (if oZin(setvar "DIMZIN" oZin)) (if mSp(vla-EndUndoMark actDoc)) (princ) ); end of *error* (defun Alph_Num(Counter / lLst cRes) (setq lLst '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")) (if(<= 1.0(setq cRes(/ Counter 26.0))) (strcat(itoa(fix cRes)) (nth(- Counter(* 26(fix cRes)))lLst)) (nth Counter lLst) ); end if ); end of Alph_Num (if(<= 16.1(atof(Get_Acad_Ver nil))) (progn (if (and (setq cPl(entsel "\nSelect LwPoliline > ")) (= "LWPOLYLINE"(car(Extract_DXF_Values(car cPl)0))) ); end and (progn ;;;============= ADD VVA Start (or *Tabcord_Cnt* (setq *Tabcord_Cnt* 0)) (princ "\nStart Number <")(princ (1+ *Tabcord_Cnt*)) (princ ">: ")(initget 6) (if (setq lCnt (getint))(setq *Tabcord_Cnt* (1- lCnt))) ;;;============= ADD VVA END (princ "\nPlease Wait... \n") (setq vlaPl(vlax-ename->vla-object(car cPl)) ptLst(mapcar 'append (setq vLst(Extract_DXF_Values(car cPl)10)) (mapcar 'list(Extract_DXF_Values(car cPl)42))) r 2 lCnt 0 tLst '((1 0 "Point")(1 1 "X")(1 2 "Y")(1 3 "Radius")) actDoc(vla-get-ActiveDocument (vlax-get-acad-object)) mSp(vla-get-ModelSpace actDoc) ); end setq (setvar "CMDECHO" 0) (setq oSnp(getvar "OSMODE")) (setq oZin(getvar "DIMZIN")) (setvar "DIMZIN" 0) (vla-StartUndoMark actDoc) (foreach vert ptLst (setq vert(trans vert 0 1) tLst(append tLst (list(list r 0(if mType (itoa(+(1+ lCnt) *Tabcord_Cnt*)) (Alph_Num lCnt))) (list r 1(rtos(car vert)2 cAcu)) (list r 2(rtos(cadr vert)2 cAcu)) (list r 3 "")))) (if(and (/= 0.0(last vert)) (setq pt1(vlax-curve-GetPointAtParam vlaPl lCnt)) (setq pt2(vlax-curve-GetPointAtParam vlaPl(1+ lCnt))) ); end and (setq r(1+ r) cRad(abs(/(distance pt1 pt2) 2(sin(/(* 4(atan(abs(last vert))))2)))) aCen(vlax-curve-GetPointAtParam vlaPl(+ 0.5 lCnt)) fDr(vlax-curve-getFirstDeriv vlaPl (vlax-curve-getParamAtPoint vlaPl aCen)) pCen(trans (polar aCen(-(if(minusp(last vert)) pi(* 2 pi)) (atan(/(car fDr)(cadr fDr))))cRad)0 1) tLst(append tLst(list (list r 0 "center") (list r 1(rtos(car pCen)2 cAcu)) (list r 2(rtos(cadr pCen)2 cAcu)) (list r 3(rtos cRad 2 cAcu)))) ); end setq ); end if (setq r(1+ r) lCnt(1+ lCnt)) ); end foreach (setq vlaTab(vla-AddTable mSp (vlax-3D-point '(0 0 0)) (+ 1(/(length tLst)4)) 4 (* 3 tHt)w2)) (foreach i tLst (vl-catch-all-apply 'vla-SetText(cons vlaTab i)) (vla-SetCellTextHeight vlaTab(car i)(cadr i)tHt) (vla-SetCellAlignment vlaTab(car i)(cadr i)acMiddleCenter) ); end foreach (if(or isPer isAre) (progn (vla-InsertRows vlaTab r(* 0.05 tHt)1) (vla-SetCellTextHeight vlaTab r 0(* 0.05 tHt)) (setq r(1+ r)) ); end progn ); end if (if isPer (progn (if(= :vlax-true(vla-get-Closed vlaPl)) (setq lWrt "Perimeter") (setq lWrt "Length") ); end if (vla-InsertRows vlaTab r tHt 1) (vla-SetText vlaTab r 0 lWrt) (vla-SetText vlaTab r 1 (rtos(*(vla-get-Length vlaPl)pMul)2 cAcu)) (vla-SetCellTextHeight vlaTab r 0 tHt) (vla-SetCellTextHeight vlaTab r 1 tHt) (setq r(1+ r)) ); end progn ); end if (if isAre (progn (if(= :vlax-true(vla-get-Closed vlaPl)) (setq aVal (rtos(*(vla-get-Area vlaPl)aMul)2 cAcu)) (setq aVal "Not closed contour") ); end if (vla-InsertRows vlaTab r tHt 1) (vla-SetText vlaTab r 0 "Area") (vla-SetText vlaTab r 1 aVal) (vla-SetCellTextHeight vlaTab r 0 tHt) (vla-SetCellTextHeight vlaTab r 1 tHt) (setq r(1+ r)) ); end progn ); end if [color="red"];;;Cravity Center START (if(= :vlax-true(vla-get-Closed vlaPl)) (progn (setq nPl(vla-Copy vlaPl)) (command "_.region" (entlast) "") (setq cCen(vlax-get(setq cReg (vlax-ename->vla-object(entlast)))'Centroid)) (vla-Delete cReg) (setq clFlg T) ); end progn ); end if (if isAre (progn (if cCen (setq xVal(rtos(car cCen)2 cAcu) yVal (rtos(cadr cCen)2 cAcu)) (setq xVal "-" yVal "-") ); end if (vla-InsertRows vlaTab r tHt 1) (vla-SetText vlaTab r 0 "Gravity Center") (vla-SetText vlaTab r 1 xVal) (vla-SetText vlaTab r 2 yVal) (vla-SetCellTextHeight vlaTab r 0 tHt) (vla-SetCellTextHeight vlaTab r 1 tHt) (vla-SetCellTextHeight vlaTab r 2 tHt) (setq r(1+ r)) ); end progn ); end if ;;;Cravity Center END[/color] (vla-put-VertCellMargin vlaTab (* 0.75 tHt)) (vla-SetColumnWidth vlaTab 0 w1) (vla-SetColumnWidth vlaTab 3 w3) (if(vlax-property-available-p vlaTab 'RepeatTopLabels) (vla-put-RepeatTopLabels vlaTab :vlax-true) ); end if (if(vlax-property-available-p vlaTab 'BreakSpacing) (vla-put-BreakSpacing vlaTab (* 3 tHt)) ); end if (if dHead (vla-DeleteRows vlaTab 0 1) (progn (vla-SetText vlaTab 0 0 hStr) (vla-SetCellTextHeight vlaTab 0 0 hHt) ); end progn ); end if (vla-put-Height vlaTab(* 1.75(/(length tLst)4))) (princ "\n<<< Place Table >>> ") (command "_.copybase" (trans '(0 0 0)0 1)(entlast) "") (command "_.erase" (entlast) "") (command "_.pasteclip" pause) (setq lCnt 0) (foreach v vLst (if clFlg (setq cAng(angle cCen(trans v 0 1)) iPt(polar v cAng (* 2 mHt))) (setq tPt1(vlax-curve-GetPointAtParam vlaPl (- lCnt 0.0000001)) tPt2(vlax-curve-GetPointAtParam vlaPl (+ lCnt 0.0000001)) iPt(polar v(+(* pi 0.5)(if(minusp (setq cAng(angle tPt1(if tPt2 tPt2 (polar tPt1(* 0.5 pi)0.0000001))))) cAng(- cAng)))(* 2 mHt)) ); end setq ); end if (setvar "OSMODE" 0) (setq cTxt(vla-AddText mSp (if mType(itoa(setq LCntMax(+ (1+ lCnt) *Tabcord_Cnt*)))(Alph_Num lCnt)) (vlax-3d-point iPt) mHt) tiPt(vla-get-InsertionPoint cTxt) lCnt(1+ lCnt) ); end setq (vla-put-Alignment cTxt 10) (vla-put-TextAlignmentPoint cTxt tiPt) (setq oldCol(getvar "CECOLOR")) (setvar "CECOLOR" "1") (command "_.circle"(trans v 0 1) (/ mHt 4)) (setvar "CECOLOR" oldCol) ); end foreach (setq *Tabcord_Cnt* LCntMax) ;;; Add VVA (setvar "DIMZIN" oZin) (setvar "OSMODE" oSnp) (setvar "CMDECHO" 1) (vla-EndUndoMark actDoc) ); end progn (princ "\n<!> It isn't LwPolyline! Quit. <!> ") ); end if ); end progn (princ "\n<!> This program works in AutoCAD 2005+ only! <!> " ) );end if (gc) (princ) ); end of c:tabcord (princ "\n[info] http:\\\\www.AsmiTools.com [info]") (princ "\n[info] Type TABCORD to fill table of LwPolyline coordinates [info]") Edited July 2, 2011 by VVA Quote
bogdancic26 Posted January 19, 2011 Posted January 19, 2011 Thank you verry much VVA. You did a great work.Is perfect for what i need. Regards. Quote
nctyb09 Posted June 29, 2011 Posted June 29, 2011 Wonderful thread! I have been trying to adapt this lisps for my purposes but have had no luck. Perhaps you can help. I have many attributed blocks on a ground plan that I would like to make a table of the xyz coordinates of the base point of each the block so that correspond to the value (name/title) of the block. Thanks for any guidance you can provide! Something similar to the attached. Quote
stevesfr Posted June 30, 2011 Posted June 30, 2011 VVA I can't seem to omit entirely "Gravity Center" row ? give me a clue what to modify? Steve Quote
namnhim Posted July 1, 2011 Posted July 1, 2011 I found this lisp that the cells that lacked height. Thanks to Uncle fix help to further column height Z (XYZ) in addition to this table. many thanks! Here: such as image editing (because my English is not good) Drawing.dwg Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.