Author Archives: eFi

Mac workflow: Alfred dict.cc translation

Alfred Google Translate workflow-t, ám a Google egy ideje DDOS attacknak veszi a workflow ismétlődő lekérdezéseit és ez azt eredményezi, hogy viszonylag gyorsan kizár a szolgáltatásból egy teljes napra. Nem volt mese, más fordító megoldás után kellett nézni – így akadtam rá a dict.cc-re. Innen már csak pár lépés volt Raphael Baron dict.cc-hez írt Python kódja, onnan meg Thomas Hirsch Alfredre szabott workflow-ja. Thomas megoldása sajna bedrótozta a workflowba, hogy az angol->német irányban fordítson, viszont a dict.cc angolról és németről számos más nyelvre képes fordítani, így csak egy picit kellett megpiszkálni a workflowt ahhoz, hogy angol<->magyar és angol<->lengyel irányokban is fordítson: dict_cc-en-hu dict_cc-hu-en dict_cc-en-pl dict_cc-pl-en Újabb forrás->cél nyelv hozzáadásához csak újabb script filtert kell létrehozni: dict_cc-definitions amiben csak ezeket kell cserélgetned: dict_cc-script-filter-details A workflow-t szedheted tőlem, vagy a github forkból.]]>

Mese az Excelről és a context menüről

TL;DR: 2010-es Excelnél újabb verzióban soha ne használd a Workbook_SheetBeforeRightClick() event handlert arra, hogy saját CommandBart hozz létre – helyette ott a Custom UI editor for Microsoft Office, amivel ugyan csak bedrótozott hierarchiát tudsz csinálni, viszont cserébe nem fagy majd random szénné alatta a host környezet. A dolog úgy indult, hogy egy Office update után elkezdett furán viselkedni a VBA kód pár táblában. Jó szokás szerint a hibajelenségnek semmi köze nem volt a hiba okához, a Microsoftos alkalmazásnak pedig esze ágában sem volt bármiféle notificationt küldeni, hogy neki XY kóddarabbal lenne baja, sokkal inkább a számukra már sokszor bevált utat választba, nemes egyszerűséggel vagy rommá fagyasztotta a futtató környezetet, vagy a teljes Excel UI elfelejtett a végfelhasználóval kommunikálni. Mutatom:

Excel 2010+ event handler madness from Gabor Penoff on Vimeo.

A videóban jól látszik, hogy a testData tábla kiválasztása után az megnyílik, majd az Excel előbb mintha elfelejtené a screent update-elni, később viszont teljesen meggárgyul és a saját UI elemei is megszűnnek működni. Nézzük végig, mi történik belül. A 2. kattintásra a standard context menünek kellene előbújnia, azonban én ezt elkapom és a saját cuccaimat pakolom a gyári menü helyére. Mindez úgy történik, hogy a Workbook_SheetBeforeRightClick() event handlert használom:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
    rightClickMenuShow (rightClickMenuTitle)
    Cancel = RightClickCancel
End Sub
A rightClikMenuShow() törli az előző custom menüt, majd újra létrehozza és megjeleníti:
Sub rightClickMenuShow(rightClickMenuName As String)
    RightClickCancel = True
    Call rightClickMenuDelete(rightClickMenuName)
    Call rightClickMenuCreate(ActiveSheet)
    CommandBars(rightClickMenuTitle).ShowPopup
End Sub
A törlés így néz ki:
Sub rightClickMenuDelete(rightClickMenuName As String)
    Dim bar As CommandBar
    For Each bar In CommandBars
        If UCase(Trim(bar.Name)) = UCase(Trim(rightClickMenuTitle)) Then bar.Delete
    Next bar
End Sub
Az új menü létrehozása pedig így:
Sub rightClickMenuCreate(S_Caller As Worksheet)
    Dim rightClickMenuName As String
    Dim rightClickMenuIndex As Long
    rightClickMenuName = rightClickMenuTitle
    Call rightClickMenuDelete(rightClickMenuName)
    Application.CommandBars.Add Name:=rightClickMenuName, Position:=msoBarPopup
    rightClickMenuIndex = 0
    rightClickMenuIndex = rightClickMenuIndex + 1
    CommandBars(rightClickMenuName).Controls.Add Type:=msoControlButton, Before:=rightClickMenuIndex
    With CommandBars(rightClickMenuName).Controls(rightClickMenuIndex)
        .FaceId = 263
        .Style = msoButtonIconAndCaption
        .Caption = "Excel's &Default Shortcut Menu"
        .OnAction = "ShowDefaultRightClickMenu"
    End With
    rightClickMenuIndex = rightClickMenuIndex + 1
    CommandBars(rightClickMenuName).Controls.Add Type:=msoControlButton, Before:=rightClickMenuIndex
    With CommandBars(rightClickMenuName).Controls(rightClickMenuIndex)
        .Style = msoButtonCaption
        .Caption = "Freeze me please"
        .OnAction = "myTestSub"
        .BeginGroup = True
    End With
