diff --git a/.gitignore b/.gitignore index 7b7827da..d620c148 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ lib/ coverage/ .env .idea/ - +*.configStore/ +dist/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ca7ca4d5..63a9874f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,9 +47,9 @@ Every change must be tested with proper unit tests. ### Build Instructions -See sub Readme files in typescript/packages, typescript/examples or python/ for more information about build instructions. +See Readme file for more information about build instructions. -> Note: It is a good idea to `npm install` after each `git pull` as dependencies may have changed. +> Note: It is a good idea to `pnpm install` after each `git pull` as dependencies may have changed. ### Making and Testing Changes 1. Make source code changes on a new Git branch diff --git a/LICENSE.md b/LICENSE.md index 77dfb504..a76508ea 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright © 2023 Bentley Systems, Incorporated. All rights reserved. +Copyright © 2024 Bentley Systems, Incorporated. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index fce39937..118ee019 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Besides, a typescript web application example is available to show how to create Reality data utils to upload and download results -- [Reality Data utils](./typescript/packages/reality-data-transfer/README.md) +- [Reality Data transfer utils](./typescript/packages/reality-data-transfer/README.md) All the packages are available in python, except Reality Management @@ -31,5 +31,5 @@ All the packages are available in python, except Reality Management 1. Clone repository (first time) with `git clone` or pull updates to the repository (subsequent times) with `git pull` 2. Install dependencies: `pnpm update` or `pnpm install` -3. Build source: `pnpm build` -4. Run unit tests : create a .env file based on template.env, then : `pnpm coverage` \ No newline at end of file +3. Build source: `npm run build` +4. Run unit tests : create a .env file based on template.env, then : `npm run coverage` \ No newline at end of file diff --git a/typescript/examples/code-samples/README.md b/typescript/examples/code-samples/README.md index 734ae56e..9e85e6d6 100644 --- a/typescript/examples/code-samples/README.md +++ b/typescript/examples/code-samples/README.md @@ -30,7 +30,7 @@ To build and run the source code locally you will need a few things: - Build the project ```sh - pnpm run build + npm run build ``` - Create a new `.env` file, based on `template.env`. Fill in the required fields in the `.env` configuration file. @@ -40,9 +40,16 @@ To build and run the source code locally you will need a few things: - Run reality data creation example +- Run context capture example + + ```sh + cd examples/code-samples + npm run start-cc-example + ``` + ```sh cd examples/code-samples - npm run start-rd-example + npm run start-data-example ``` - Run 2d objects detection example @@ -52,16 +59,16 @@ To build and run the source code locally you will need a few things: npm run start-o2d-example ``` -- Run 3d lines detection example +- Run reality conversion example ```sh cd examples/code-samples - npm run start-l3d-example + npm run start-rcs-example ``` -- Run context capture example +- Run 2d segmentation example ```sh cd examples/code-samples - npm run start-cc-example - ``` + npm run start-s2d-example + ``` \ No newline at end of file diff --git a/typescript/examples/code-samples/package.json b/typescript/examples/code-samples/package.json index 9bfb1a67..da517bd0 100644 --- a/typescript/examples/code-samples/package.json +++ b/typescript/examples/code-samples/package.json @@ -8,11 +8,11 @@ "clean": "rimraf lib build .rush", "lint": "eslint ./src --ext .ts,.tsx ", "lint-fix": "eslint ./src --fix --ext .ts,.tsx", - "start-cc-example": "node ./lib/ContextCapture.js", - "start-l3d-example": "node ./lib/Lines3D.js", - "start-o2d-example": "node ./lib/Objects2D.js", + "start-modeling-example": "node ./lib/Modeling.js", "start-data-example": "node ./lib/DataTransfer.js", + "start-o2d-example": "node ./lib/Objects2D.js", "start-rcs-example": "node ./lib/RealityConversion.js", + "start-s2d-example": "node ./lib/Segmentation2D.js", "coverage": "", "integration-tests": "" }, diff --git a/typescript/examples/code-samples/src/DataTransfer.ts b/typescript/examples/code-samples/src/DataTransfer.ts index 38378c7d..2d63b22d 100644 --- a/typescript/examples/code-samples/src/DataTransfer.ts +++ b/typescript/examples/code-samples/src/DataTransfer.ts @@ -8,15 +8,17 @@ import { RealityDataTransferNode, defaultProgressHook } from "@itwin/reality-dat import { RealityDataType } from "@itwin/reality-capture-common"; import { NodeCliAuthorizationClient } from "@itwin/node-cli-authorization"; - async function runRealityDataExample() { - const imageCollection = "path to the folder yu want to upload"; + /** + * This example uploads an images folder in the cloud, and downloads it + */ + const images = "path to the images you want to upload"; const outputPath = "path to the folder where you want to save downloads"; - const imageCollectionName = "Test Moto Photos"; + const imagesName = "Test Upload Moto Photos"; dotenv.config(); - const projectId = process.env.IMJS_PROJECT_ID ?? ""; + const iTwinId = process.env.IMJS_PROJECT_ID ?? ""; const clientId = process.env.IMJS_CLIENT_ID ?? ""; const redirectUrl = process.env.IMJS_REDIRECT_URL ?? ""; const env = process.env.IMJS_ENV ?? ""; @@ -41,16 +43,15 @@ async function runRealityDataExample() { realityDataService.setDownloadHook(defaultProgressHook); console.log("Service initialized"); - // Upload CCImageCollection - console.log("Uploading CCImagesCollection to cloud"); - const id = await realityDataService.uploadRealityData(imageCollection, imageCollectionName, - RealityDataType.CC_IMAGE_COLLECTION, projectId); - console.log("CCImagesCollection uploaded successfully"); + // Upload images + console.log("Uploading images to cloud"); + const id = await realityDataService.uploadRealityData(images, imagesName, RealityDataType.CC_IMAGE_COLLECTION, iTwinId); + console.log("Images uploaded successfully"); - // Download CCImageCollection - console.log("Downloading CCImagesCollection"); - await realityDataService.downloadRealityData(id, outputPath, projectId); - console.log("CCImagesCollection downloaded successfully"); + // Download images + console.log("Downloading images"); + await realityDataService.downloadRealityData(id, outputPath, iTwinId); + console.log("Images downloaded successfully"); } runRealityDataExample(); \ No newline at end of file diff --git a/typescript/examples/code-samples/src/ContextCapture.ts b/typescript/examples/code-samples/src/Modeling.ts similarity index 83% rename from typescript/examples/code-samples/src/ContextCapture.ts rename to typescript/examples/code-samples/src/Modeling.ts index 32e4e3a3..4206f5ac 100644 --- a/typescript/examples/code-samples/src/ContextCapture.ts +++ b/typescript/examples/code-samples/src/Modeling.ts @@ -13,8 +13,11 @@ import { NodeCliAuthorizationClient } from "@itwin/node-cli-authorization"; export async function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -async function main() { - const ccImageCollection = "path to your image folder"; +async function runModelingExample() { + /** + * This example submits a Full Modeling job (Calibration + Reconstruction), and will download the reconstruction output as a 3mx file. + */ + const images = "path to your image folder"; const ccOrientations = "path to the folder where your ccorientation file is"; const outputPath = "path to the folder where you want to save outputs"; @@ -22,10 +25,10 @@ async function main() { const jobName = "Reality Modeling job SDK sample"; const workspaceName = "Reality Modeling test workspace"; - const ccImageCollectionName = "Reality Modeling test photos"; + const imagesName = "Reality Modeling test photos"; const ccOrientationsName = "Reality Modeling test ccorientations"; - const projectId = process.env.IMJS_PROJECT_ID ?? ""; + const iTwindId = process.env.IMJS_PROJECT_ID ?? ""; const clientId = process.env.IMJS_CLIENT_ID ?? ""; const redirectUrl = process.env.IMJS_REDIRECT_URL ?? ""; const env = process.env.IMJS_ENV ?? ""; @@ -60,7 +63,7 @@ async function main() { console.log("Service initialized"); try { - // Creating reference table and uploading ccimageCollection, ccOrientations if necessary (not yet on the cloud) + // Creating reference table and uploading images, ccOrientations if necessary (not yet on the cloud) const references = new ReferenceTableNode(); const referencesPath = path.join(outputPath, "test_references_typescript.txt"); if(fs.existsSync(referencesPath) && fs.lstatSync(referencesPath).isFile()) { @@ -68,18 +71,18 @@ async function main() { await references.load(referencesPath); } - // Upload CCImageCollection - if(!references.hasLocalPath(ccImageCollection)) { - console.log("No reference to CCimage Collections found, uploading local files to cloud"); - const id = await realityDataService.uploadRealityData(ccImageCollection, ccImageCollectionName, - RealityDataType.CC_IMAGE_COLLECTION, projectId); - references.addReference(ccImageCollection, id); + // Upload images + if(!references.hasLocalPath(images)) { + console.log("No reference to images found, uploading local files to cloud"); + const id = await realityDataService.uploadRealityData(images, imagesName, + RealityDataType.CC_IMAGE_COLLECTION, iTwindId); + references.addReference(images, id); } - // Upload Oriented photos (ccOrientations) + // Upload ccOrientations if(!references.hasLocalPath(ccOrientations)) { console.log("No reference to cc orientations found, uploading local files to cloud"); - const id = await realityDataService.uploadCCOrientations(ccOrientations, ccOrientationsName, projectId, references); + const id = await realityDataService.uploadCCOrientations(ccOrientations, ccOrientationsName, iTwindId, references); references.addReference(ccOrientations, id); } @@ -87,13 +90,12 @@ async function main() { console.log("Checked data upload"); // Create workspace - const workspaceId = await contextCaptureService.createWorkspace(workspaceName, projectId); + const workspaceId = await contextCaptureService.createWorkspace(workspaceName, iTwindId); const settings = new CCJobSettings(); - settings.inputs = [references.getCloudIdFromLocalPath(ccImageCollection), references.getCloudIdFromLocalPath(ccOrientations)]; + settings.inputs = [references.getCloudIdFromLocalPath(images), references.getCloudIdFromLocalPath(ccOrientations)]; settings.outputs.threeMX = "threeMX"; - settings.meshQuality = CCJobQuality.MEDIUM; - + settings.meshQuality = CCJobQuality.DRAFT; console.log("Settings created"); const jobId = await contextCaptureService.createJob(CCJobType.FULL, settings, jobName, workspaceId); @@ -129,7 +131,7 @@ async function main() { const properties = await contextCaptureService.getJobProperties(jobId); console.log("Downloading outputs"); const threeMXId = (properties.settings as CCJobSettings).outputs.threeMX; - realityDataService.downloadRealityData(threeMXId, outputPath, projectId); + realityDataService.downloadRealityData(threeMXId, outputPath, iTwindId); console.log("Successfully downloaded output"); } catch(error: any) { @@ -137,4 +139,4 @@ async function main() { } } -main(); \ No newline at end of file +runModelingExample(); \ No newline at end of file diff --git a/typescript/examples/code-samples/src/Objects2D.ts b/typescript/examples/code-samples/src/Objects2D.ts index ae870cef..e41f3588 100644 --- a/typescript/examples/code-samples/src/Objects2D.ts +++ b/typescript/examples/code-samples/src/Objects2D.ts @@ -9,16 +9,19 @@ import * as fs from "fs"; import * as dotenv from "dotenv"; import { JobState, RealityDataType } from "@itwin/reality-capture-common"; import { NodeCliAuthorizationClient } from "@itwin/node-cli-authorization"; -import { RealityDataTransferNode, ReferenceTableNode } from "@itwin/reality-data-transfer"; +import { RealityDataTransferNode, ReferenceTableNode, defaultProgressHook } from "@itwin/reality-data-transfer"; export async function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } async function runObjects2DExample() { - const imageCollection = "path to your image collection"; - const photoContextScene = "path to the folder where your context scene file is"; + /** + * This example submits an objects2d analysis job, and downloads an annotations context scene + */ + const imageCollection = "path to your images"; + const photoContextScene = "path to the folder where your context scene file is referenced"; const photoObjectDetector = "path to the folder where your detector is"; - const outputPath = "path to the folder where you want to save outputs"; + const outputPath = "path to the folder where you want to save the annotatations context scene"; dotenv.config(); @@ -27,7 +30,7 @@ async function runObjects2DExample() { const contextSceneName = "Test Moto Scene"; const detectorName = "Test O2D Photo Detector"; - const projectId = process.env.IMJS_PROJECT_ID ?? ""; + const iTwinId = process.env.IMJS_PROJECT_ID ?? ""; const clientId = process.env.IMJS_CLIENT_ID ?? ""; const redirectUrl = process.env.IMJS_REDIRECT_URL ?? ""; const env = process.env.IMJS_ENV ?? ""; @@ -48,6 +51,9 @@ async function runObjects2DExample() { else realityDataService = new RealityDataTransferNode(authorizationClient.getAccessToken.bind(authorizationClient), "qa-"); + realityDataService.setUploadHook(defaultProgressHook); + realityDataService.setDownloadHook(defaultProgressHook); + let realityDataAnalysisService; if(env === "prod") realityDataAnalysisService = new RealityDataAnalysisService(authorizationClient.getAccessToken.bind(authorizationClient)); @@ -57,7 +63,7 @@ async function runObjects2DExample() { realityDataAnalysisService = new RealityDataAnalysisService(authorizationClient.getAccessToken.bind(authorizationClient), "dev-"); console.log("Service initialized"); - // Creating reference table and uploading ccimageCollection, contextScene and detector if necessary (not yet on the cloud) + // Creating reference table and uploading images, contextScene and detector if necessary (not yet on the cloud) const references = new ReferenceTableNode(); const referencesPath = path.join(outputPath, "test_references_typescript.txt"); if(fs.existsSync(referencesPath) && fs.lstatSync(referencesPath).isFile()) { @@ -65,18 +71,18 @@ async function runObjects2DExample() { await references.load(referencesPath); } - // Upload CCImageCollection + // Upload images if(!references.hasLocalPath(imageCollection)) { - console.log("No reference to CCimage Collections found, uploading local files to cloud"); + console.log("No reference to images found, uploading local files to cloud"); const id = await realityDataService.uploadRealityData(imageCollection, imageCollectionName, - RealityDataType.CC_IMAGE_COLLECTION, projectId); + RealityDataType.CC_IMAGE_COLLECTION, iTwinId); references.addReference(imageCollection, id); } // Upload ContextScene if(!references.hasLocalPath(photoContextScene)) { console.log("No reference to ContextScene found, uploading local files to cloud"); - const id = await realityDataService.uploadContextScene(photoContextScene, contextSceneName, projectId, references); + const id = await realityDataService.uploadContextScene(photoContextScene, contextSceneName, iTwinId, references); references.addReference(photoContextScene, id); } @@ -84,7 +90,7 @@ async function runObjects2DExample() { if(!references.hasLocalPath(photoObjectDetector)) { console.log("No reference to detector found, uploading local files to cloud"); const id = await realityDataService.uploadRealityData(photoObjectDetector, detectorName, RealityDataType.CONTEXT_DETECTOR, - projectId); + iTwinId); references.addReference(photoObjectDetector, id); } @@ -97,7 +103,7 @@ async function runObjects2DExample() { settings.outputs.objects2D = "objects2D"; console.log("Settings created"); - const jobId = await realityDataAnalysisService.createJob(settings, jobName, projectId); + const jobId = await realityDataAnalysisService.createJob(settings, jobName, iTwinId); console.log("Job created"); await realityDataAnalysisService.submitJob(jobId); @@ -130,7 +136,7 @@ async function runObjects2DExample() { const properties = await realityDataAnalysisService.getJobProperties(jobId); console.log("Downloading outputs"); const objects2DId = (properties.settings as O2DJobSettings).outputs.objects2D; - realityDataService.downloadContextScene(objects2DId, outputPath, projectId, references); + realityDataService.downloadContextScene(objects2DId, outputPath, iTwinId, references); console.log("Successfully downloaded output"); } diff --git a/typescript/examples/code-samples/src/RealityConversion.ts b/typescript/examples/code-samples/src/RealityConversion.ts index 21f5b040..2db5ef24 100644 --- a/typescript/examples/code-samples/src/RealityConversion.ts +++ b/typescript/examples/code-samples/src/RealityConversion.ts @@ -13,16 +13,19 @@ import { NodeCliAuthorizationClient } from "@itwin/node-cli-authorization"; export async function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -async function main() { +async function runConversionexample() { + /** + * This example converts a laz file to opc format and downloads the opc file locally. + */ const lazPointCloud = "path to the laz you want to convert"; - const outputPath = "path to the folder where you want to save outputs"; + const outputPath = "path to the folder where you want to save the opc file"; dotenv.config(); const jobName = "RCS LAZ to OPC sample"; const lazName = "RCS LAZ Input"; - const projectId = process.env.IMJS_PROJECT_ID ?? ""; + const iTwinId = process.env.IMJS_PROJECT_ID ?? ""; const clientId = process.env.IMJS_CLIENT_ID ?? ""; const redirectUrl = process.env.IMJS_REDIRECT_URL ?? ""; const env = process.env.IMJS_ENV ?? ""; @@ -67,7 +70,7 @@ async function main() { // Upload LAZ if(!references.hasLocalPath(lazPointCloud)) { console.log("No reference to LAZ point cloud found, uploading local files to cloud"); - const id = await realityDataService.uploadRealityData(lazPointCloud, lazName, RealityDataType.LAZ, projectId); + const id = await realityDataService.uploadRealityData(lazPointCloud, lazName, RealityDataType.LAZ, iTwinId); references.addReference(lazPointCloud, id); } @@ -80,7 +83,7 @@ async function main() { console.log("Settings created"); - const jobId = await realityConversionService.createJob(settings, jobName, projectId); + const jobId = await realityConversionService.createJob(settings, jobName, iTwinId); console.log("Job created"); await realityConversionService.submitJob(jobId); @@ -114,7 +117,7 @@ async function main() { console.log("Downloading outputs"); const opc = properties.settings.outputs.opc as string[]; if(opc.length > 0) { - await realityDataService.downloadRealityData(opc[0], outputPath, projectId); + await realityDataService.downloadRealityData(opc[0], outputPath, iTwinId); console.log("Successfully downloaded output"); } } @@ -123,4 +126,4 @@ async function main() { } } -main(); \ No newline at end of file +runConversionexample(); \ No newline at end of file diff --git a/typescript/examples/code-samples/src/Segmentation2D.ts b/typescript/examples/code-samples/src/Segmentation2D.ts index 51ff2b92..3bc1f5ad 100644 --- a/typescript/examples/code-samples/src/Segmentation2D.ts +++ b/typescript/examples/code-samples/src/Segmentation2D.ts @@ -15,7 +15,10 @@ import { NodeCliAuthorizationClient } from "@itwin/node-cli-authorization"; export async function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } async function runSegmentation2DExample() { - const imageCollection = "path to your image folder"; + /** + * This example submits an segmentation2d analysis job, and downloads an annotations context scene + */ + const images = "path to your image folder"; const photosContextScene = "path to the folder where your context scene file is"; const photoSegmentationDetector = "path to the folder where your detector is"; const mesh = "path to the folder where your mesh is"; @@ -25,13 +28,13 @@ async function runSegmentation2DExample() { dotenv.config(); const jobName = "S2D job SDK sample"; - const imageCollectionName = "Test S2D Photos"; + const imagesName = "Test S2D Photos"; const photosSceneName = "Test S2D oriented photos"; const meshName = "Test S2D mesh"; const contextSceneName = "Test S2D Scene"; const detectorName = "Test S2D detector"; - const projectId = process.env.IMJS_PROJECT_ID ?? ""; + const iTwinId = process.env.IMJS_PROJECT_ID ?? ""; const clientId = process.env.IMJS_CLIENT_ID ?? ""; const redirectUrl = process.env.IMJS_REDIRECT_URL ?? ""; const env = process.env.IMJS_ENV ?? ""; @@ -74,17 +77,16 @@ async function runSegmentation2DExample() { } // Upload CCImageCollection - if(!references.hasLocalPath(imageCollection)) { + if(!references.hasLocalPath(images)) { console.log("No reference to CCimage Collections found, uploading local files to cloud"); - const id = await realityDataService.uploadRealityData(imageCollection, imageCollectionName, - RealityDataType.CC_IMAGE_COLLECTION, projectId); - references.addReference(imageCollection, id); + const id = await realityDataService.uploadRealityData(images, imagesName, RealityDataType.CC_IMAGE_COLLECTION, iTwinId); + references.addReference(images, id); } // Upload Oriented photos (contextScene) if(!references.hasLocalPath(photosContextScene)) { console.log("No reference to oriented photos ContextScene found, uploading local files to cloud"); - const id = await realityDataService.uploadContextScene(photosContextScene, photosSceneName, projectId, references); + const id = await realityDataService.uploadContextScene(photosContextScene, photosSceneName, iTwinId, references); references.addReference(photosContextScene, id); } @@ -92,22 +94,21 @@ async function runSegmentation2DExample() { if(!references.hasLocalPath(photoSegmentationDetector)) { console.log("No reference to detector found, uploading local files to cloud"); const id = await realityDataService.uploadRealityData(photoSegmentationDetector, detectorName, RealityDataType.CONTEXT_DETECTOR, - projectId); + iTwinId); references.addReference(photoSegmentationDetector, id); } // Upload Mesh if(!references.hasLocalPath(mesh)) { console.log("No reference to mesh found, uploading local files to cloud"); - const id = await realityDataService.uploadRealityData(mesh, meshName, RealityDataType.THREEMX, - projectId); + const id = await realityDataService.uploadRealityData(mesh, meshName, RealityDataType.THREEMX, iTwinId); references.addReference(mesh, id); } // Upload Mesh ContextScene if(!references.hasLocalPath(meshContextScene)) { console.log("No reference to mesh ContextScene found, uploading local files to cloud"); - const id = await realityDataService.uploadContextScene(meshContextScene, contextSceneName, projectId, references); + const id = await realityDataService.uploadContextScene(meshContextScene, contextSceneName, iTwinId, references); references.addReference(meshContextScene, id); } @@ -123,7 +124,7 @@ async function runSegmentation2DExample() { console.log("Settings created"); - const jobId = await realityDataAnalysisService.createJob(settings, jobName, projectId); + const jobId = await realityDataAnalysisService.createJob(settings, jobName, iTwinId); console.log("Job created"); await realityDataAnalysisService.submitJob(jobId); @@ -156,7 +157,7 @@ async function runSegmentation2DExample() { const properties = await realityDataAnalysisService.getJobProperties(jobId); console.log("Downloading outputs"); const lines3dId = (properties.settings as S2DJobSettings).outputs.lines3D; - realityDataService.downloadContextScene(lines3dId, outputPath, projectId, references); + realityDataService.downloadContextScene(lines3dId, outputPath, iTwinId, references); console.log("Successfully downloaded output"); } diff --git a/typescript/packages/reality-capture-analysis/LICENSE.md b/typescript/packages/reality-capture-analysis/LICENSE.md index 77dfb504..a76508ea 100644 --- a/typescript/packages/reality-capture-analysis/LICENSE.md +++ b/typescript/packages/reality-capture-analysis/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright © 2023 Bentley Systems, Incorporated. All rights reserved. +Copyright © 2024 Bentley Systems, Incorporated. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/typescript/packages/reality-capture-analysis/README.md b/typescript/packages/reality-capture-analysis/README.md index 81edcd2d..00155b46 100644 --- a/typescript/packages/reality-capture-analysis/README.md +++ b/typescript/packages/reality-capture-analysis/README.md @@ -55,4 +55,4 @@ Contains all the provided job properties, such as name, id, settings... ## Usage example -An example is available to show how to create jobs and get its results. See [Reality Analysis O2D example](./../../examples/code-samples/src/Objects2D.ts) and [Reality Analysis L3D example](./../../examples/code-samples/src/Lines3D.ts) \ No newline at end of file +An example is available to show how to create jobs and get its results. See [Reality Analysis O2D example](./../../examples/code-samples/src/Objects2D.ts) and [Reality Analysis S2D example](./../../examples/code-samples/src/Segmentation2D.ts) \ No newline at end of file diff --git a/typescript/packages/reality-capture-common/LICENSE.md b/typescript/packages/reality-capture-common/LICENSE.md index 77dfb504..a76508ea 100644 --- a/typescript/packages/reality-capture-common/LICENSE.md +++ b/typescript/packages/reality-capture-common/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright © 2023 Bentley Systems, Incorporated. All rights reserved. +Copyright © 2024 Bentley Systems, Incorporated. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/typescript/packages/reality-capture-conversion/LICENSE.md b/typescript/packages/reality-capture-conversion/LICENSE.md index 77dfb504..a76508ea 100644 --- a/typescript/packages/reality-capture-conversion/LICENSE.md +++ b/typescript/packages/reality-capture-conversion/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright © 2023 Bentley Systems, Incorporated. All rights reserved. +Copyright © 2024 Bentley Systems, Incorporated. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/typescript/packages/reality-capture-conversion/README.md b/typescript/packages/reality-capture-conversion/README.md index 23d35022..d4d19380 100644 --- a/typescript/packages/reality-capture-conversion/README.md +++ b/typescript/packages/reality-capture-conversion/README.md @@ -53,4 +53,4 @@ Contains all the provided job properties, such as name, id, settings... ## Usage example -An example is available to show how to create jobs and get its results. See [Reality Conversion O2D example](./../../examples/code-samples/src/RealityConversion.ts) \ No newline at end of file +An example is available to show how to create jobs and get its results. See [Reality Conversion example](./../../examples/code-samples/src/RealityConversion.ts) \ No newline at end of file diff --git a/typescript/packages/reality-capture-modeling/LICENSE.md b/typescript/packages/reality-capture-modeling/LICENSE.md index 77dfb504..a76508ea 100644 --- a/typescript/packages/reality-capture-modeling/LICENSE.md +++ b/typescript/packages/reality-capture-modeling/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright © 2023 Bentley Systems, Incorporated. All rights reserved. +Copyright © 2024 Bentley Systems, Incorporated. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/typescript/packages/reality-capture-modeling/README.md b/typescript/packages/reality-capture-modeling/README.md index 57c167be..03db5184 100644 --- a/typescript/packages/reality-capture-modeling/README.md +++ b/typescript/packages/reality-capture-modeling/README.md @@ -68,4 +68,4 @@ Describes a job : its inputs, outputs, and other parameters. ## Usage example -An example is available to show how to create jobs and get its results. See [Reality Conversion O2D example](./../../examples/code-samples/src/ContextCapture.ts) \ No newline at end of file +An example is available to show how to create jobs and get its results. See [Reality Modeling example](./../../examples/code-samples/src/ContextCapture.ts) \ No newline at end of file diff --git a/typescript/packages/reality-data-transfer/LICENSE.md b/typescript/packages/reality-data-transfer/LICENSE.md index 77dfb504..a76508ea 100644 --- a/typescript/packages/reality-data-transfer/LICENSE.md +++ b/typescript/packages/reality-data-transfer/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright © 2023 Bentley Systems, Incorporated. All rights reserved. +Copyright © 2024 Bentley Systems, Incorporated. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/typescript/packages/reality-data-transfer/README.md b/typescript/packages/reality-data-transfer/README.md index 185137b9..2fb3864f 100644 --- a/typescript/packages/reality-data-transfer/README.md +++ b/typescript/packages/reality-data-transfer/README.md @@ -43,3 +43,4 @@ Stores the local path and cloud id of each uploaded data. When uploading a new r ## Usage example +An example is available to show how to upload local data and download reality data. See [Reality Reality data example](./../../examples/code-samples/src/DataTransfer.ts)