Arepo Posted November 4, 2013 Share Posted November 4, 2013 (edited) Hello, I am trying to get a global *error* function that resets the AutoCAD variables (clayer, cecolor, etc) to their original state when ESC or ENTER is hit. Originally I had written individual error code for every individual programs but I noticed that the error code run was for the last program loaded into the drawing and not the program I was running, so not all the variables I wanted were reset, depending of the last program loaded. So now I am trying to write a global error code. I am using Autoload function to load my programs, and I noticed that if I hit ESC the first time I'm using a program in a drawing, the variables are not reset (the error function is not run). After that, with variables manually reset, it works fine, the error code is run. I also noticed that if I use Load instead Autoload to load the program, it works fine, even the first time, but I don't want to use Load for all my programs. The question is: would it be a way to make error code run the first time I use a program loaded with Autoload function? The second question I have: for a few programs I have a different error code (that deletes the last obj) that I don't want to be run for the rest of the programs. Is it possible to write a global code only for those few programs, and if yes, how to invoke it? I hope I made clear what I am trying to say. Thank you. Edited November 5, 2013 by Arepo Quote Link to comment Share on other sites More sharing options...
BlackBox Posted November 5, 2013 Share Posted November 5, 2013 I've tried several different ways to account for *error* handling, and the simplest I've come across (to my mind), is to just localize the routine's *error* handler, so that it is only temporarily defined to handles any/all *error* raised, and when the routine is done, the default *error* handler is restored automagically. Here's a quick example, storing, setting, and restoring the system variables you mentioned above... Again, this is only one of multiple ways of going about it: (defun c:FOO (/ *error* clayer cecolor) (defun *error* (msg) (and clayer (setvar 'clayer clayer)) (and cecolor (setvar 'cecolor cecolor)) (cond ((not msg)) ; Normal exit ((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit) ((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it ) (princ) ) (if (and (setq clayer (getvar 'clayer)) (setvar 'clayer "YourLayerName") (setq cecolor (getvar 'cecolor)) (setvar 'cecolor "1") ) ;;<-- do something useful ) (*error* nil) ) There's a lot to your post - I'll have to check back when I have more time for the other parts. Cheers Quote Link to comment Share on other sites More sharing options...
ymg3 Posted November 5, 2013 Share Posted November 5, 2013 Arepo, As Blackbox told you, there are numerous way to do it. Here is the one I use by Evgenyi. You simply put in errl the sysvar you wish to re-establish upon completion. ymg (defun c:foo ( / *acaddoc* *error* errl) (vl-load-com) ;;; Error Handler by ElpanovEvgenyi ; (defun *error* (msg) (mapcar 'eval errl) (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*"))) (princ (strcat "\nError: " msg)) ) (and *AcadDoc* (vla-endundomark *AcadDoc*)) (princ) ) (setq errl '("CLAYER" "OSMODE" "CMDECHO" "DIMZIN" "CECOLOR") errl (mapcar (function (lambda (a) (list 'setvar a (getvar a)))) errl) ) (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))) ) ;;<-- do something useful (*error* nil) ) Quote Link to comment Share on other sites More sharing options...
BlackBox Posted November 5, 2013 Share Posted November 5, 2013 FWIW - This line: (and *AcadDoc* (vla-endundomark *AcadDoc*)) ... Not that it really matters, but the call to EndUndoMark() Method will return Nil, which forces the AND statement to also return Nil, and can be confusing for some. While it yields the same outcome, given a valid *AcadDoc* Object, I tend to use an IF statement instead, if nothing, for the sake of 'readability'. Cheers Quote Link to comment Share on other sites More sharing options...
ymg3 Posted November 5, 2013 Share Posted November 5, 2013 ... Not that it really matters, but the call to EndUndoMark() Make sense to me. I like Evgenyi's method with eval because there is no need for variables declarations. ymg Quote Link to comment Share on other sites More sharing options...
David Bethel Posted November 5, 2013 Share Posted November 5, 2013 I've used a template like this for years as a starting point for a robust routine : [color=#8b4513];=======================================================================[/color] [color=#8b4513]; New.Lsp Jan 04, 2013[/color] [color=#8b4513]; Edit Name And SubRoutine Prefix nw_ To Ensure Unique Definitions[/color] [color=#8b4513];================== Start Program ======================================[/color] [b][color=BLACK]([/color][/b]princ [color=#2f4f4f]"\nCopyright [b][color=FUCHSIA]([/color][/b]C[b][color=FUCHSIA])[/color][/b] 1990-2013, Fabricated Designs, Inc."[/color][b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ [color=#2f4f4f]"\nLoading New v1.0 "[/color][b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]setq nw_ nil lsp_file [color=#2f4f4f]"New"[/color][b][color=BLACK])[/color][/b] [color=#8b4513];++++++++++++ Set Modes & Error ++++++++++++++++++++++++++++++++++[/color] [b][color=BLACK]([/color][/b]defun nw_smd [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]SetUndo[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq oldlay [b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"CLAYER"[/color][b][color=NAVY])[/color][/b] olderr *error* *error* [b][color=NAVY]([/color][/b]lambda [b][color=MAROON]([/color][/b]msg[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]> [b][color=BLUE]([/color][/b]getvar [color=#2f4f4f]"CMDACTIVE"[/color][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]/= msg [color=#2f4f4f]"quit / exit abort"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"\nError: *** "[/color] msg [color=#2f4f4f]" *** "[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]= [b][color=BLUE]([/color][/b]logand [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"UNDOCTL"[/color][b][color=RED])[/color][/b] 8[b][color=BLUE])[/color][/b] 8[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command [color=#2f4f4f]"_.UNDO"[/color] [color=#2f4f4f]"_END"[/color] [color=#2f4f4f]"_.U"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nw_rmd[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] nw_var '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b][color=#2f4f4f]"CMDECHO"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"MENUECHO"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"MENUCTL"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"MACROTRACE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"OSMODE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"SORTENTS"[/color] . 119[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"LUPREC"[/color] . 2[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"MODEMACRO"[/color] . [color=#2f4f4f]"."[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"BLIPMODE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"EXPERT"[/color] . 5[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"SNAPMODE"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"PLINEWID"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"ORTHOMODE"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"GRIDMODE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"ELEVATION"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"THICKNESS"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"FILEDIA"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"FILLMODE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"SPLFRAME"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"UNITMODE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"TEXTEVAL"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"ATTDIA"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"AFLAGS"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"ATTREQ"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"ATTMODE"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"UCSICON"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"HIGHLIGHT"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"REGENMODE"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"COORDS"[/color] . 2[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"DRAGMODE"[/color] . 2[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"DIMZIN"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"PDMODE"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"CECOLOR"[/color] . [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"CELTYPE"[/color] . [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]foreach v nw_var [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]getvar [b][color=GREEN]([/color][/b]car v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq nw_rst [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]cons [b][color=RED]([/color][/b]car v[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]getvar [b][color=PURPLE]([/color][/b]car v[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] nw_rst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setvar [b][color=GREEN]([/color][/b]car v[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]cdr v[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]princ [b][color=NAVY]([/color][/b]strcat [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"PLATFORM"[/color][b][color=MAROON])[/color][/b] [color=#2f4f4f]" Release "[/color] [b][color=MAROON]([/color][/b]ver[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [color=#8b4513];++++++++++++ Return Modes & Error +++++++++++++++++++++++++++++++[/color] [b][color=BLACK]([/color][/b]defun nw_rmd [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]SetLayer oldlay[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq *error* olderr[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]foreach v nw_rst [b][color=NAVY]([/color][/b]setvar [b][color=MAROON]([/color][/b]car v[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cdr v[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.UNDO"[/color] [color=#2f4f4f]"_END"[/color][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [color=#8b4513];++++++++++++ Set And Start An Undo Group ++++++++++++++++++++++++[/color] [b][color=BLACK]([/color][/b]defun SetUndo [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]zerop [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"UNDOCTL"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.UNDO"[/color] [color=#2f4f4f]"_ALL"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]logand [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"UNDOCTL"[/color][b][color=GREEN])[/color][/b] 2[b][color=MAROON])[/color][/b] 2[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.UNDO"[/color] [color=#2f4f4f]"_CONTROL"[/color] [color=#2f4f4f]"_ALL"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]logand [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"UNDOCTL"[/color][b][color=GREEN])[/color][/b] 8[b][color=MAROON])[/color][/b] 8[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.UNDO"[/color] [color=#2f4f4f]"_END"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.UNDO"[/color] [color=#2f4f4f]"_GROUP"[/color][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [color=#8b4513];++++++++++++ Make Layer Current +++++++++++++++++++++++++++++++++[/color] [b][color=BLACK]([/color][/b]defun SetLayer [b][color=FUCHSIA]([/color][/b]name / ldef flag[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]cond [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]not name[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]snvalid name[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\nBad Aurgment Passed To SetLayer - "[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]prin1 name[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]exit[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"LAYER"[/color] name[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.LAYER"[/color] [color=#2f4f4f]"_Make"[/color] name [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]setq ldef [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"LAYER"[/color] name[b][color=GREEN])[/color][/b] flag [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 70 ldef[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.LAYER"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]minusp [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 62 ldef[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command [color=#2f4f4f]"_On"[/color] name[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]= [b][color=BLUE]([/color][/b]logand flag 1[b][color=BLUE])[/color][/b] 1[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command [color=#2f4f4f]"_Thaw"[/color] name[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]= [b][color=BLUE]([/color][/b]logand flag 4[b][color=BLUE])[/color][/b] 4[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command [color=#2f4f4f]"_Unlock"[/color] name[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and [b][color=GREEN]([/color][/b]= [b][color=BLUE]([/color][/b]logand flag 16[b][color=BLUE])[/color][/b] 16[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]alert [color=#2f4f4f]"\nCannot Set To XRef Dependent Layer - Aborting"[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]quit[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_Set"[/color] name [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] name[b][color=BLACK])[/color][/b] [color=#8b4513];************ Main Program ***************************************[/color] [b][color=BLACK]([/color][/b]defun nw_ [b][color=FUCHSIA]([/color][/b]/ olderr oldlay nw_var nw_rst[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]nw_smd[b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;MAIN CODE HERE[/color] [b][color=FUCHSIA]([/color][/b]nw_rmd[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [color=#8b4513];************ Load Program ***************************************[/color] [b][color=BLACK]([/color][/b]defun C:New [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]nw_[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]if nw_ [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nNew Loaded\n"[/color][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]prin1[b][color=BLACK])[/color][/b] [color=#8b4513];|================== End Program =======================================[/color] -David. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted November 5, 2013 Share Posted November 5, 2013 This tutorial might be of interest: Error Handling Quote Link to comment Share on other sites More sharing options...
Arepo Posted November 6, 2013 Author Share Posted November 6, 2013 Thank you everybody for help. I got a few ideas, and it looks like it's working so far. BlackBox: can the default error handler you mentioned be accessed and edited in some way? Quote Link to comment Share on other sites More sharing options...
BlackBox Posted November 6, 2013 Share Posted November 6, 2013 BlackBox: can the default error handler you mentioned be accessed and edited in some way? That is not advised... The reason for temporarily redefining the default *error* handler, is to perform custom actions in the event of an error in your routine. If the default *error* handler is not properly restored, this will cause other errors to potentially not be handled properly, which can ultimately lead to a fatal error (crash). For this reason, I choose to localize my routine's *error* function, as when the routine ends, it is no longer defined (i.e., removed from scope). I hope that makes (more?) sense. Cheers Quote Link to comment Share on other sites More sharing options...
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.