End Sub
Röviden ennyi a jobb klikkes menüből a myTestSub() makrót elindító event handler mechanizmus. Miután ebben hozzá nem nyúlok a képernyő frissítését szabályozó Application.ScreenUpdating metódushoz, nézzük meg, mit csinál a myTestSub():
Sub myTestSub()
    Dim f As Variant
    f = Application.GetOpenFilename
    If f = False Then
        MsgBox "No file selected."
    Else
        Workbooks.Open Filename:=f, ReadOnly:=True
    End If
End Sub
Láthatóan ennek sincs köze a ScreenUpdating-hez, mégis elpusztul tőle az Excel. Miután a probléma nyilván nem egy ilyen ~20 soros toolban jött elő, pár órát elvett az életemből mire rájöttem, hogy az 2010-es verziónál frissebb Exceleknek azzal van baja, ahogyan én a right click menüt újradefiniálom a Workbook_SheetBeforeRightClick() event handlerben egy CommandBars(rightClickMenuTitle).ShowPopup() hívással. A helyes megoldás ilyenkor az, hogy ezt a popup generátort úgy ahogy van kidobod és létrehozol egy XML-t, ami a fenti két eljárás meghívásához legyártja majd az UI eleme(ke)t a jobb klikkre megjelenő context menüben:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <contextMenus>
        <contextMenu idMso="ContextMenuCell">
            <menu id="appMenu" label="engine" insertBeforeMso="Cut">
                <button id="item_id1" label="(Do not) freeze me please" onAction="myTestSub"/>
            </menu>
        </contextMenu>
    </contextMenus>
</customUI>
Ebben az esetben azonban ne felejtsd el, hogy fel kell készíteni a hívott rutinodat az IRibbonControl paraméter fogadására:
Sub myTestSub(control As IRibbonControl)
Tanulság nincs, csak ledokumentáltam 4 óra őrjöngés után a megoldást. ]]>

Autodesk Fusion 360 bug: canvas disappears on Edit Sketch command

Release 2016 february, version: 2.0.1909

The bug

Here is what I did: – created a new component – inserted a canvas – created a new sketch based on the canvas – extruded the sketch – created a new sketch on the other side of the extruded body – inserted another canvas on the secondary sketch’s plane – tried to re-edit the secondary sketch by using the secondary canvas as guide The result: Fusion 360 hides the secondary canvas which would act as the guide for my secondary sketch.

Autodesk Fusion 360 bug: second canvas disappear on edit sketch command within a component from Gabor Penoff on Vimeo.

Solution

Unfortunately I have no idea how to fix this issue. It’s just a historical issue. As it clearly visible on the screencast I made the secondary sketch first and the secondary canvas later. When I start editing the sketch the timeline rolls back to the point when the secondary canvas did not exist yet. The solution is to create the secondary canvas earlier than the secondary sketch. ]]>

2015 képekben

Január Volt sok szép napkelténk: 20150106-0520 Boldog volt minden állat: 20150108-2263 20150113-0598 20150115-2351 A sok hó dacára: 20150127-0538 megint átúszták a bátrak a Visztulát: 20150125-0657

Február

A hónap elején ennek éltünk: 20150206-0831 Meg ennek: 20150206-0872 Aztán miután hazajöttünk, egy este felmásztam a tetőre: 20150220-0555

Március

Tamás elhívott ide dolgozni: 20150304-1119 Végre megerestem Krakkóban ezt a tavat: 20150319-1174

Április

Elmentünk ide: 20150409-1389 20150412-1458 Enni ilyet: 20150410-0907 Fotózni ilyen kisembert: 20150410-0951 Nézni bután ezekre: 20150410-1421 meg csodálattal erre: 20150410-1423 csalódni ebben: 20150411-1001 Azért hazaérve teszteltünk ilyet: 20150415-1503 meg pár ilyet: 20150427-1603

Május

Jöttek a cimbik és néztük a nagy tükröt a fejünk felett itt: 20150502-1730 Kóstoltuk a helyi söröket: 20150502-1720 Felmentünk a lufival körülnézni: 20150502-1750 Jöttek a nördök: 20150522-2417 Főztünk együtt ilyet: 20150524-2427 Néztünk suhanó hangtalan gépeket: 20150530-1359 És nyárnyitó parádét: 20150530-1398

Június

Dormi ijesztően sovány lett: 20150614-2030 Kis színes virágok nyíltak a semmiből: 20150617-2044 a teraszon: 20150617-2051 Végre megmásztam a Mária templomot: 20150625--2

Július

Nagy hőség jött: 20150707-2209 és vele sok nagy vihar is: 20150708-2211 Szép volt a málna a piacon: 20150713-1484

Augusztus

Elmentünk ide: 20150816-2354 ezt csinálni: 20150817-7 meg ezt: 20150818-23

