Jump to content

lisp to round-up numbers


sadhu

Recommended Posts

Is there a lisp function to round up numbers ?:unsure:

 

 

What I need to do is round up numbers to the second decimal point as in the example below. Rounds up to the higher value.

 

e.g.

12.00 remains 12.00

12.01 becomes 12.05

12.12 becomes 12.15

12.14 becomes 12.15

12.16 becomes 12.20

12.19 becomes 12.20

Link to comment
Share on other sites

Not sure quite what you are driving at, but this should cater for all dp:

 

(defun Round (num dp / fac)
 (setq fac (float (expt 10 dp)))

 (if (< 0.5 (rem (setq num (* fac num)) 1))
   (/ (1+ (fix num)) fac)
   (/     (fix num)  fac)))

Link to comment
Share on other sites

In dimensions? There is already a function there for it - find roundoff in the Properties box or at the Dim Style.
No, it isn't dimension. It's a value returned by a lisp routine. So I guess roundoff doesn't apply to my case - or does it ?
Link to comment
Share on other sites

No, the roundoff that I was getting at doesn't apply then.

 

Can you psot the lisp routine? I don't know much about lisps but others know loads and they might help you alter the original instead of adding more steps to your routines.

Link to comment
Share on other sites

(defun Round (num dp / fac)

(setq fac (float (expt 10 dp)))

 

(if (

(/ (1+ (fix num)) fac)

(/ (fix num) fac)))

I tried to integrate your code in mine but i guess I'm still a ..:P

 

what I need to do is get "d1" rounded up like this. evaluats the second decimal digit (second after the decimal seperater) and rounds it up to

 

5 if less than 5

0 if greater than 5 but increments the first decimal number by 1

 

 

e.g.

12.00 remains 12.00

12.01 becomes 12.05

12.12 becomes 12.15

12.14 becomes 12.15

12.16 becomes 12.20

12.19 becomes 12.20

 

 

 

two:
;cumulative distance
;this routine is just like the Autocad Distance command with the
;exception that it allows you to pick more than 2 consecutive points.
;the routine will display the cumulative distance and the distance
;between the last two points picked on the command line.
(defun c:cd ()
(setvar "cmdecho" 0)
(graphscr)
(setq
 p1 (getpoint "\nPick start point ")
 p2 (getpoint p1 "\nPick next point ")
 d1 (distance p1 p2)
 prdist (strcat "\nDistance: " (rtos d1))
)
(princ prdist)
(setq p3 (getpoint p2 "\nPick next point or RETURN if done "))
(while p3
 (setq
  d0 (distance p2 p3)
  d1 (+ (distance p2 p3) d1)
  p2 p3
  prdist (strcat "\nDistance: " (rtos d0) ", Cumulative distance: " (rtos d1))
 )
 (princ prdist)
 (setq p3 (getpoint p2 "\nPick Next Point "))
)
(setq cumd (strcat "Cumulative distance --> " (rtos d1)))
(prompt cumd)
(princ)





;-------------start dialog------------
(setq dcl_id (load_dialog "hello_sp.dcl")) ; Load the DCL file.
 (if (not (new_dialog "hello_sp" dcl_id))   ; Initialize the dialog.
   (exit)                                ; Exit if this doesn't 
                                         ; work.
 )
;------------  set values in dialog box----

(set_tile "discesa" "  ") 
(set_tile "masetto1" "  ")
(set_tile "salita" "  ")
 (set_tile "tolleranza" "  ")
(set_tile "grand_dist" (rtos d1 2 2))
(set_tile "grand_dist_" "GRAND TOTAL (CD)")
 

;------------  end - set values in dialog box----

 (start_dialog)                          ; Display the dialog 
                                         ; box.
(unload_dialog dcl_id)                  ; Unload the DCL file.


 (princ)

;------------------------

(setq lay "RH MEASURE Layer" ;; Layer
 

 )

 

(and (setq pnt (getpoint "\nSpecify Text placement point: "))
    (entmakex (list '(0 . "MTEXT")
                    '(100 . "AcDbEntity")
                    '(100 . "AcDbMText")
            (cons 8 lay)
                    (cons 1 (rtos tot2 2 2))
                    (cons 7 (getvar 'textstyle))
                    (cons 10 pnt)
            (cons 40 0.1)
              ) ;_ list
    ) ;_ entmakex
) ;_ and

 

)



;------------------------


(princ "\nType CD to run Cumulative Distance")
(princ)

Link to comment
Share on other sites

That's a dodgy bit of rounding, but this should work then

 

(defun Round (num dp / fac rm)
 (setq fac (float (expt 10 dp))
       rm  (rem (setq num (* fac num)) 1))

 (/ (cond (  (zerop rm) (fix num))

          (  (< 0.5 rm) (1+ (fix num)))

          (  (+ (/ 5 fac) (fix num)))) fac))

Link to comment
Share on other sites

How about this?

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:cd [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] *error* Round DLST PT PTLST TOT[b][color=RED])[/color][/b]
 [i][color=#990099];; Lee Mac  ~  01.03.10[/color][/i]

 [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] *error* [b][color=RED]([/color][/b]msg[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] msg[b][color=RED])[/color][/b] [b][color=#a52a2a]"*BREAK,*CANCEL*,*EXIT*"[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\n** Error: "[/color][/b] msg [b][color=#a52a2a]" **"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]    

 [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Round [b][color=RED]([/color][/b]num dp [b][color=BLUE]/[/color][/b] fac rm[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] fac [b][color=RED]([/color][/b][b][color=BLUE]float[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] [b][color=#009900]10[/color][/b] dp[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
         rm  [b][color=RED]([/color][/b][b][color=BLUE]rem[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] num [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] fac num[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   
   [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b]  [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] rm[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]fix[/color][/b] num[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
            
            [b][color=RED]([/color][/b]  [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009999]0.5[/color][/b] rm[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]1+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]fix[/color][/b] num[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
            
            [b][color=RED]([/color][/b]  [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=#009900]5[/color][/b] fac[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]fix[/color][/b] num[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] fac[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ptLst [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#a52a2a]"\nSpecify First Point: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
   
     [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#a52a2a]"\nSpecify Next Point: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ptLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       
       [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]from to[b][color=RED])[/color][/b]
             [b][color=RED]([/color][/b][b][color=BLUE]grdraw[/color][/b] from to [b][color=#009900]3[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

         [b][color=RED]([/color][/b][b][color=BLUE]reverse[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ptLst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] pt ptLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

         [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]reverse[/color][/b] ptLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

       [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] dLst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b]Round [b][color=RED]([/color][/b][b][color=BLUE]distance[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] ptlst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] ptlst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] dLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

       [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#a52a2a]"\n<< Distance: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] dLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#a52a2a]" -- "[/color][/b]
                      [b][color=#a52a2a]"Cumulative: "[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] tot [b][color=RED]([/color][/b][b][color=BLUE]rtos[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] +[b][color=RED])[/color][/b] dLst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#a52a2a]" >>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

     [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pt [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#a52a2a]"\nSpecify Point for Text: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]entmakex[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#a52a2a]"MTEXT"[/color][/b][b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]100[/color][/b] [b][color=#a52a2a]"AcDbEntity"[/color][/b][b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]100[/color][/b] [b][color=#a52a2a]"AcDbMText"[/color][/b][b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]8[/color][/b] [b][color=#a52a2a]"RH MEASURE Layer"[/color][/b][b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]10[/color][/b] pt[b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b] tot[b][color=RED])[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]40[/color][/b] [b][color=#009999]0.1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]redraw[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

:)It works great.

 

I'm trying the code you uploaded. It is so complex (at least to me) that I'm afraid to make changes.

 

any way I added a 2 2 to rtos - I hope it's in the right place. I needed to see only the two decimal digits after the point.

 

"Cumulative: " (setq tot (rtos (apply (function +) dLst) 2 2)) " >>")))
Link to comment
Share on other sites

:)It works great.

 

I'm trying the code you uploaded. It is so complex (at least to me) that I'm afraid to make changes.

 

any way I added a 2 2 to rtos - I hope it's in the right place. I needed to see only the two decimal digits after the point.

 

Yep, you added it in the right place :)

 

I get a bit carried away sometimes - the complicated bit was just for the extra effect to show the path.

 

I wasn't sure of the accuracy you wanted - so rtos with no arguments just uses your default settings.

 

Happy to help,

 

Lee

Link to comment
Share on other sites

  • 6 months later...

I'm using this code by LEE , now I need to add another feature.

 

While I select the points to measure I need to draw the path on a different layer (dotted lines in red). (A polyline with rounded angles would be great)

 

 

 

;cumulative distance
;this routine is just like the Autocad Distance command with the
;exception that it allows you to pick more than 2 consecutive points.
;the routine will display the cumulative distance and the distance
;between the last two points picked on the command line.




(defun c:cd (/ *error* Round DLST PT PTLST TOT)
 ;; Lee Mac  ~  01.03.10


(SETQ CLY (GETVAR "CLAYER"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OTM (GETVAR "ORTHOMODE"))
(setvar "orthomode" 0)
(setvar "osmode" 0)
 
 (defun *error* (msg)
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ))    

 (defun Round (num dp / fac rm)
   (setq fac (float (expt 10 dp))
         rm  (rem (setq num (* fac num)) 1)) 
   
   (/ (cond (  (zerop rm) (fix num))
            
            (  (< 0.5 rm) (1+ (fix num)))
            
            (  (+ (/ 5 fac) (fix num)))) fac))
 
 (if (car (setq ptLst (list (getpoint "\nSpecify First Point: "))))
   (progn
   
     (while (setq pt (getpoint "\nSpecify Next Point: " (car ptLst)))
       
       (mapcar
         (function
           (lambda (from to)
             (grdraw from to 3 1)))

         (reverse (setq ptLst (cons pt ptLst)))

         (cdr (reverse ptLst)))

       (setq dLst (cons (Round (distance (car ptlst) (cadr ptlst)) 1) dLst))

       (princ (strcat "\n<< Distance: " (rtos (car dLst)) " -- "
                      "Cumulative: " (setq tot (rtos (apply (function +) dLst) 2 2)) " >>"))) 

     (if (setq pt (getpoint "\nSpecify Point for Text: "))
       (entmakex (list (cons 0 "MTEXT")
                       (cons 100 "AcDbEntity")
                       (cons 100 "AcDbMText")
                       (cons 8 "RH_FDP")
                       (cons 10 pt)
                       (cons 1 tot)
                       (cons 40 0.1)
         )
       )
     )

     ))
 (princ (strcat "\nDistanza  : " tot "  **"))

 (redraw)
(SETVAR "CLAYER" CLY)
(SETVAR "OSMODE" OSM)
(SETVAR "ORTHOMODE" OTM)
 
 (princ))

Link to comment
Share on other sites

I did it this way. What do you think ?

 

I used entmakex polyline.

 

(defun c:cdt (/ *error* Round DLST PT PTLST TOT)
 ;; Lee Mac  ~  01.03.10


(SETQ CLY (GETVAR "CLAYER"))
(SETQ OSM (GETVAR "OSMODE"))
(SETQ OTM (GETVAR "ORTHOMODE"))
(setvar "orthomode" 0)
(setvar "osmode" 0)


[color=red](defun LWPoly (lst)
 (entmakex (append (list (cons 0 "LWPOLYLINE")
                         (cons 100 "AcDbEntity")
                         (cons 100 "AcDbPolyline")
                         (cons 90 (length lst))
                         (cons 70 0))
                   (mapcar (function (lambda (p) (cons 10 p))) lst))))[/color]


 (defun Round (num dp / fac rm)
   (setq fac (float (expt 10 dp))
         rm  (rem (setq num (* fac num)) 1)) 
   
   (/ (cond (  (zerop rm) (fix num))
            
            (  (< 0.5 rm) (1+ (fix num)))
            
            (  (+ (/ 5 fac) (fix num)))) fac))
 
 (if (car (setq ptLst (list (setq pt3 (getpoint "\nSpecify First Point: ")))))
   (progn
         (while (setq pt (getpoint "\nSpecify Next Point: " (car ptLst)))
       
       (mapcar
         (function
           (lambda (from to)
             (grdraw from to 3 1)))

         (reverse (setq ptLst (cons pt ptLst)))

         (cdr (reverse ptLst)));mapcar

       (setq dLst (cons (Round (distance (car ptlst) (cadr ptlst)) 1) dLst))

       (princ (strcat "\n<< Distance: " (rtos (car dLst)) " -- "
                      "Cumulative: " (setq tot (rtos (apply (function +) dLst) 2 2)) " >>"))


   
   ) ;while

   [b][color=red] (LWPoly ptlst)  [/color][/b]  
     
     (if (setq pt (getpoint "\nSpecify Point for Text: "))
       (entmakex (list (cons 0 "MTEXT")
                       (cons 100 "AcDbEntity")
                       (cons 100 "AcDbMText")
                       (cons 8 "RH_FDP")
                       (cons 10 pt)
                       (cons 1 tot)
                       (cons 40 0.1)
         )
       )
     );if

     );progn
   );if
 (princ (strcat "\nDistanza  : " tot "  **"))

 (redraw)
(SETVAR "CLAYER" CLY)
(SETVAR "OSMODE" OSM)
(SETVAR "ORTHOMODE" OTM)
 
 (princ))

Link to comment
Share on other sites

  • 8 years later...

Hi everybody, i would like to integrated the same Roundup lisp routine but in a dimension area lisp routine. but i don't know where to put it or what to modify

 

thank you.
 

(defun c:aaa ( / *error* _SelectIf _ObjectID acdoc acspc d1 d2 fieldformatting msg predicate pt )

    (setq fieldformatting "%lu2%ct4%qf1 PC ") ;; Field Formatting

    (defun *error* ( msg )
        (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )
    
    (defun _SelectIf ( msg pred )
        (
            (lambda ( f / e )
                (while
                    (progn (setvar 'ERRNO 0) (setq e (car (entsel msg)))
                        (cond
                            (   (= 7 (getvar 'ERRNO))
                                (princ "\nMissed, try again.")
                            )
                            (   (eq 'ENAME (type e))
                                (if (and f (null (f e)))
                                    (princ "\nInvalid Object.")
                                )
                            )
                        )
                    )
                )
                e
            )
            (eval pred)
        )
    )
        
    (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
          acspc (vlax-get-property acdoc (if (= 1 (getvar 'CVPORT)) 'paperspace 'modelspace))
    )
    (setq _ObjectID
        (eval
            (list 'lambda '( obj )
                (if
                    (and
                        (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE"))
                        (vlax-method-applicable-p (vla-get-utility acdoc) 'getobjectidstring)
                    )
                    (list 'vla-getobjectidstring (vla-get-utility acdoc) 'obj ':vlax-false)
                   '(itoa (vla-get-objectid obj))
                )
            )
        )
    )
            
    (setq predicate
        (function
            (lambda ( x )
                (and
                    (eq (cdr (assoc 0 (setq x (entget x)))) "DIMENSION")
                    (member (boole 4 (+ 128 64 32) (cdr (assoc 70 x))) '(0 1))
                )
            )
        )
    )                     
    
    
    (while
        (and
            (setq d1 (_SelectIf "\nSelect 1st Dimension <Exit>: " predicate))
            (setq d2 (_SelectIf "\nSelect 2nd Dimension <Exit>: " predicate))
            (setq pt (getpoint "\nPoint for Result <Exit>: "))
        )
        (vla-addmtext acspc (vlax-3D-point (trans pt 1 0))) 0.0
            (strcat
                "%<\\AcExpr "
                "%<\\AcObjProp Object(%<\\_ObjId "
                (_ObjectID (vlax-ename->vla-object d1)) ">%).Measurement>% * "
                "%<\\AcObjProp Object(%<\\_ObjId "
                (_ObjectID (vlax-ename->vla-object d2)) ">%).Measurement>% "
                "\\f \"" fieldformatting "\">%"
            )
        )
    )

    (princ)
)
(vl-load-com) (princ)

 

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...