Parikon Opublikowano 11 Kwietnia 2017 Zgłoś Opublikowano 11 Kwietnia 2017 Potrzebuję pomocy. Jak zmusić ZwCAD, żeby nie wstawiał swojej ikonki w lewym górnym narożniku okna nakładki. Mam własny plik *.ico i chciałbym go użyć.
kruszynski Opublikowano 11 Kwietnia 2017 Zgłoś Opublikowano 11 Kwietnia 2017 Nie próbowałem tego do tej pory, ale postaram się czegoś więcej dowiedzieć. A może Pan podesłać jakiś przykład? jakieś okno choćby puste , albo screena?
Parikon Opublikowano 11 Kwietnia 2017 Autor Zgłoś Opublikowano 11 Kwietnia 2017 Może zatem podam przepis jak utworzyć okienko w C# działające w ZwCAD. Być może ktoś się skusi i zacznie tworzyć nakładki w tej technologii, a przy okazji dojdziemy do tego jak zaimplementować własną ikonkę. Aby utworzyć proste okno otwierane w ZwCAD wystarczy zainstalować VS2017 Community. Przy instalacji wybrać tylko potrzebne komponenty czyli w zasadzie NetFramework. Wybrać nowy projekt i w szablonach C# > klasyczny pulpit systemu Windows > Biblioteka klas (.Net Framework). W tym miejscu musimy wybrać wersję Framework-u. Ja wybieram 4.5. Nadajemy nazwę projektowi VS tworzy solucję ( rozwiązanie) w którym mamy plik class1.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ClassLibrary2 { public class Class1 { } } Następnie dodaję dodatkowe odwołania, których brakuje. są to: System.Xaml oraz WindowsFormsIntegration oraz z katalogu ZwCADa ZwDatabaseMgd.dll oraz ZwManaged.dll VS tworzy solucję ( rozwiązanie) w którym mamy plik Kodu w pliku Class1.cs nie zmieniamy W menu Projekt wybieramy >Dodaj formularz Windows Form Do rozwiązania zostanie dodane okienko Windows form To okienku ma standardową ikonkę, którą potem ZWCAD podmienia na własną. Klikając PKM na to okienko lub wciskając F7 otwieramy plik Form1.cs w którym mamy następujący kod using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ClassLibrary2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } Dodaje jeszcze do rozwiązania kontrolkę WPF W menu Projekt wybieramy >Dodaj kontrolkę użytkownika i wybieramy szablon Kontrolka użytkownika (WPF) Nadajemy kontrolce nazwę W moim przypadku jest to mykon <UserControl x:Name="mykon" x:Class="ClassLibrary2.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:ClassLibrary2" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid> </Grid> </UserControl> Teraz wystarczy wrócić do pliku Form1.cs i odpowiednio go zmodyfikować using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using zzr = ZwSoft.ZwCAD.Runtime; using zza = ZwSoft.ZwCAD.ApplicationServices; namespace ClassLibrary2 { public partial class Form1 : Form { public Form1(UserControl1 mykon) { InitializeComponent(); System.Windows.Forms.Integration.ElementHost wg = new System.Windows.Forms.Integration.ElementHost(); wg.AutoSize = true; wg.Dock = DockStyle.Fill; wg.Child = mykon; this.Controls.Add(wg); } } public class Command { [zzr.CommandMethod("WG_Hello_World", zzr.CommandFlags.Modal)] public void autocadokno() { UserControl1 mykon = new UserControl1(); Form1 form = new Form1(mykon); zza.Application.ShowModalDialog(form); } } } Teraz wystarczy skompilować rozwiązanie i w katalogu z rozwiązaniem szukać katalogu bin, a w w nim pliku ClassLibrary2.dll poleceniem netload załadować plik i komendą WG_Hello_World uruchomić okienko, które przyjmie ikonkę standardową ZwCAD-a s1016 i dmatusz3 2
Parikon Opublikowano 12 Kwietnia 2017 Autor Zgłoś Opublikowano 12 Kwietnia 2017 Temat do zamknięcia. Znalazłem rozwiązanie. string sciezka = moje_metody.sciezka_do_katalogu() + @"\images\favicon.ico"; Form1.ActiveForm.Icon = new System.Drawing.Icon(sciezka); Ważne jest aby kod użyć po otwarciu się okienka, a nie przed. Gdyż w przeciwnym wypadku pojawi się ikona ZwCAD-a wstawienie tego kodu tutaj: public class Command { [zzr.CommandMethod("WG_Hello_World", zzr.CommandFlags.Modal)] public void autocadokno() { UserControl1 mykon = new UserControl1(); Form1 form = new Form1(mykon); string sciezka = moje_metody.sciezka_do_katalogu() + @"\images\favicon.ico"; form.Icon = new System.Drawing.Icon(sciezka); zza.Application.ShowModalDialog(form); } } nie da oczekiwanego efektu. s1016 i dmatusz3 2
dmatusz3 Opublikowano 12 Kwietnia 2017 Zgłoś Opublikowano 12 Kwietnia 2017 Dziękuję bardzo za informacje i za całkiem fajny kawałek wiedzy.
Rekomendowane odpowiedzi