Szeptember

Megnéztük végre Petiékkel az állatkertet: 20150905-1581 és rászoktunk a rumra: 20150917-0014 Majdnem lett még egy cicánk: 20150919-2578

Október

Kutyáztunk a híd alatt: 20151001-0104 Csodálkoztunk a sosem látott alacsony Dunán: 20151003-0137 Megint elmentünk ezt inni: 20151005-0154 e mellé: 20151009-0219 Szokatlanul szép volt az ősz: 20151024-0559

November

Még november is kellemes meleg volt egy darabig: 20151114-0656 Majd leesett a hó: 20151124-0690

December

Főztünk a teraszon egy halat: 20151215-0797 aztán gyors hazamentünk: 20151229-2161 aztán vissza, az év végét ünnepelni a barátokkal: 20151231-0929]]>

Autodesk Fusion 360 bug: unexpected component deactivation

Release 2016 januári verzió: 2.0.1,870

A bug

A következőket csináltam:
  • nyitottam egy új designt
  • gyártottam 4 új komponenst
  • létrehoztam egy új, üres szülő komponenst és az előbbi 4 gyerek komponenst belemásoltam
  • aktiváltam az egyik gyerek komponenst
  • az előbb aktivált gyerek komponensen beleszerkesztettem az egyik létező Sketch-be
Az eredmény: A Sketch szerkesztés befejeztével a Fusion 360 összecsukja a komponens hierarchiát és deaktiválja a szerkesztett gyerek komponenst. Ez különösen veszélyes tud lenni, mivel ha tovább dolgozol anélkül, hogy észrevennéd, hogy már nem a gyerek komponens az aktív, akkor a továbbiakban végzett lépések nem a gyerek komponensek timeline-jára kerülnek, így lényegében lőttek az átlátható timeline historynak és utólag nagyon nehéz lesz változtatni a munkádon úgy, hogy az átlátható maradjon.

Autodesk Fusion 360 bug: end of sketch modification collapses component hierarchy and deselects active component from Gabor Penoff on Vimeo.

Megoldás

Sajna egyelőre nem tudok. Egyszer csak gondol egyet az alkalmazás és onnantól így viselkedik, de meg tépheted a hajad.]]>

Autodesk Fusion 360 bug: hierarchical component capture

Preface Évi 300 EUR-t fizetek azért, hogy ezt a szoftvert használjam. Több tucatnyi hibajelentést küldtem a gyártónak, nem sajnáltam az időt a részletes leírásra akkor sem, ha épp felforrt az agyam, mert az alkalmazás kifagyott munka közben. Dokumentáltam mindent szépen, ahogy illik. Az elején még jött tőlük pár feedback, aztán a visszajelzések szép lassan elmaradtak, én meg egyre frusztráltabb lettem ettől, különösen azért, mert egyre inkább azt érzem, hogy fizetek azért, hogy bétatesztelhessek. A rengeteg hibája ellenére Mac OS X-en a Fusion 360 még mindig messze a legkényelmesen kezelhető CAD/CAM alkalmazás, azonban kezdem azt érezni, hogy pár komponensnél komplexebb modellek összeállításához még mindig csak idegnyugtató használatával együtt alkalmas.

Release

2016 januári verzió: 2.0.1,870

A bug

A következőket csináltam:
  • nyitottam egy új designt
  • létrehoztam négy darab, egymástól független gyerek komponenst
  • csináltam egy üres szülő komponenst és a négy gyerek komponenst bepakoltam a szülő komponensbe
  • kinyitottam egy korábbi designt
  • az új designből az 1+4 komnponenst tartalmazó hierarchiát átmásoltam a régi designba
  • a régi designban a 4 gyerek komponenst a megfelelő pozícióba mozgattam
  • a Ground paranccsal megpróbáltam rögzíteni a komponensek pozícióját
Az eredmény: a ground parancs az új designban kreált elrendezést rögzíti ahelyett, hogy a régi designban utoljára beállított komponens pozíciót tárolná el.

Autodesk Fusion 360 bug: capture component position scatters hierarchical components from Gabor Penoff on Vimeo.

Megoldás

Sajna egyelőre nem tudok. Egyszer csak gondol egyet az alkalmazás és onnantól így viselkedik, de meg tépheted a hajad.]]>

Excel VBA: Application.Evaluate – Error (2015|2029)

Application.Evaluate() metódusával és a rohadék a nem túl beszédes "Error 2015" vagy "Error 2029" stringeket adná vissza cserébe, akkor ne a formulákban keresd a hibát, hanem azt nézd meg, hogy a kiértékelés forrásaként használt képlet és az aktív workbook referenciastílusa megegyezik-e. Ha nem, akkor állítsd át az

Application.ReferenceStyle = (xlA1|xlR1C1)
értékadással és problem solved, a redmondi felelősök meg süllyedjenek el szégyenükben a gusztustalan workaroundjukkal együtt.]]>