在GMS3中,对话图形的部署有变化吗?
我在DM对话框中广泛使用图形元素,主要用于视觉反馈.尽管我在GMS1和GMS2中成功使用了这些,但我尚未在GMS3中正确地表现这些作用.我想知道我是否正在不正确部署它们.下面的示例脚本说明了我的两个主要问题,即图形元素的大小及其关联的位映射之间的不匹配,以及对240或RGB的位映射值(240,240,240)的奇怪对比度映射(到黑色): class ModelessDialogWithGraphic : UIFrame { Object Init(Object self) { TagGroup dialogSpec = DLGCreateDialog(""); TagGroup dialogItems = dialogSpec.DLGGetItems(); Number graphicW = 256; Number graphicH =
4 2024-03-31
编程技术问答社区
在GMS 2.x和GMS 1.x中关闭一个模式对话框?
我有一个需要3个选项的对话框,我已将其作为按钮实现.通过模态对话框最好提供.我有这样的代码: class testDialog : uiframe { void OnOne( object self ) { Result( "Doing one\n" ) self.close() } void OnTwo( object self ) { Result( "Two.\n" ) self.close() } void OnThree( object self ) { Result( "Three.\n" ) self.close() } } void ThreeButtonDialog(String description) { TagGroup dialog_items TagGroup dialo
16 2023-11-18
编程技术问答社区
如何在dm-script中创建一个旋转箱?
我想在DM-Script中的模态/无模式对话框上创建一个旋转框,这使用户可以通过单击向上或向下箭头按钮(即旋转按钮)来增加或降低文本字段中的数值. 是否有适当的方法来创建这样的旋转框?如果您分享一些智慧,这将不胜感激.非常感谢您. 解决方案 没有针对脚本对话的"旋转控制". 但是,您可以通过按下按钮来建立和安排代理自旋控制.这有点粗糙,但是以下代码创建了以下内容: Class CMySpin : UIFrame { TagGroup CreateDLGTgs( object self ) { TagGroup DLGtgs, DLGItems DLGtgs = DLGCreateDialog( "Test", DLGItems ) TagGroup upButton = DLGCreatePushButton( "U", "OnPushUp" ).DLGExternalPadding(0,-5)
18 2023-11-11
编程技术问答社区
如何将tif校准导入DM
我们需要在数字仪表板中处理FEI和Zeiss工具的SEM图像.它们被存储为TIF.数字仪可以读取2D TIF,但图像在x,y方向上似乎未校准.是否有任何输入插件可以传输校准信息?另外,我可以想象校准可以直接从流中红色.是否有人对偏移量存储在TIF流中有清晰的想法?我对TIF的组织并不熟悉,我知道存在一些变化.特别是,FEI和Zeiss TIF的组织方式不同. 解决方案 FEI和Zeiss似乎都以自己的自定义ASCII文本标签存储校准信息.按照 下面的脚本对FEI和Zeiss图像都可以使用以下信息: fei 大小信息以文本形式: [Scan] PixelWidth=8.26823e-010 PixelHeight=8.26823e-010 这指定了[米] 中的像素大小 蔡司 大小信息以文本形式: AP_HEIGHT Height = 343.0 nm AP_WIDTH Width = 457.3 nm 这指定了FOV大小. // Au
54 2023-10-21
编程技术问答社区
如何从TVIPS相机导入tif校准到DM中
我目前正在将Tolt摄像头与软件EM-Menu一起获取TEM图像.当我使用DigitalMicrograph(DM)分析数据(TIF文件)时,出现一些问题,因为DM无法使用校准.我知道之前已经回答了类似的问题:如何将TIF校准导入DM .但是TIF文件的校准存储在X分辨率和y分辨率(合理类型,值相同)中,这与FEI和Zeiss不同.我试图在中修改代码. >,但是我得到的是X分辨率和Y分辨率的偏移,而不是实际价值.我不熟悉如何将TIF文件中的特定偏移值(在这种情况下为X分辨率的偏移量为82110,Y Resoltuion的偏移量为82110).以下是我从提出的问题中修改的代码.任何建议都非常感谢. // Auxilliary method for stream-reading of values // BmyGuest's March 10, 2016 code modified to read FEI TEM TIF // Import and calibrate TVIPS Tiff
16 2023-10-21
编程技术问答社区
如何从TIFF文件(如果用记事本查看)中被文本包围的具体行中获取数字,并在数码显微照片的脚本中使用它?
更新#2链接到tiff文件(需要行是135)(更新#1) 亲爱的stackoverflow用户, 首先,我需要提到的是我是业余编程,但我欣赏编码可能性并尝试在工作中利用它们. 在我们的实验室中,我们使用Zeiss显微镜获取图像,该显微镜以Tiff格式保存图像,如果在记事本中查看,则以文本为单位.因此,当您将TIFF映像放入数字显微照片中时,它不会被校准,并且必须手动校准每个图像. 另一方面,在这些TIFF文件中,有一行(其编号是固定的,但与显微镜之间的数字不同),像素大小看起来像这样: "像素尺寸= 0.6 nm" 我的想法是,如果我可以从这一行中提取数字并将其放入脚本中,以声明每个开放式图像的尺寸 - 它将节省很多时间. 我做出了几个步骤: Image img img.GetFrontImage() While(img.ImageIsValid()) {Number pixelsize pixelsize = 0.5 img.imagesetdim
10 2023-10-21
编程技术问答社区
DM-脚本。提取可变/未知结构的TagGroups
我的任务似乎真的很容易:使用TagGroup并将树结构和未知结构的数据提取到结果日志中.因此,我想获取要在结果中显示的孩子的名称和值以及所有名称和价值.我该怎么做? i具有以下(示例)标签结构: 文档写入TagGroup,还包含一个使用TagGroupGetTagType()的示例.然后可以使用返回的值查找结构.我编写并执行了以下脚本: for(number i = 0; i
2 2023-10-14
编程技术问答社区
怎样才能使外部应用程序与DigitalMicrograph脚本同步?
这个问题的灵感来自问题'命令行呼叫脚本' . 一个人如何编写在应用程序中的"触发事件" 其他的脚本?? 即.某些脚本功能应由外部应用程序触发. 解决方案 脚本语言在当前状态下没有提供许多"外部"接口. 可以将召集到具有命令LaunchExternalProcess的外部进程,并等待该过程完成,但是没有直接的方式用于外部进程 in in ,即在数字仪表板中启动脚本化. 但是,可以将系统的文件系统用作消息队列来解决该问题.为此,请在背景中运行一个脚本,该脚本会定期检查某个文件是否存在,并在要在数字仪表中触发脚本化时,请使用 external 应用程序创建此类文件.文件内容(如果是简单的文本文件)也可以用于在两个应用程序之间传输信息. 这是一个示例脚本,它将等到root文件夹中的文件Trigger.txt出现.支票每10秒进行一次. class WaitForExternal { string triggerFilePath number
36 2023-10-13
编程技术问答社区
如何将ASCII数组(图像)转换为单个字符串
我的元数据存储在HDF5文件中的8位无符号数据集中.导入DM后,它变为1*长度尺寸的2D图像.每个"像素"存储对相应值的ASCII值. 要进行进一步的处理,我必须将ASCII数组转换为一个字符串,然后将其进一步转换为TagGroup.这是我当前做的愚蠢方法(像素的像素): String Img2Str (image img){ Number dim1, dim2 img.getsize(dim1,dim2) string out = "" for (number i=0; i
24 2023-09-30
编程技术问答社区
要在一个监听器中创建一个对象(某个类)。
我正在创建一个脚本并遇到麻烦. 是否可以从侦听器中创建(某些类)的对象? 我尝试了,但我会遇到一个错误:``'找不到''. 我想做类似: 的事情 class ONE { class_ONE_code } class TWO { object o = alloc(ONE) } 当我执行另一个侦听器时,我需要它来创建一个新的侦听器. 解决方案 您想做的肯定是可能的.您的代码中很可能有语法错误.例如,您对第二类的实现无效,因为在类代码的"成员声明"部分中不能初始化诸如" O"之类的成员变量.这只能在类方法中完成,如下示例代码所示. . class One { void DoClassOneAction(Object self) { OKDialog("Class One action executed."); } } class Two { Object oneInstance; vo
20 2023-05-09
编程技术问答社区
如何将一个.dm3文件(带注释和比例条)转换成.jpg/jpeg图像?
我想知道如何将DM3文件转换为.jpg/jpeg图像?图像上有测试注释和比例尺.我设置了一个脚本,但它总是显示"格式不能包含要保存的数据".可以通过文件/批次转换函数完成.因此,如何在脚本中实现相同的功能?谢谢 image test:=IntegerImage("test",2,1,100,100) test.ShowImage() image frontimage:=GetFrontImage() string filename=getname(frontimage) imagedisplay disp = frontImage.ImageGetImageDisplay(0) disp.applydatabar() ImageDocument frontDoc = GetFrontImageDocument() string directoryname, pathname number length if(!SaveAsDialog("","Do Not Change Me"
28 2023-04-20
编程技术问答社区
在使用监听器时,查看哪个像素发生变化的最快速方法
我试图在使用STEM的每个扫描像素上获取EDS光谱. 我正在使用EDSStartAcquisition( 2048, 10,fexposure*2, 1)命令,并且 我已将以下简单侦听器对象附加到显示的1D频谱图像中: string messagemap = "data_value_changed:MyImageAction" Class MyListenerClass1 { String event_desc; MyListenerClass1(Object self); //Result("\n"); ~MyListenerClass1(Object self);// Result("\n"); Void MyImageAction(Object self, Number e_fl, Image Img) { ImageGetEventMap().De
24 2023-04-20
编程技术问答社区
如何以全速获取帧?-图像事件监听器似乎在每个事件后都没有执行。
我的目标是在View Mode(实时获取)中从GIF摄像机中读取1个像素,并在每次更新数据时将其保存到文件中.该相机表面上每0.0001秒更新一次,因为这是最小获取时间数字显微照片,让我可以在此相机中选择视图模式. 我可以将图像事件侦听器连接到摄像机的实时图像,并带有消息映射(messagemap = "data_changed:MyFunctiontoExecute"),并且MyFunctionTo execute已成功运行,为我提供了一个具有许多像素值的文件. . 但是,如果我让此事件侦听器运行一秒钟,我只能获得接近100个像素值,当我期望接近10,000时(如果每0.0001秒更新一次实时图像). 这是因为我认为实时图像没有尽快更新? 解决方案 事件列表肯定在每个事件中都执行. 但是,高速摄像机的实时播放将几乎在每个获取框架上都无法更新.它将执行某种累积或采样显示.确切的答案将取决于您所使用的确切系统和制作的配置. 应该注意的是,通常只能
8 2023-04-20
编程技术问答社区
如何启用-禁用对话对象中的元素-DLGEnabled
为什么以下脚本不用按下按钮禁用? class ElementEnableTest : UIFrame { void Action( object self ) { self.LookUpElement("StopButton").DLGEnabled(0); result( "button clicked\n" ); }; ElementEnableTest( object self ) { TagGroup tgDialog = DLGCreateDialog( "" ); TagGroup tgButton = DLGCreatePushButton("stop","Action"); tgButton.DLGIdentifier("StopButton"); tgDialog.DLGAddElement( tgButton); self.
22 2023-04-14
编程技术问答社区
快速累积总和?
菜单命令"卷>投影>沿z的项目"与脚本相比(即使使用固有变量)确实很快. z方向的3D图像体积为512x512x200的累积总和(投影) 8秒相比.通过使用脚本.除了使用choosemenuitem()? 外,是否有直接访问此脚本函数 脚本示例显示差异: // create an image of 512x512x200, assign random numbers image img := exprsize(512, 512, 200, random()); img.SetName( "test" ); img.ShowImage(); // number start_tick, end_tick, calc_time; // do volume projectin with menu command : Volume>Project>Project Along Z start_tick = GetHighResTickCount(); ChooseMenuItem
50 2023-04-13
编程技术问答社区
DigitalMicrograph下的线程大师
我已经在数字仪表板上创建了两个线程,并在执行脚本后立即执行. 我想要一些不同的东西. 让我们想象两个线程的两个按钮(启动和停止线程). 如何仅在按下按钮时添加代码才能激活线程? ,如果您对我有代码的代码,那将非常有帮助. 解决方案 有几件事要考虑: 您无法从uiframe对象中分配新对象. (更准确地说:从UI操作所调用的方法中.您可以在strusentor或启动时使用init()方法分配F.E.)因此,您可以事先分配它们,然后让Uiframe对象知道它们. 您通常希望uiframe对象知道线程对象,也希望螺纹对象知道uiframe对象. (以便如果线程对象中的某些东西需要它,则UI可以更改.) 将对象作为对象的成员变量有点危险,因为只有在释放"保持"对象后才能释放这些对象.如果两个对象将每个对象作为成员变量固定,那么您处于锁定状态!因此,使用弱参考:仅保留 objectId 数字作为成员变量并在需要时查看对象. 以下代码示例应为您提供一个
18 2023-04-06
编程技术问答社区
从Windows命令行调用脚本
是否可以从Windows命令行中调用数字显微照片中的脚本?对于DM. 解决方案 否,对于GMS 2或更低的GMS,这是不可能的.在数字电视剧中没有命令行参数. 但是,如果要在DM启动时自动运行脚本,则可以通过安装脚本为插件(.gtk文件)来执行此操作. 其他解决方案 来自 gms 3.0.1 向后,该应用程序有一个可选的启动参数. 您可以键入(在命令提示符中): DigitalMicrograph.exe /ef "test.s" 在应用程序中启动脚本test.s. 类似,您可以输入 之类的内容 DigitalMicrograph.exe /es "scriptcommand" 在应用程序中直接执行脚本线scriptcommand. 不幸的是,GMS的早期版本没有此选项. 注意:当您调用DigitalMicrograph.exe时,当应用程序已经运行时,它将再次启动程序,而是激活已经运行的应用程序.因此,这可以用于在已经
86 2023-03-22
编程技术问答社区
有没有可能让DigitalMicrograph脚本对象得到图像上ROI变化的通知?
数字仪脚本文档暗示了可用于将各种事件的脚本对象通知脚本对象的各种类型的侦听对象.特别是,ImageDisplay对象对关键侦听器具有明确的支持,因此当将击键事件定位于特定的图像显示时,可以通知脚本对象.是否可以收到通知,即通过类似机制在大小或位置上更改图像上的ROI? 解决方案 是的.实际上,就ROI而言,有两种可能性. 第一个选项:收听特定的ROI 数字电视剧中的任何ROI都有唯一的ID号.与下面的脚本一样,您可以将侦听器添加到该特定的ROI ID.请注意,可以同时将相同的ROI放置在多个成像播放上. ("链接的Rois").只要没有发布ROI对象,连接的侦听器对象就不会发布,但是您也可以明确删除连接. Class myRListen : object { myRListen( object self ) { Result( "\n myRListen " + self.ScriptObjectGetID() + " created.\n" ); }
40 2023-03-11
编程技术问答社区
如何在创建的对话框中用DLGCreateImagePopup选择一个打开的图像
我与dlgcreateimagepopup创建一个对话框,以选择打开的图像.但是选择图像后,我无法为该图像做任何事情.如何获取所选图像的图像ID或名称? 解决方案 如果您想作为摆姿势对话框执行此操作(即单击确定按钮后获取图像),则可以按照以下方式进行操作: Class CMyDLG : UIframe { TagGroup DLG,DLGItems,imgPop object Init(object self) { DLG = DLGCreateDialog("Test",DLGItems) imgPop = DLGCreateImagePopup() DLGItems.DLGAddElement( imgPop ) return self.super.init(DLG) }
22 2022-11-27
编程技术问答社区
如何从一个数据集中任意提取一个特定的图像子集?
最近我打算操纵一堆图像,目标是从那里提取特定的切片子集,例如,甚至甚至是奇数或任意索引,然后将它们保存到另一个数据集中. 在DM中,"卷"菜单中有许多有用的功能,但不幸的是,它们无法真正完成我想做的事情. 我只是想知道这个想法是否可以通过脚本实现. 非常感谢您提前的帮助. 解决方案 您可以通过两种方法进行操作,其中一种仅适用于3D的数据,通常比另一个更慢,但更灵活. 正如您一直在要求 intunary 子采样一样,我从该选项开始,但是第二个选项更有可能为您提供想要的东西:正交,常规 subsmpling . 如果您很着急,则简短的答案是:使用SliceN命令. 1)使用表达式(任意子采样) 可以解决 image data(img)中的单个像素位置 使用符号 img[ X, 0 ] ...对于位置的1D数据X img[ X, Y ] ...对于位置的2D数据X/Y img[ X, Y, Z ] ...对于位置的3D数据X/Y/Z
28 2022-11-25
编程技术问答社区