zoukankan      html  css  js  c++  java
  • 3D Slicer Debug or Dev-170918

    1.the relationship between module & extension?

    Slicer的plus-in机制不必多谈。下面仅初步谈论Module和Extension的关系,并就创建和调试过程中的一些细节问题进行总结。
    • Extension是实现一个功能的实体,可以包括若干的module
    • 每一个module都是实现某种特定功能的单位
    总而言之,一个Extension包括很多module,每个module只实现整体功能的某部分细节。这样有一个好处,开发人员可以一步一步添加自己的功能模块,且各部分功能模块互相独立。这使得整个项目具备了独立性、并发性。

    2.如何创建Extension及module?

    仍然遵循之前的规则:
    • 利用ExtensionWizard
    • 在Extension基础之上添加module
    • 仅研究Loadable Module(可加载模块)
    2.1 利用Extension Tools创建Extension名和Extension目录存放的位置
           
    2.2 利用Extension Edit向Extension中添加Module
              
    2.3 可以通过select Extension查看其中的内容
    2.4 通过Extension顶层的CMakeLists.txt文件体会管理各个module
     1 cmake_minimum_required(VERSION 3.5)
     2 project(IGSdev)
     3 #-----------------------------------------------------------------------------
     4 # Extension meta-information
     5 set(EXTENSION_HOMEPAGE "http://slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/IGSdev 
     6 ")
     7 set(EXTENSION_CATEGORY "IGSdevTest")
     8 set(EXTENSION_CONTRIBUTORS "John Doe (AnyWare Corp.)")
     9 set(EXTENSION_DESCRIPTION "This is an example of a simple extension")
    10 set(EXTENSION_ICONURL "http://www.example.com/Slicer/Extensions/IGSdev.png 
    11 ")
    12 set(EXTENSION_SCREENSHOTURLS "http://www.example.com/Slicer/Extensions/IGSdev/Screenshots/1.png 
    13 ")
    14 set(EXTENSION_DEPENDS "NA") # Specified as a space separated string, a list or 'NA' if any
    15 #-----------------------------------------------------------------------------
    16 # Extension dependencies
    17 find_package(Slicer REQUIRED)
    18 include(${Slicer_USE_FILE})
    19 #-----------------------------------------------------------------------------
    20 # Extension modules
    21 add_subdirectory(IGSReader)
    22 add_subdirectory(IGSWritter)
    23 ## NEXT_MODULE
    24 #-----------------------------------------------------------------------------
    25 include(${Slicer_EXTENSION_GENERATE_CONFIG})
    26 include(${Slicer_EXTENSION_CPACK})
    我们可以知道两个事:
    1.Extension依赖项(slicer,将独立拓展与主框架联系在一起)。
    2.Extension管理模块就是通过简单的add_subdirectory实现的。

    3.如何调试Extension及module?

    生成*.sln仍然采用之前的方法:
    • CMake构建项目,生成解决方案*.sln。(后面我也会介绍到,这里的解决方案是指Extension整个功能,其内部包含独立的项目module)
    • Slicer.exe --VisualStudio打开*.sln文件,生成解决方案。(顶层Extension+bin+CMakefile+Modules...+lib+Test+x64文件夹。其中,各个module都有自己独立的文件夹,lib是应用Plus-in机制的指定文件夹)
    其实,这个环节还没有完全想清楚,只能一点点摸索,一点点研究。
    对于其中的一个模块,其在文件目录 以及 解决方案中的分布略不同:
        
    在解决方案中,大概可以分为两类qSlicer(name)Module(func)、vtkSlicer(name)Module(func):
    3.1 qSlicer(name)Module(func)
        
    初步看,qSlicer部分用于图形框架搭建。
    3.2 vtkSlicer(name)Module(func)
      
    初步看,vtkSlicer部分用于实现功能算法。三个项目实际上说的是一个事,就是Logic~~
  • 相关阅读:
    Seven ways to improve example-based single image super resolution【阅读笔记】
    Perceptual Losses for Real-Time Style Transfer and Super-Resolution【阅读笔记】
    Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network【ESPCN】【阅读笔记】
    Image Super-Resolution Using Deep Convolutional Networks【SRCNN】【阅读笔记】
    CAD绘制剖面图的详细步骤和方法
    【场景编辑工具】如何快速在倾斜模型上添加人工模型完成场景搭建?
    【工具分享】DEM高程数据爬取工具
    河长制方案优化
    根据三个点的坐标计算其夹角
    Shell脚本中大小关系判断[大于、小于、等于、不等于...]
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14235635.html
Copyright © 2011-2022 走看看