vonski

[ZWCad 2019] Zamrożenie wszystkich warstw oprócz aktywnej

Recommended Posts

Witam,

 

Jestem świeżo po migracji ze starego Autocada na ZwCAD 2019 Pro. Większość rzeczy już ogarnąłem, ale nie działa mi jedna z aplikacji, których często używałem. Miałem napisanego (nie przeze mnie, taki mądry nie jestem :) ) takiego lispa:

(defun c:F ()
(command "-layer" "f" "*" "")
)
 

I po wciśnięciu komendy "f" zamrażało mi wszystkie warstwy poza aktywną. Niestety obecnie to nie działa. 

 

Pytanie:

- czy jest jakaś inna forma zamrożenia (chodzi mi właśnie o zamrożenie, nie zablokowanie) wszystkich warstw poza aktywną? 

- czy można tego lispa jakoś zmodyfikować? 

 

I jeszcze pytania z innej beczki: gdzie dodaje się ścieżkę do aktywowania dodatkowego katalogu z szablonami kreskowań? 

 

 

z góry dzięki za pomoc

Marcin

 

 

 

Share this post


Link to post
Share on other sites

Jeżeli używasz polskiej wersji to potrzebujesz jeszcze podkreślenia przed -layer

U mnie wprawdzie na wersji EN ale zadziałało takie coś:

(defun c:f() (command "_-layer" "f" "*" ""))

 

Share this post


Link to post
Share on other sites

W c# mogłoby być tak:

 		/// <summary>
        /// Zamraża wszystkie warstwy oprócz aktywnej
        /// </summary>
        public static void Frezealllate()
        {
            try
            {
                // Get the current document and database
                zza.Document acDoc = zza.Application.DocumentManager.MdiActiveDocument;
                zzd.Database db = acDoc.Database;

                // Start a transaction
                using (zzd.Transaction acTrans = db.TransactionManager.StartTransaction())
                {
                    // Open the Layer table for read
                    zzd.LayerTable TablicaWarstw;
                    TablicaWarstw = acTrans.GetObject(db.LayerTableId,
                                                    zzd.OpenMode.ForRead) as zzd.LayerTable;                 


                    foreach (zzd.ObjectId warstwa in TablicaWarstw)
                    {
                        zzd.LayerTableRecord acLyrTblRec;
                        acLyrTblRec = acTrans.GetObject(warstwa, zzd.OpenMode.ForWrite) as zzd.LayerTableRecord;
                        if (warstwa != db.Clayer)
                        {                            
                            acLyrTblRec.IsFrozen = true;
                        }
                        
                    }

                    // Save the changes and dispose of the transaction
                    acTrans.Commit();
                }
            }
            catch (System.Exception ex)
            {               
                zza.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.ToString());
            }
        }

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now