andyb57J Posted April 21 Posted April 21 I require a lisp to generate 3 x 6m long chords within an arc as per the image below. The angle of X is variable but would be calculated using the angle of the two intersecting lines. The length Y is variable and the arc Z is variable and is tangential to the two intersecting lines. I hope I have explained it sufficiently, but I think the image best shows what I need to achieve. Quote
marko_ribar Posted April 21 Posted April 21 If arc is variablar like you explained (X,Y,Z), then triple lengths of 6 dwg units are also variablar (triple chamfers could be any lengths)... Quote
andyb57J Posted April 21 Author Posted April 21 (edited) 31 minutes ago, marko_ribar said: If arc is variablar like you explained (X,Y,Z), then triple lengths of 6 dwg units are also variablar (triple chamfers could be any lengths)... Not necessarily. tangent length Y is variable therefore the arc moves between the two tangent lines so the the chords will remain 6m long. The length of Y is variable based on the angle of X. The arc Z is also variable so that the 3 chords will always be 6m long. The angle between the chords is also a variable and will be based in the length of arc Z. Firstly, need to devise the mathematical equation to calculate the variables then hopefully should be able to devise a lisp to create the chords. Edited April 21 by andyb57J Quote
marko_ribar Posted April 21 Posted April 21 Then, why do you need chamfers of exactly 6... You could make user specify that length with (getdist)... Quote
eldon Posted April 21 Posted April 21 Once you have the angle "X" then everything can be calculated. Quote
andyb57J Posted April 21 Author Posted April 21 4 hours ago, marko_ribar said: Then, why do you need chamfers of exactly 6... You could make user specify that length with (getdist)... Because design policies for a council require the 3 x 6m long chords. It is their design guidelines Quote
andyb57J Posted April 21 Author Posted April 21 3 hours ago, eldon said: Once you have the angle "X" then everything can be calculated. Yes I am aware of that but need help with the mathematical formulae to do this and then help to create a isp to do it all automatically Quote
paulmcz Posted April 22 Posted April 22 Once you know angle X, calculate radius of the arc. Then for the lisp, set insert point and then, distribute the 4 points needed for the 3 chords from the insert point with help of 'polar' function. Then connect the 4 points with lines. The resulting lines will be exactly 6 units long each. Quote
BIGAL Posted April 22 Posted April 22 First step is a formula for 3 x 6 long chords as a radius given an angle. One way would be take a guess at radius draw 3 chords then increase or decrease radius till gives chord length of 6. Try this ; do 3 chords on arc each chord is 6. ; By AlanH April 20255 (defun c:3chs ( / ent1 ent2 rad pt1 pt2 obj len stpt endpt sc oldsnap) (setq oldsnap (getvar 'osmode)) (setvar 'osmode 0) (setq ent1 (cdr (entsel "\nPick 1st line "))) (setq ent2 (car (entsel "\nPick 2nd line "))) (setq rad (getreal "\nGuess radius ")) (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq obj (vlax-ename->vla-object (entlast))) (setq len (/ (vlax-get obj 'arclength) 3.)) (setq stpt (vlax-get obj 'startpoint)) (setq dist (distance stpt (vlax-curve-getpointatdist obj len))) (command "undo" 1) (setq sc (/ 6.0 dist)) (setq rad (* sc rad)) (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq obj (vlax-ename->vla-object (entlast))) (setq len (/ (vlax-get obj 'arclength) 3.)) (setq stpt (vlax-get obj 'startpoint)) (setq endpt (vlax-get obj 'endpoint)) (setq pt1 (vlax-curve-getpointatdist obj len)) (setq pt2 (vlax-curve-getpointatdist obj (* 2.0 len))) (command "pline" stpt pt1 pt2 endpt "") (setvar 'filletrad 0.0) (command "fillet" ent1 ent2) (setq var 'osmode oldsnap) (princ) ) (c:3chs) Quote
paulmcz Posted April 22 Posted April 22 (edited) (defun c:3ch (/ ip p1 p2 p3 p4 r u1 u2 u3 x) (setq x (* pi (/ (getreal "\n Angle X in degrees: ") 180)) u1 (- pi x) u2 (/ u1 3) u3 (/ u1 6) r (/ 3 (sin u3)) ip (getpoint "\n Insert point <arc center>: ") p1 (polar ip 0 r) p2 (polar ip u2 r) p3 (polar ip (* 2 u2) r) p4 (polar ip u1 r) ) (command "line" p1 p2 p3 p4 "") (command "arc" p1 p2 p4) (princ) ) Edited April 22 by paulmcz Quote
andyb57J Posted April 22 Author Posted April 22 2 hours ago, BIGAL said: First step is a formula for 3 x 6 long chords as a radius given an angle. One way would be take a guess at radius draw 3 chords then increase or decrease radius till gives chord length of 6. Try this ; do 3 chords on arc each chord is 6. ; By AlanH April 20255 (defun c:3chs ( / ent1 ent2 rad pt1 pt2 obj len stpt endpt sc oldsnap) (setq oldsnap (getvar 'osmode)) (setvar 'osmode 0) (setq ent1 (cdr (entsel "\nPick 1st line "))) (setq ent2 (car (entsel "\nPick 2nd line "))) (setq rad (getreal "\nGuess radius ")) (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq obj (vlax-ename->vla-object (entlast))) (setq len (/ (vlax-get obj 'arclength) 3.)) (setq stpt (vlax-get obj 'startpoint)) (setq dist (distance stpt (vlax-curve-getpointatdist obj len))) (command "undo" 1) (setq sc (/ 6.0 dist)) (setq rad (* sc rad)) (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq obj (vlax-ename->vla-object (entlast))) (setq len (/ (vlax-get obj 'arclength) 3.)) (setq stpt (vlax-get obj 'startpoint)) (setq endpt (vlax-get obj 'endpoint)) (setq pt1 (vlax-curve-getpointatdist obj len)) (setq pt2 (vlax-curve-getpointatdist obj (* 2.0 len))) (command "pline" stpt pt1 pt2 endpt "") (setvar 'filletrad 0.0) (command "fillet" ent1 ent2) (setq var 'osmode oldsnap) (princ) ) (c:3chs) I get a syntax error on load Quote
andyb57J Posted April 22 Author Posted April 22 2 hours ago, paulmcz said: (defun c:3ch (/ ip p1 p2 p3 p4 r u1 u2 u3 x) (setq x (* pi (/ (getreal "\n Angle X in degrees: ") 180)) u1 (- pi x) u2 (/ u1 3) u3 (/ u1 6) r (/ 3 (sin u3)) ip (getpoint "\n Instert point <arc center>: ") p1 (polar ip 0 r) p2 (polar ip u2 r) p3 (polar ip (* 2 u2) r) p4 (polar ip u1 r) ) (command "line" p1 p2 p3 p4 "") (command "arc" p1 p2 p4) (princ) ) This is perfect. Can it be revised so that it will calculate 'X"' by selecting the two lines so the final result looks like the attached. Quote
BIGAL Posted April 22 Posted April 22 What I posted looks like attached. You can remove the arc drawn if not wanted, use erase entlast before pline command. Quote
eldon Posted April 22 Posted April 22 11 hours ago, andyb57J said: Yes I am aware of that but need help with the mathematical formulae to do this and then help to create a isp to do it all automatically I see that the formula has been used in the lisp by @paulmcz. But to set it out in another way - Radius = (Half the chord length) divided by sin ((180 - angle X) x 1/6) Quote
andyb57J Posted April 22 Author Posted April 22 11 hours ago, BIGAL said: First step is a formula for 3 x 6 long chords as a radius given an angle. One way would be take a guess at radius draw 3 chords then increase or decrease radius till gives chord length of 6. Try this ; do 3 chords on arc each chord is 6. ; By AlanH April 20255 (defun c:3chs ( / ent1 ent2 rad pt1 pt2 obj len stpt endpt sc oldsnap) (setq oldsnap (getvar 'osmode)) (setvar 'osmode 0) (setq ent1 (cdr (entsel "\nPick 1st line "))) (setq ent2 (car (entsel "\nPick 2nd line "))) (setq rad (getreal "\nGuess radius ")) (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq obj (vlax-ename->vla-object (entlast))) (setq len (/ (vlax-get obj 'arclength) 3.)) (setq stpt (vlax-get obj 'startpoint)) (setq dist (distance stpt (vlax-curve-getpointatdist obj len))) (command "undo" 1) (setq sc (/ 6.0 dist)) (setq rad (* sc rad)) (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq obj (vlax-ename->vla-object (entlast))) (setq len (/ (vlax-get obj 'arclength) 3.)) (setq stpt (vlax-get obj 'startpoint)) (setq endpt (vlax-get obj 'endpoint)) (setq pt1 (vlax-curve-getpointatdist obj len)) (setq pt2 (vlax-curve-getpointatdist obj (* 2.0 len))) (command "pline" stpt pt1 pt2 endpt "") (setvar 'filletrad 0.0) (command "fillet" ent1 ent2) (setq var 'osmode oldsnap) (princ) ) (c:3chs) Each time I attempt to load the lisp I get a syntax error Quote
andyb57J Posted April 22 Author Posted April 22 3 hours ago, eldon said: I see that the formula has been used in the lisp by @paulmcz. But to set it out in another way - Radius = (Half the chord length) divided by sin ((180 - angle X) x 1/6) thankyou Quote
JerryFiedler Posted April 24 Posted April 24 andyb57J, Here is my version of a routine to add your special chords to an arc. All you need to do is select the two lines and answer two questions. You do not need to know the angle between the lines since the lisp calculates that. Neither do you need to estimate an arc radius nor the position of the arc since the lisp solves for the unique solution. My version uses the formulas presented by paulmcz to determine the unique radius that fits the selected lines and also uses the code provided by BigAl to create the arc and chords. Hopefully, my additions to the paulmcz and BigAl code will meet your expectations. ;Routine to create special fillet between two intersecting lines. ;https://www.cadtutor.net/forum/topic/97550-3-x-6m-long-chords-around-arc/#google_vignette ;Modified: Jerry Fiedler - Apr 2025 ; Determine angle by USER selecting two lines instead of numerical input. ; Added USER options to show arc and extend lines to apex. ;Reference code: ; paulmcz - Equations for arc radius calculation. ; BigAl - Code for creating the arc and chamfers. ;********************************************************************** (defun c:3BY6 ( / ent1 ent2 obj1 obj2 p1 p2 p3 p4 apex rad u1 u6 x end1 end2 arc len ans arcnm) ; Load the Geometric Calculator (CAL) if not already loaded. (arxload "geomcal") ; Select lines. (setq ent1 (car (entsel "\nPick Line 1 "))) (setq ent2 (car (entsel "\nPick Line 2 "))) ; Get end points of selected lines. (setq obj1 (vlax-ename->vla-object ent1)) (setq obj2 (vlax-ename->vla-object ent2)) (setq p1 (vlax-get obj1 'startpoint)) (setq p2 (vlax-get obj1 'endpoint)) (setq p3 (vlax-get obj2 'startpoint)) (setq p4 (vlax-get obj2 'endpoint)) ; Calculate the intersection point Line 1 and Line 2. (setq apex (inters p1 p2 p3 p4 nil)) ; Calculate angle X. (if (equal apex p1 0.01)(setq end1 p2)(setq end1 p1)) (if (equal apex p3 0.01)(setq end2 p4)(setq end2 p3)) (setq x (cal "ang(apex,end1,end2)")) (if (> x 180) (setq x (- 360 x))) (setq x (* pi (/ x 180.0))) ; Calculate the arc radius. (setq u1 (- pi x)) (setq u6 (/ u1 6)) (setq rad(/ 3 (sin u6))) ; Create arc. (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq arcnm (entlast)) (setq arc (vlax-ename->vla-object arcnm)) ; Establish nodes for chamfers. (setq len (/ (vlax-get arc 'arclength) 3.)) (setq p1 (vlax-get arc 'startpoint)) (setq p4 (vlax-get arc 'endpoint)) (setq p2 (vlax-curve-getpointatdist arc len)) (setq p3 (vlax-curve-getpointatdist arc (* 2.0 len))) ; Create chamfer. (command "pline" p1 p2 p3 p4 "") ; Delete arc? (initget "YES NO") (setq ans "NO") (setq ans (cond ((getkword "\nSHOW ARC? [YES/NO] <YES>: ")) ("YES"))) (if (= ans "NO") (entdel arcnm)) ; Extend lines to apex? (setvar 'filletrad 0.0) (initget "YES NO") (setq ans "NO") (setq ans (cond ((getkword "\nEXTEND LINES TO APEX? [YES/NO] <YES>: ")) ("YES"))) (if (= ans "YES") (command "fillet" ent1 ent2)) (princ) ) (princ) THREE_SIX.LSP Quote
marko_ribar Posted April 24 Posted April 24 (edited) Here is my version... (defun c:multarcchms ( / *error* acos cmd pdm pds xl v1 v2 ip a b n bn d dp r p1 p2 arc ci li ce k ) (or (not (vl-catch-all-error-p (vl-catch-all-apply (function vlax-get-acad-object) nil))) (vl-load-com)) (defun *error* ( m ) (if (= 8 (logand 8 (getvar (quote undoctl)))) (if command-s (command-s "_.undo" "_e") (vl-cmdf "_.undo" "_e") ) ) (if cmd (setvar (quote cmdecho) cmd) ) (if pdm (setvar (quote pdmode) pdm) ) (if pds (setvar (quote pdsize) pds) ) (if m (prompt m) ) (princ) ) ;; ArcCosine ;; Args: -1 <= x <= 1 (defun acos ( x ) (cond ( (equal x 1.0 1e-6) 0.0 ) ( (equal x -1.0 1e-6) pi ) ( (equal x 0.0 1e-8) (/ pi 2) ) ( (atan (sqrt (- 1.0 (* x x))) x) ) ) ) (setq cmd (getvar (quote cmdecho))) (setvar (quote cmdecho) 0) (setq pdm (getvar (quote pdmode))) (setq pds (getvar (quote pdsize))) (setvar (quote pdmode) 35) (setvar (quote pdsize) -1.5) (if (= 8 (logand 8 (getvar (quote undoctl)))) (vl-cmdf "_.undo" "_e") ) (vl-cmdf "_.undo" "_be") (prompt "\nSpecify first and second XLINES...") (vl-cmdf "_.xline") (while (< 0 (getvar (quote cmdactive))) (vl-cmdf "\\") ) (setq xl (entlast)) (setq v1 (cdr (assoc 11 (entget (entlast))))) (entdel xl) (setq v2 (cdr (assoc 11 (entget (entlast))))) (entdel xl) (setq a (acos (- 1.0 (/ (expt (distance v1 v2) 2) 2.0)))) (setq b (- pi a)) (initget 7) (setq n (getint "\nHow many chamfers along filleted arc : ")) (setq bn (* 0.5 (/ b (float n)))) (initget 7) (setq d (getdist "\nPick or specify length of chamfer(s) : ")) (setq dp (/ d 2.0)) (setq r (/ dp (sin bn))) (vl-cmdf "_.undo" "_m") (setvar (quote filletrad) r) (prompt "\nPick first and second XLINE to finish fillet command...") (vl-cmdf "_.fillet") (while (< 0 (getvar (quote cmdactive))) (vl-cmdf "\\") ) (vl-cmdf "_.copybase" "_non" (list 0.0 0.0 0.0) (entlast) "") (vl-cmdf "_.undo" "_b") (vl-cmdf "_.pasteclip" "_non" (list 0.0 0.0 0.0)) (setq p1 (vlax-curve-getstartpoint (setq arc (entlast)))) (vl-cmdf "_.circle" "_non" (trans p1 0 1) d) (setq ci (entlast)) (setq p2 (vlax-invoke (vlax-ename->vla-object arc) (quote intersectwith) (vlax-ename->vla-object ci) acextendnone)) (setq li (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))) (entdel ci) (setq ce (trans (cdr (assoc 10 (entget arc))) arc 0)) (setq k 0) (repeat (1- n) (vla-copy (vlax-ename->vla-object li)) (vla-rotate (vlax-ename->vla-object (entlast)) (vlax-3d-point ce) (* (setq k (1+ k)) 2.0 bn)) ) (entmake (list (cons 0 "POINT") (cons 10 (vlax-curve-getstartpoint arc)))) (if (> n 1) (progn (vl-cmdf "_.divide" arc n) (while (< 0 (getvar (quote cmdactive))) (vl-cmdf "") ) ) ) (entmake (list (cons 0 "POINT") (cons 10 (vlax-curve-getendpoint arc)))) (*error* nil) ) Edited April 25 by marko_ribar Quote
andyb57J Posted April 26 Author Posted April 26 On 25/04/2025 at 04:53, JerryFiedler said: andyb57J, Here is my version of a routine to add your special chords to an arc. All you need to do is select the two lines and answer two questions. You do not need to know the angle between the lines since the lisp calculates that. Neither do you need to estimate an arc radius nor the position of the arc since the lisp solves for the unique solution. My version uses the formulas presented by paulmcz to determine the unique radius that fits the selected lines and also uses the code provided by BigAl to create the arc and chords. Hopefully, my additions to the paulmcz and BigAl code will meet your expectations. ;Routine to create special fillet between two intersecting lines. ;https://www.cadtutor.net/forum/topic/97550-3-x-6m-long-chords-around-arc/#google_vignette ;Modified: Jerry Fiedler - Apr 2025 ; Determine angle by USER selecting two lines instead of numerical input. ; Added USER options to show arc and extend lines to apex. ;Reference code: ; paulmcz - Equations for arc radius calculation. ; BigAl - Code for creating the arc and chamfers. ;********************************************************************** (defun c:3BY6 ( / ent1 ent2 obj1 obj2 p1 p2 p3 p4 apex rad u1 u6 x end1 end2 arc len ans arcnm) ; Load the Geometric Calculator (CAL) if not already loaded. (arxload "geomcal") ; Select lines. (setq ent1 (car (entsel "\nPick Line 1 "))) (setq ent2 (car (entsel "\nPick Line 2 "))) ; Get end points of selected lines. (setq obj1 (vlax-ename->vla-object ent1)) (setq obj2 (vlax-ename->vla-object ent2)) (setq p1 (vlax-get obj1 'startpoint)) (setq p2 (vlax-get obj1 'endpoint)) (setq p3 (vlax-get obj2 'startpoint)) (setq p4 (vlax-get obj2 'endpoint)) ; Calculate the intersection point Line 1 and Line 2. (setq apex (inters p1 p2 p3 p4 nil)) ; Calculate angle X. (if (equal apex p1 0.01)(setq end1 p2)(setq end1 p1)) (if (equal apex p3 0.01)(setq end2 p4)(setq end2 p3)) (setq x (cal "ang(apex,end1,end2)")) (if (> x 180) (setq x (- 360 x))) (setq x (* pi (/ x 180.0))) ; Calculate the arc radius. (setq u1 (- pi x)) (setq u6 (/ u1 6)) (setq rad(/ 3 (sin u6))) ; Create arc. (setvar 'filletrad rad) (command "fillet" ent1 ent2) (setq arcnm (entlast)) (setq arc (vlax-ename->vla-object arcnm)) ; Establish nodes for chamfers. (setq len (/ (vlax-get arc 'arclength) 3.)) (setq p1 (vlax-get arc 'startpoint)) (setq p4 (vlax-get arc 'endpoint)) (setq p2 (vlax-curve-getpointatdist arc len)) (setq p3 (vlax-curve-getpointatdist arc (* 2.0 len))) ; Create chamfer. (command "pline" p1 p2 p3 p4 "") ; Delete arc? (initget "YES NO") (setq ans "NO") (setq ans (cond ((getkword "\nSHOW ARC? [YES/NO] <YES>: ")) ("YES"))) (if (= ans "NO") (entdel arcnm)) ; Extend lines to apex? (setvar 'filletrad 0.0) (initget "YES NO") (setq ans "NO") (setq ans (cond ((getkword "\nEXTEND LINES TO APEX? [YES/NO] <YES>: ")) ("YES"))) (if (= ans "YES") (command "fillet" ent1 ent2)) (princ) ) (princ) There appears to be an error somewhere as when the angle is less then 90 degrees each chord is not 6m long. If the angle is greater than 90 degrees it works perfectly THREE_SIX.LSP 2.34 kB · 1 download Quote
andyb57J Posted April 27 Author Posted April 27 On 25/04/2025 at 06:51, marko_ribar said: Here is my version... (defun c:multarcchms ( / *error* acos cmd pdm pds xl v1 v2 ip a b n bn d dp r p1 p2 arc ci li ce k ) (or (not (vl-catch-all-error-p (vl-catch-all-apply (function vlax-get-acad-object) nil))) (vl-load-com)) (defun *error* ( m ) (if (= 8 (logand 8 (getvar (quote undoctl)))) (if command-s (command-s "_.undo" "_e") (vl-cmdf "_.undo" "_e") ) ) (if cmd (setvar (quote cmdecho) cmd) ) (if pdm (setvar (quote pdmode) pdm) ) (if pds (setvar (quote pdsize) pds) ) (if m (prompt m) ) (princ) ) ;; ArcCosine ;; Args: -1 <= x <= 1 (defun acos ( x ) (cond ( (equal x 1.0 1e-6) 0.0 ) ( (equal x -1.0 1e-6) pi ) ( (equal x 0.0 1e-8) (/ pi 2) ) ( (atan (sqrt (- 1.0 (* x x))) x) ) ) ) (setq cmd (getvar (quote cmdecho))) (setvar (quote cmdecho) 0) (setq pdm (getvar (quote pdmode))) (setq pds (getvar (quote pdsize))) (setvar (quote pdmode) 35) (setvar (quote pdsize) -1.5) (if (= 8 (logand 8 (getvar (quote undoctl)))) (vl-cmdf "_.undo" "_e") ) (vl-cmdf "_.undo" "_be") (prompt "\nSpecify first and second XLINES...") (vl-cmdf "_.xline") (while (< 0 (getvar (quote cmdactive))) (vl-cmdf "\\") ) (setq xl (entlast)) (setq v1 (cdr (assoc 11 (entget (entlast))))) (entdel xl) (setq v2 (cdr (assoc 11 (entget (entlast))))) (entdel xl) (setq a (acos (- 1.0 (/ (expt (distance v1 v2) 2) 2.0)))) (setq b (- pi a)) (initget 7) (setq n (getint "\nHow many chamfers along filleted arc : ")) (setq bn (* 0.5 (/ b (float n)))) (initget 7) (setq d (getdist "\nPick or specify length of chamfer(s) : ")) (setq dp (/ d 2.0)) (setq r (/ dp (sin bn))) (vl-cmdf "_.undo" "_m") (setvar (quote filletrad) r) (prompt "\nPick first and second XLINE to finish fillet command...") (vl-cmdf "_.fillet") (while (< 0 (getvar (quote cmdactive))) (vl-cmdf "\\") ) (vl-cmdf "_.copybase" "_non" (list 0.0 0.0 0.0) (entlast) "") (vl-cmdf "_.undo" "_b") (vl-cmdf "_.pasteclip" "_non" (list 0.0 0.0 0.0)) (setq p1 (vlax-curve-getstartpoint (setq arc (entlast)))) (vl-cmdf "_.circle" "_non" (trans p1 0 1) d) (setq ci (entlast)) (setq p2 (vlax-invoke (vlax-ename->vla-object arc) (quote intersectwith) (vlax-ename->vla-object ci) acextendnone)) (setq li (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))) (entdel ci) (setq ce (trans (cdr (assoc 10 (entget arc))) arc 0)) (setq k 0) (repeat (1- n) (vla-copy (vlax-ename->vla-object li)) (vla-rotate (vlax-ename->vla-object (entlast)) (vlax-3d-point ce) (* (setq k (1+ k)) 2.0 bn)) ) (entmake (list (cons 0 "POINT") (cons 10 (vlax-curve-getstartpoint arc)))) (if (> n 1) (progn (vl-cmdf "_.divide" arc n) (while (< 0 (getvar (quote cmdactive))) (vl-cmdf "") ) ) ) (entmake (list (cons 0 "POINT") (cons 10 (vlax-curve-getendpoint arc)))) (*error* nil) ) This works great. Can you possibly change it to remove the two XLINES that are created and the arc as these are not needed at the end. 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.